
現在任何學習影像辨識的人好像都必須先熟知OpenCV的操作?一般人甚至以為如果不用OpenCV根本就開發不出商業等級的影像軟體?但是我的公司創業八年多以來,已經推出很多很棒的各式商用影像辨識軟體,包括:車牌、閱卷、瓦斯表、貨櫃碼辨識等等,都完全沒用過OpenCV!連開發時的測試實驗過程都沒用過!
其實比較專業的影像處理專家都知道,OpenCV只是一個用C++語言寫的,實作各種影像處理原理的範例程式集。真正可以完成影像處理與辨識應用的技術核心,還是影像處理的基本原理!所謂「學苟知本,六經皆我注腳」!我如果真的懂得所有原理,用任何程式語言都可以寫出類似的程式集。
我們公司開發影像辨識軟體八年多了,實作成功也行銷市場的商用軟體應該比那些建構OpenCV的教授還要多,我們逐步累積的函數程式也幾乎可以建構出一個VB版的OpenCV了!但我和我的RD始終不覺得把我們累積的函數資源定型化與模組化是個Good idea!我們不會把它們當作可以直接使用的磚塊!
很像武俠小說中說的「劍法」與「心法」概念!如OpenCV這種東西就是「劍法」,影像辨識的原理就是「心法」!面對影像問題時,為何必須這麼作?的原理與動機,才是能否迅速開發出有用軟體的關鍵!如果拘泥於以往為了不太一樣的目的設計出來的「劍法」,以為該劍法本身就具有神奇的功效?一定要套用?那劍法就不是資源,而是一個無謂的負擔了!
我和我的RD都知道OpenCV的任何函數都不是為了我們面對的問題設計的劍法,所以直覺上就不會想套用它們來處理眼前的問題。和其他影像研發團隊比較,我們開會討論的都是影像的特性,以及可以利用的影像原理與演算法設計,而不是應該套用甚麼已知的函數功能?或應該使用哪種機器學習的模式或資料集等等。對我們來說,那種討論是無意義的隔靴搔癢,解決不了問題的!
很神奇的是:即使是比較懂影像的專家,也都認為多用OpenCV這種函式庫可以減少重複開發的時間,所以專業開發者也應該多用OpenCV?我們卻完全反其道而行,始終如一的堅持重「心法」而不重視「劍法」的哲學,實際開發辨識軟體的速度反而比用很多OpenCV與ML技術的團隊更快好幾倍!何以致之?
對於開發新的影像軟體來說,OpenCV是希望用前人研發的成果資源省事省時間,ML則是希望用電腦的強大運算能力與累積的巨量資料,幫我們直接產生解決方案!但如果你沒有以理解問題本身與理解方法內涵為基礎,就很容易變成盲人騎瞎馬碰運氣找出路,不但浪費時間還可能掉入研發陷阱深淵難以自拔。
所以我們公司這些年來成功的實務研發經驗已經告訴大家:科學原理依舊是一切表象技術的基礎!即使在資訊領域,有那麼多酷炫的程式資源工具,大家還是都應該溯源理解它們出現與存在的目的,多掌握核心關鍵的「心法」,不要盲目崇拜表象的神奇「劍法」,才能更快有效的達到研發目標。
限會員,要發表迴響,請先登入






