【深度學(xué)習(xí)】靠OpenCV吃飯的圖像算法工程師在深度學(xué)習(xí)的沖擊下還有活路嗎?
其實(shí)標(biāo)題是知乎上看到的一個問題,看到討論很熱烈我就借用了。不知道提問這位有沒有了解卷積神經(jīng)網(wǎng)絡(luò)這個東西,早在二三十年之前就有手寫數(shù)字識別了,但是這技術(shù)也就是2012年開始火爆了的,所以你看到的當(dāng)下的熱門技術(shù)很多都是沉寂了幾年、十幾年甚至幾十年的。
當(dāng)下對傳統(tǒng)的cv技術(shù)有些沖擊,那是因?yàn)槟憧吹降氖沁@些崗位的工資很高,但是呢,很多公司還是在用傳統(tǒng)的技術(shù),至少傳統(tǒng)行業(yè)里面涉及圖像處理的很多還是使用的是傳統(tǒng)算法的技術(shù)。就是互聯(lián)網(wǎng)公司有團(tuán)隊在做這個,然后能給的工資很高,但是呢,傳統(tǒng)方法的這些崗位也沒降薪不是,所以應(yīng)該是心里的沖擊吧?
不過我回答的這個日子,dl(深度學(xué)習(xí)),cv(計算機(jī)視覺)也死的七七八八了,半道出家的很多,但是卷麻了,所以現(xiàn)在看是不是還不如你?
如果說圖像算法工程師這個崗位,其實(shí)不是單純掌握OpenCV就夠的,OpenCV只是一個工具,還有很多的東西需要我們學(xué)習(xí),圖像處理還有一個出名的庫就是Halcon,只是OpenCV相對比較出名而已。我也是半道出家做cv的,但是我是搭上了車之后轉(zhuǎn)自動駕駛了,這一路走來我發(fā)現(xiàn)OpenCV的重要性還是很大的,應(yīng)用還是很多的,所以我也在技術(shù)分享的時候還在推學(xué)習(xí)OpenCV。
OpenCV是應(yīng)用非常廣泛的開源視覺處理庫,在圖像處理、計算機(jī)視覺和自動駕駛中有著非常重要的作用。
廢話不多說,我就來講講OpenCV的使用和學(xué)習(xí)需要怎么做吧,大家覺得有道理的可以參考一下。
我理解的學(xué)習(xí)和使用的重點(diǎn)在四個方面:
第一點(diǎn):需要對OpenCV的版本要有一個清晰的認(rèn)識
OpenCV目前更新到了4.7.0版本,但是目前OpenCV3.x和OpenCV4.x都是比較常用的,但是3和4的版本差別比較大,所以經(jīng)常有同學(xué)抄代碼的時候編譯報錯,就像我昨天在做目標(biāo)跟蹤的時候,創(chuàng)建跟蹤器,在OpenCV3.2之前的版本里面使用的方法是Tracker.create,但是在之后的版本API就變了,對于不同的算法創(chuàng)建的函數(shù)還不一樣,例如KCF算法就是TrackerKCF_create這樣,所以我們在使用OpenCV的時候需要對OpenCV的版本有一個比較清晰的認(rèn)識。
第二點(diǎn):需要對OpenCV的源碼有一個基本的了解

要知道每個模塊是做啥的,這樣你才能知道怎么去調(diào)用這里面的算法。目前出版的OpenCV的圖書基本上只對core模塊、imgproc模塊和highgui模塊進(jìn)行講解,所以初學(xué)者很難找到一個系統(tǒng)的學(xué)習(xí)途徑。但是去年出版了一本圖書《學(xué)習(xí)OpenCV4:基于Python的算法實(shí)戰(zhàn)》這本書對OpenCV的所有模塊都進(jìn)行了講解,雖然里面的案例是以Python語言為主,但是在講解每個算法的API的時候是將C++和Python兩種語言都做了講解,所以函數(shù)調(diào)用層面應(yīng)該問題不大,這是國內(nèi)外第一本系統(tǒng)講解OpenCV所有模塊的書,評價銷量都很不錯。
第三點(diǎn):首先學(xué)習(xí)怎么去用
“學(xué)以致用”永遠(yuǎn)不是一句空話,對于公司來說,最重要的就是需要寫出代碼,解決實(shí)際問題,所以對于初學(xué)者來說,首先需要學(xué)習(xí)OpenCV包裝的函數(shù)怎么去用,能解決什么實(shí)際的問題。
對于初學(xué)者來說,最頭疼的問題就是環(huán)境搭建出錯和代碼運(yùn)行出錯,解決不了還極大的削減學(xué)習(xí)的信心,看書和博客經(jīng)常就是從入門到放棄,沒人指點(diǎn)真是很難受。
說到環(huán)境搭建的問題,還是要說一下《學(xué)習(xí)OpenCV4:基于Python的算法實(shí)戰(zhàn)》這本書,這本書將Windows、Linux上的C++和Python開發(fā)環(huán)境搭建講的清清楚楚,還有怎么通過源碼編譯的方式搭建環(huán)境都有清楚的講解,讓初學(xué)者不會被環(huán)境所卡。
還有就是這門課程也做了比較清晰的講解,課程地址:
https://edu.csdn.net/course/detail/38039
該課程的優(yōu)勢如下:
1、C++與Python雙語教學(xué)
Python語言是在計算機(jī)視覺中應(yīng)用最多的一種語言,在工作中,深度學(xué)習(xí)模型的訓(xùn)練基本上都是使用Python語言編寫的訓(xùn)練代碼。OpenCV在這個過程中用于圖像的預(yù)處理(例如圖像讀取、數(shù)據(jù)增強(qiáng))和后處理,還可以用于顯示處理的結(jié)果,功能強(qiáng)大,使用方便。
但是在功能的部署的時候,不管是部署在服務(wù)端還是PC端,開發(fā)語言基本上用的是C++,所以如何有效的使用OpenCV進(jìn)行模型或者功能的部署尤為重要。
C++語言應(yīng)用的好壞,在面試中可以看出一個面試者的工程實(shí)踐能力的強(qiáng)弱,兩種語言的開發(fā)掌握好了可以使工作如虎添翼。
2、全模塊講解
課程講師也是圖書《學(xué)習(xí)OpenCV4:基于Python的算法實(shí)戰(zhàn)》作者,課程不僅采用雙語教學(xué),更是對C++的每個模塊都做講解,我們知道,很多的書其實(shí)只講imgproc,如果你翻開一本書圖像的形態(tài)學(xué)運(yùn)算和圖像濾波都是作為獨(dú)立章節(jié)講解的,那么這本書基本上就可以確定是只是講解了imgproc模塊,但是其他的模塊在工作中也有很重要的作用。
3、講解細(xì)致
本課程會從環(huán)境搭建開始講解,環(huán)境搭建尤為重要。從我多年的授課經(jīng)驗(yàn)總結(jié)來看,如果只是給了代碼,很多的入門用戶環(huán)境問題處理不好的話,后面的學(xué)習(xí)很難進(jìn)行下去,甚至?xí)适W(xué)習(xí)的信心。
4、講義準(zhǔn)備充分
講義準(zhǔn)備的充分細(xì)致,標(biāo)識清楚明確,重點(diǎn)和疑難點(diǎn)突出。

第四點(diǎn):其次學(xué)習(xí)算法原理
這個就不用我多說了,因?yàn)槿绻闵蟻硐瓤兴惴ㄔ淼脑挘蟾怕蕰娜腴T到放棄,即使你啃下來了,不自己動手寫代碼,還是不知道怎么去用,不知道這些算法怎么解決實(shí)際的工程問題。所以建議大家先學(xué)會怎么去用,可以選擇上面的圖書對照著課程學(xué)習(xí),里面的案例講的非常的清晰,相信大家不會覺得學(xué)得沒有興趣的。
博主是《學(xué)習(xí)OpenCV4:基于Python的算法實(shí)戰(zhàn)》和《深度學(xué)習(xí)計算機(jī)視覺實(shí)戰(zhàn)》兩本圖書的作者,目前從事自動駕駛感知融合算法開發(fā),分享內(nèi)容包括深度學(xué)習(xí)、計算機(jī)視覺、OpenCV、自動駕駛、SLAM、C++/Python語言開發(fā)等方向的內(nèi)容。
往期精彩回顧
適合初學(xué)者入門人工智能的路線及資料下載 (圖文+視頻)機(jī)器學(xué)習(xí)入門系列下載 機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印 《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯
機(jī)器學(xué)習(xí)交流qq群955171419,加入微信群請掃碼
