本科生學opencv
A. 工業機器視覺學習需要多久
3個月-5年左右,學得快的3個月就能學好,學得慢的需要好幾年。
1、本科及以上學歷,有3-5年的機器視覺工作背景或智能相機開發經驗以及項目經驗
2、熟練掌握C/C++/Python語言,有較強的演算法分析和實現能力
3、熟悉工業相機、鏡頭、光源及採集卡的選型4、有OpenCV演算法庫和常用的數字圖像處理演算法項目經驗優佳
5、有OCR檢測軟體開發經驗或產品檢測軟體開發經驗優先。
B. 為什麼說光學工程是勸退專業
在很多院校,單從招生來講,確實光學工程規模不大,熱門程度不如電子和計算機。但也要看到,能開設光學工程的科研院所,實力不會差。從其專業來看,光學工程內容很廣,與機械、電子、通信、精密儀器、醫學等都存在緊密聯系。舉個例子,國內幾個代表性研究所都以光學機械簡稱光機所來命名,當然這是比較傳統的了。在清華和天津大學都在精密儀器系,而浙大和華科則專業演變比較顯著。不管叫什麼名字,現代科技的專業與技術交叉融合非常厲害,從這點來講不必太計較具體名稱。從市場與就業角度來講,有人認為光學工程只能在低端就業,這是嚴重的錯誤並容易誤導他人。
接下來,講講計算機和電方面的,計算機方面,主要是圖像處理,其中有演算法也有結合硬體的,像fpga,dsp,gpu。不過不讀博不建議搞演算法,研究生真正學東西的也就一年,搞演算法干不過計算機專業的,還是配合點硬體混口飯吃吧。而圖像處理所招崗位也都要求會深度學習和機器學習,去做機器視覺系統的話則會要求C++、opencv、電路、運動控制板卡,典型能者多勞卻不多得。
C. 演算法工程師應該學哪些
一、演算法工程師簡介
(通常是月薪15k以上,年薪18萬以上,只是一個概數,具體薪資可以到招聘網站如拉鉤,獵聘網上看看)
演算法工程師目前是一個高端也是相對緊缺的職位;
演算法工程師包括
音/視頻演算法工程師(通常統稱為語音/視頻/圖形開發工程師)、圖像處理演算法工程師、計算機視覺演算法工程師、通信基帶演算法工程師、信號演算法工程師、射頻/通信演算法工程師、自然語言演算法工程師、數據挖掘演算法工程師、搜索演算法工程師、控制演算法工程師(雲台演算法工程師,飛控演算法工程師,機器人控制演算法)、導航演算法工程師(
@之介
感謝補充)、其他【其他一切需要復雜演算法的行業】
專業要求:計算機、電子、通信、數學等相關專業;
學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;
語言要求:英語要求是熟練,基本上能閱讀國外專業書刊,做這一行經常要讀論文;
必須掌握計算機相關知識,熟練使用模擬工具MATLAB等,必須會一門編程語言。
演算法工程師的技能樹(不同方向差異較大,此處僅供參考)
1 機器學習
2 大數據處理:熟悉至少一個分布式計算框架Hadoop/Spark/Storm/ map-rece/MPI
3 數據挖掘
4 扎實的數學功底
5 至少熟悉C/C++或者Java,熟悉至少一門編程語言例如java/python/R
加分項:具有較為豐富的項目實踐經驗(不是水論文的哪種)
二、演算法工程師大致分類與技術要求
(一)圖像演算法/計算機視覺工程師類
包括
圖像演算法工程師,圖像處理工程師,音/視頻處理演算法工程師,計算機視覺工程師
要求
l
專業:計算機、數學、統計學相關專業;
l
技術領域:機器學習,模式識別
l
技術要求:
(1) 精通DirectX HLSL和OpenGL GLSL等shader語言,熟悉常見圖像處理演算法GPU實現及優化;
(2) 語言:精通C/C++;
(3) 工具:Matlab數學軟體,CUDA運算平台,VTK圖像圖形開源軟體【醫學領域:ITK,醫學圖像處理軟體包】
(4) 熟悉OpenCV/OpenGL/Caffe等常用開源庫;
(5) 有人臉識別,行人檢測,視頻分析,三維建模,動態跟蹤,車識別,目標檢測跟蹤識別經歷的人優先考慮;
(6) 熟悉基於GPU的演算法設計與優化和並行優化經驗者優先;
(7) 【音/視頻領域】熟悉H.264等視頻編解碼標准和FFMPEG,熟悉rtmp等流媒體傳輸協議,熟悉視頻和音頻解碼演算法,研究各種多媒體文件格式,GPU加速;
應用領域:
(1) 互聯網:如美顏app
(2) 醫學領域:如臨床醫學圖像
(3) 汽車領域
(4) 人工智慧
相關術語:
(1) OCR:OCR (Optical Character Recognition,光學字元識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上列印的字元,通過檢測暗、亮的模式確定其形狀,然後用字元識別方法將形狀翻譯成計算機文字的過程
(2) Matlab:商業數學軟體;
(3) CUDA: (Compute Unified Device Architecture),是顯卡廠商NVIDIA推出的運算平台(由ISA和GPU構成)。 CUDA™是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決復雜的計算問題
(4) OpenCL: OpenCL是一個為異構平台編寫程序的框架,此異構平台可由CPU,GPU或其他類型的處理器組成。
(5) OpenCV:開源計算機視覺庫;OpenGL:開源圖形庫;Caffe:是一個清晰,可讀性高,快速的深度學習框架。
(6) CNN:(深度學習)卷積神經網路(Convolutional Neural Network)CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。
(7) 開源庫:指的是計算機行業中對所有人開發的代碼庫,所有人均可以使用並改進代碼演算法。
(二)機器學習工程師
包括
機器學習工程師
要求
l
專業:計算機、數學、統計學相關專業;
l
技術領域:人工智慧,機器學習
l
技術要求:
(1) 熟悉Hadoop/Hive以及Map-Rece計算模式,熟悉Spark、Shark等尤佳;
(2) 大數據挖掘;
(3) 高性能、高並發的機器學習、數據挖掘方法及架構的研發;
應用領域:
(1)人工智慧,比如各類模擬、擬人應用,如機器人
(2)醫療用於各類擬合預測
(3)金融高頻交易
(4)互聯網數據挖掘、關聯推薦
(5)無人汽車,無人機
相關術語:
(1) Map-Rece:MapRece是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Rece(歸約)",是它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。
(三)自然語言處理工程師
包括
自然語言處理工程師
要求
l
專業:計算機相關專業;
l
技術領域:文本資料庫
l
技術要求:
(1) 熟悉中文分詞標注、文本分類、語言模型、實體識別、知識圖譜抽取和推理、問答系統設計、深度問答等NLP 相關演算法;
(2) 應用NLP、機器學習等技術解決海量UGC的文本相關性;
(3) 分詞、詞性分析、實體識別、新詞發現、語義關聯等NLP基礎性研究與開發;
(4) 人工智慧,分布式處理Hadoop;
(5) 數據結構和演算法;
應用領域:
口語輸入、書面語輸入
、語言分析和理解、語言生成、口語輸出技術、話語分析與對話、文獻自動處理、多語問題的計算機處理、多模態的計算機處理、信息傳輸與信息存儲 、自然語言處理中的數學方法、語言資源、自然語言處理系統的評測。
相關術語:
(2) NLP:人工智慧的自然語言處理,NLP (Natural Language Processing) 是人工智慧(AI)的一個子領域。NLP涉及領域很多,最令我感興趣的是「中文自動分詞」(Chinese word segmentation):結婚的和尚未結婚的【計算機中卻有可能理解為結婚的「和尚「】
(四)射頻/通信/信號演算法工程師類
包括
3G/4G無線通信演算法工程師, 通信基帶演算法工程師,DSP開發工程師(數字信號處理),射頻通信工程師,信號演算法工程師
要求
l
專業:計算機、通信相關專業;
l
技術領域:2G、3G、4G,BlueTooth(藍牙),WLAN,無線移動通信, 網路通信基帶信號處理
l
技術要求:
(1) 了解2G,3G,4G,BlueTooth,WLAN等無線通信相關知識,熟悉現有的通信系統和標准協議,熟悉常用的無線測試設備;
(2) 信號處理技術,通信演算法;
(3) 熟悉同步、均衡、信道解碼等演算法的基本原理;
(4) 【射頻部分】熟悉射頻前端晶元,扎實的射頻微波理論和測試經驗,熟練使用射頻電路模擬工具(如ADS或MW或Ansoft);熟練使用cadence、altium designer PCB電路設計軟體;
(5) 有扎實的數學基礎,如復變函數、隨機過程、數值計算、矩陣論、離散數學
應用領域:
通信
VR【用於快速傳輸視頻圖像,例如樂客靈境VR公司招募的通信工程師(數據編碼、流數據)】
物聯網,車聯網
導航,軍事,衛星,雷達
相關術語:
(1) 基帶信號:指的是沒有經過調制(進行頻譜搬移和變換)的原始電信號。
(2) 基帶通信(又稱基帶傳輸):指傳輸基帶信號。進行基帶傳輸的系統稱為基帶傳輸系統。傳輸介質的整個信道被一個基帶信號佔用.基帶傳輸不需要數據機,設備化費小,具有速率高和誤碼率低等優點,.適合短距離的數據傳輸,傳輸距離在100米內,在音頻市話、計算機網路通信中被廣泛採用。如從計算機到監視器、列印機等外設的信號就是基帶傳輸的。大多數的區域網使用基帶傳輸,如乙太網、令牌環網。
(3) 射頻:射頻(RF)是Radio Frequency的縮寫,表示可以輻射到空間的電磁頻率(電磁波),頻率范圍從300KHz~300GHz之間(因為其較高的頻率使其具有遠距離傳輸能力)。射頻簡稱RF射頻就是射頻電流,它是一種高頻交流變化電磁波的簡稱。每秒變化小於1000次的交流電稱為低頻電流,大於10000次的稱為高頻電流,而射頻就是這樣一種高頻電流。高頻(大於10K);射頻(300K-300G)是高頻的較高頻段;微波頻段(300M-300G)又是射頻的較高頻段。【有線電視就是用射頻傳輸方式】
(4) DSP:數字信號處理,也指數字信號處理晶元
(五)數據挖掘演算法工程師類
包括
推薦演算法工程師,數據挖掘演算法工程師
要求
l
專業:計算機、通信、應用數學、金融數學、模式識別、人工智慧;
l
技術領域:機器學習,數據挖掘
l
技術要求:
(1) 熟悉常用機器學習和數據挖掘演算法,包括但不限於決策樹、Kmeans、SVM、線性回歸、邏輯回歸以及神經網路等演算法;
(2) 熟練使用SQL、Matlab、Python等工具優先;
(3) 對Hadoop、Spark、Storm等大規模數據存儲與運算平台有實踐經驗【均為分布式計算框架】
(4) 數學基礎要好,如高數,統計學,數據結構
l
加分項:數據挖掘建模大賽;
應用領域
(1) 個性化推薦
(2) 廣告投放
(3) 大數據分析
相關術語
Map-Rece:MapRece是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Rece(歸約)",是它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。
(六)搜索演算法工程師
要求
l
技術領域:自然語言
l
技術要求:
(1) 數據結構,海量數據處理、高性能計算、大規模分布式系統開發
(2) hadoop、lucene
(3) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗
(4) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗;
(5) 精通倒排索引、全文檢索、分詞、排序等相關技術;
(6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架;
(7) 優秀的資料庫設計和優化能力,精通MySQL資料庫應用 ;
(8) 了解推薦引擎和數據挖掘和機器學習的理論知識,有大型搜索應用的開發經驗者優先。
(七)控制演算法工程師類
包括了雲台控制演算法,飛控控制演算法,機器人控制演算法
要求
l
專業:計算機,電子信息工程,航天航空,自動化
l
技術要求:
(1) 精通自動控制原理(如PID)、現代控制理論,精通組合導航原理,姿態融合演算法,電機驅動,電機驅動
(2) 卡爾曼濾波,熟悉狀態空間分析法對控制系統進行數學模型建模、分析調試;
l
加分項:有電子設計大賽,機器人比賽,robocon等比賽經驗,有硬體設計的基礎;
應用領域
(1)醫療/工業機械設備
(2)工業機器人
(3)機器人
(4)無人機飛控、雲台控制等
(八)導航演算法工程師
要求
l 專業:計算機,電子信息工程,航天航空,自動化
l 技術要求(以公司職位JD為例)
公司一(1)精通慣性導航、激光導航、雷達導航等工作原理;
(2)精通組合導航演算法設計、精通卡爾曼濾波演算法、精通路徑規劃演算法;
(3)具備導航方案設計和實現的工程經驗;
(4)熟悉C/C++語言、熟悉至少一種嵌入式系統開發、熟悉Matlab工具;
公司二(1)熟悉基於視覺信息的SLAM、定位、導航演算法,有1年以上相關的科研或項目經歷;
(2)熟悉慣性導航演算法,熟悉IMU與視覺信息的融合;
應用領域
無人機、機器人等。
D. 入行機器視覺,視覺技術到底難不難學
入行機器視覺並不難,但是想學好機器視覺技術需要掌握以下幾方面的知識和技能:
1、了解基本概念和原理:首先需要了解機器視覺的基本概念和原理:包括圖像處理、計算機視覺、機器學習等相關領域的基本知識。
2、學習圖像處理基礎:學習圖像處理的基礎知識,包括圖像變換、濾波、增強、恢復等技術,以及圖像分割、邊緣檢測、特徵提取等圖像分析方法。
3、掌握技術視覺演算法:學習並掌握機器視覺演算法,包括目標檢測、識別、跟蹤等演算法、以及深度學習演算法在機器視覺中的應用。
6、關注最新技術動態:關注機器視覺領域最新技術動態和發展趨勢,可以通過參加學術會議、閱讀相關文獻,關注行業動態等方式來跟進最新技術進展。
E. 學習了哪些知識,計算機視覺才算入門
計算機視覺是一個很大的范疇的總和,有兩種學習方式,一種是閱讀基礎書,搞懂它的每一部分;另一種是找一個問題,看文獻,編程實現,不斷往深走。這兩種學習方式是互補的,如果你看了好幾年書還不能上手解決問題,或者只會解決某些很特殊的問題,對其他問題束手無策都不算成功。因此你需要把看書掌握一般知識和編程實驗解決具體問題齊頭並進。下面說你要干什麼:
下載安裝OpenCV2
OpenCV是一個非常強大的計算機視覺庫,包括了圖像處理、計算機視覺、模式識別、多視圖幾何的許多基本演算法,有c++和Python兩種介面。學習的材料首先是安裝目錄下doc文件夾里的幫助文檔,提供所有函數的用法,任何時候對任何函數有疑問請查閱幫助文檔,安裝目錄下還提供一大堆寫好的演示程序供參考;《OpenCV_2 Computer Vision Application Programming Cookbook》是一本比較基礎的介紹材料,它的缺點是沒有介紹分類器(模式識別)方面的函數怎麼用。
雖然網上還有其他很多流行的庫,比如處理特徵點的VLfeat,處理點雲的PCL,處理GPU運算的CUDA,處理機器人問題的ROS和MRPT,但是這些都是你在解決具體問題時才會考慮去用的東西,如果你想快速讀取視頻、做個屏幕交互程序、使用流行的分類器、提取特徵點、對圖像做處理、進行雙目重建,OpenCV都提供相應函數,因此在你不知道該把餘生用來干什麼的時候,先裝OpenCV學習。
讀綜述
Computer Vision: Algorithms and Application。這本書用1000頁篇幅圖文並茂地瀏覽了計算機視覺這門學科的諸多大方向,如果你不知道計算機視覺是一門搞什麼的學科,這本書是你絕佳的選擇。它的優點是涉獵了大量文獻,缺點是缺乏細節,因此很顯然只讀這本書你根本沒法上手工作,因為它講的實在是太粗糙了。如果你對其中的某一部分感興趣,就請去讀相關文獻,繼續往下走,這就是這本書的意義。有中文版,但是翻譯的不好,也不建議你細細去讀,看看裡面的圖片即可。
Computer Vision: Models, Learning, and Inference:這本書是我認為研究生和高年級本科生入門計算機視覺最好的教材。它內容豐富,難度適中,推導翔實,語言流暢,強烈推薦你花2個月時間把這本書讀完。
多視圖幾何
Multiple View Geometry in Computer Vision:這本書是多視圖幾何的聖經,意思就是說想搞三維重建或者圖像測量之類的項目,這本書是必讀的。它需要你有線性代數的基本知識,會SVD分解即可。第一版有中文版,翻譯的非常好,但是已經絕版了,可以上淘寶高價買一本,第二版添加的內容很少,在網上可以下載到。
模式識別
模式識別核心就是訓練一個函數來擬合手頭的數據,如果數據的標簽是離散的,稱為分類問題,如數據的標簽是連續的,稱為回歸問題;分類又分有監督分類和無監督分類,有監督分類器有神經網路、支持向量機、AdaBoost、隨機場、樹模型等等。當你拿到一大堆數據,需要從裡面找關系的時候,一般都需要使用模式識別演算法來訓練一個函數/分類器/模型,因此模式識別是機器學習的核心。
《模式分類(第二版)》:這是一本適合普通讀者閱讀的教材,介紹了模式識別中經典的分類器,講解細致,語言生動,難度適中,每一個演算法都有偽代碼。
The Elements of Statistical Learning:這本書使用嚴謹的數學工具分析模式識別演算法,它比較難,但是非常深刻。每拿到一個模型它都會分析這個模型在數學上是如何構造的,並且推導模型的分類錯誤率。分析和推導是這本書的精髓。
Pattern Recognition and Machine Learning:這是一本從貝葉斯學派的角度分析模式識別模型的書,它使用的工具主要是概率論,比較難,非常深刻,內容非常豐富。
雖然這兩本書很難,但是它們用到的數學知識不過是基本的概率論和線性代數,只是用的比較活,計算機視覺這個學科需要的數學知識也是這個水平。
圖形學
圖形學教材首先推薦《計算機圖形學與幾何造型導論》,這本書用流暢的語言介紹了圖形學的基礎知識,選材有趣,推導簡潔但是絕不跳步走,保證你能看懂而且不會看煩。
光線追蹤器我看過一本薄的《Realistic Ray Tracing》和一本厚的《Ray Tracing from the Ground Up》,兩本書都有代碼。後一本內容極其豐富,有中文版,翻譯尚可。後一本唯一的缺點就是講不清楚BRDF,但這恰恰是前一本的亮點。
還有一些比較偏的書,比如偏微分方程在圖像處理中的應用、細分、壓縮感知、馬爾科夫隨機場、超解析度分析,概率機器人、多尺度幾何分析,這些領域都有各自的名著,你在某個領域深挖的時候,類似這樣的書可能會出現在參考文獻中,那時再看不遲。
讀文獻
寫到書里的知識基本上都有些過時,你得通過看文獻掌握各個領域最新的發展動態。計算機視覺的頂級期刊有兩個PAMI和IJCV,頂級會議有ICCV和CVPR,在科學網—[轉載]計算機視覺方向的一些頂級會議和期刊有更加詳細的介紹。
F. 本科畢業設計多少代碼量比較合適matlab400行左右夠嗎
本科畢設的話這個工作量差不多了,估計是你完成的太早了,做再多老師也會說不內行的……就是為了讓你繼容續前進!
你可以做做單純Hough變換、直線檢測、圓檢測等模塊。標准C的話可以看看Opencv的Hough部分,不調用庫函數(除了文件讀取)編寫也不難!