影像辨識不必用C/C++,OpenCV與機器學習也非必要!
文章推薦指數: 80 %
近年更是一定要「用機器學習加上OpenCV做影像辨識」喊得震天價響!到處都有開課,學費還特別貴?好像影像辨識技術也像資料庫一樣,只要學會了某些程式 ...
Contents...
udn網路城邦
鄉下老師 (到舊版)
本名:張逸中,逸中軟體設計公司CEO,前台灣首府大學副教授。
FB:https://www.facebook.com/ycc853,Email:[email protected],Tel:(O)06-5710455,(M)0921816706,Line:ycclkk
文章
影像辨識不必用C/C++,OpenCV與機器學習也非必要!
2020/01/0307:03
瀏覽12,125
迴響0
推薦9
引用0
現在常常收到這種信!可以印證我一再講過的一句話:「影像辨識還是很不成熟的科技!」拿個對照組來說吧!資料庫的應用大家都會承認是一種很成熟的技術,好好上課或讀書自學,加上網路可以找到的資源,如果你還作不出客戶需要的軟體,那就很奇怪了?應該是自己太笨,退出江湖吧!
但是說到影像辨識就很微妙了!大家都知道這個科技現在很熱門,也不算是太新的科技,一定要「用C/C++做影像辨識」這種說法,在我還完全不懂影像辨識的三十年前就常聽到了!近年更是一定要「用機器學習加上OpenCV做影像辨識」喊得震天價響!到處都有開課,學費還特別貴?好像影像辨識技術也像資料庫一樣,只要學會了某些程式語言或函式庫的使用,就能順利就業研發了?但事實不然!
在我的觀點,目前影像辨識的教學資源與方向都是錯的!不然像我們這種專做影像辨識的公司應該會很多才對!因為目前很多大學研究所都開設影像辨識課了!號稱可以做影像辨識的機器學習與OpenCV課程、網站與資訊也到處都是!資訊電機領域的教授們都努力將影像辨識,至少影像處理列為自己的專長,這種風潮現象沒十年也有八年了!但市面上能自行開發影像辨識產品的公司仍是鳳毛麟角。
首先所謂用C/C++才能做影像辨識就是一個過時的觀念,此說的起因是三十年前,除了C語言之外的語言,如Fortran或Basic等等,多半沒有提供處理數位影像所需要的完整低階資料結構,加上影像處理很需要大量運算,C語言與作業系統溝通較為直接,跑得比較快,如此而已!
現在呢?電腦語言都進化了,電腦硬體效能也都變好了!其實任何程式語言都可以做影像辨識,效能也相差無幾!我為了證明這個觀念,曾經用HTML5實作過我早期的車牌辨識核心!就是要打臉只能用C/C++做影像辨識這種無謂的迷思!HTML5的車牌辨識所有程式邏輯完全沒問題,速度也沒特別慢!當然因為JavaScript語言究竟不是為實作演算法程式設計的,寫起來會比較繁瑣。
用JavaScript寫影像辨識程式,真的行欸!
我從做影像辨識研究之初就是使用VB.NET的!有次為了將辨識核心移至某個嵌入式系統,需要將我的VB版影像辨識程式翻譯成C++,我懶得做,就叫我的RD自學C++兩個月之後去實作!她邊做就邊嘀咕:「怎麼會有人笨到用C/C++做影像辨識程式呢?語法太繁瑣了,根本讓我沒法專心思考演算法邏輯了!」
所以本公司的影像辨識產品萬不得已,一定不會用C/C++的!不是不會用,而是真的不好用!執行效能與使用VB.NET完全一樣,但開發時間會增加至少一倍以上!最不利的因素是:因為C/C++語法的拘謹繁瑣,會一直讓我們分心於語法格式的書寫控制,對於需要隨時思考新演算法解決問題的研究過程干擾極大!C++我是不熟,但是C#我是很熟的,不僅上課有教,還出過書,有幾個專案因為要交付原始碼,對方要求用C#寫,我也OK的!
另一個極大的謬誤是,因為影像辨識過程很複雜多變,因此好心的學界前輩就建構了如OpenCV這種函式庫。
有點像Web程式其實很難寫,所以就出現了PHP與ASP這類的技術,將複雜的細節封裝起來,使得多數人都可以快速的完成Web應用程式的設計工作。
但是不好意思,費心製作OpenCV的專家學者其實沒幫到影像辨識學習者的忙!因為ASP等東西是幫忙你架橋渡河,或開車載你去上班,過了河或到了辦公室之後,才是你工作的開始!至於怎麼過河?或怎麼到辦公室的經過細節?與你的目的其實無關!那就交給ASP吧!我專心設計使用者介面與SQL邏輯就好了!
可是影像辨識從一開始的每個處理程序,每個參數都會與最後能否得到正確答案密切相關!從全彩如何變灰階?灰階如何二值化?黑白圖如何變輪廓圖?輪廓圖如何變成目標物件?都對你要辨識的目標成功與否有關!OpenCV與ASP設計的原始目的相似,是幫你「忽略細節」用的,而不是幫你「掌握細節」的!這有點像是我們要找到深山裡的某個鐘乳石洞當作觀光景點,我們的作法就是準備好登山裝備,一路登山涉水邊走邊看,找到最踏實有效的路徑來抵達目標。
OpenCV很像是你買的越野車,或租用的直升機,你可以在群山之間快速移動搜尋,但是永遠無法精確地找到那個洞!也無法準確的建立供後人快速抵達該岩洞觀光的最有效路徑。
所以你不會在我或我的RD的電腦中發現任何OpenCV之類的函式庫!因為我們真正需要的只是物理與數學原理,對於要處理的問題做精確的理解分析,然後用基礎的程式技術去實驗探索。
不騙各位!現在跟我買車牌辨識軟體,或找我們開發影像辨識專案的客戶中,很多公司裡都有學過C/C++影像辨識,也熟悉OpenCV的工程師,他們都曾信心滿滿想自行開發他們公司需要的辨識軟體。
但是都很快就陷入困境,不知如何繼續?或是勉強作出可以達到辨識目的的軟體,效能或辨識率卻低到無法接受,最後才來找我們的!我們完全不用C/C++,當然也不用OpenCV,但是最終都能做出他們想要的東西。
我不是說OpenCV不好哦!只是告訴大家,如果你希望作出來的是高效率的實用影像辨識軟體,使用那些函式庫不會直接得到很專業的結果!如果你拿這些產品去賣,客戶發現有無法辨識的例外,你也很難診斷原因做好售後服務,因為你的工程也多數是「外包」給OpenCV作的!你能叫寫OpenCV的教授出來幫你做客戶服務嗎?
OpenCV至少還是使用影像辨識的原理概念作出來的程式,也有原始碼可以修改的!機器學習呢?那就更等而下之,連思考原理的部分都簡化了!所以當然是更大的誤導!學越多,使用越多,你就距離完成有效實用辨識軟體的距離越遠!所以回到前面信件最關切的問題:如何有效學習實作影像辨識?
首先要確立的觀念是:影像辨識技術的核心是演算法的精確掌握!程式語言或既有的套裝方法技術真的很不重要!如果你的高中物理與數學成績不太好,如果你的幾何學或微積分概念不清楚,考試會被當,建議還是先回去學好這些東西再來玩影像辨識!
如果你這些東西都還OK,以目前的環境來說,我認為將OpenCV當作教材範例來深入學習,而不是將它簡化視為「工具」是個好的辦法!就是將每個OpenCV的函數當課本單元深入消化吸收,讓它們變成你不必翻閱拷貝都能直接寫出來的理論基礎與程式經驗。
至於機器學習呢?就不必浪費時間學太多了,知道怎麼回事就好,因為實際用處不大的!他們只是幫你猜猜大概答案的技術而已,作對做錯的實際原因你都不會知道的!
回覆
推薦引用
有誰引用
我要引用
引用網址
列印
全站分類:知識學習|
科學百科
自訂分類:教育學習
上一則:你想做最多事?還是賺最多錢?做法不一樣的!下一則:希望選出全民的總統,不是黨派的頭目,善哉斯言!
你可能會有興趣的文章:
挑戰自己的人終究會贏,挑戰他人的總是起起伏伏!
直指目標,不做無聊的事,你看起來就很聰明了!
這不是作弊,是最合理的推測!
是政治該為你服務?還是你必須為政治服務?
成功不必在我,買我的車牌辨識核心就好了!
一樣是做哽圖,過程竟然如此嚴謹?好像在寫論文哦!
限會員,要發表迴響,請先登入
加入好友
推薦部落格
訂閱關注
留言給他
鄉下老師
部落格推薦:88
等級:8
點閱人氣:5,652,860本日人氣:460
文章創作:3,268 相簿數:15
輸入關鍵字:
搜尋
最新發表
最新回應
最新推薦
熱門瀏覽
熱門回應
熱門推薦
我用VB寫我的商業辨識軟體,日子過得好得很!
影像檔與向量圖檔大不同!
挑戰自己的人終究會贏,挑戰他人的總是起起伏伏!
很像CSI推理探案,破碎的跡證還是可以得到完整解答!
直指目標,不做無聊的事,你看起來就很聰明了!
不必讓成績決定你的未來
舉例說明:影像辨識的技術核心應該是認知的過程
誤解了AI這個詞,讓大家都開始耍白癡了!
街景車牌辨識的理想與現實差距
我可以告訴你找到每一個車牌的完整故事,機器學習行嗎?
警用機車也可以裝車牌辨識系統了!
▲top
本部落格刊登之內容為作者個人自行提供上傳,不代表udn立場。
刊登網站廣告︱關於我們︱常見問題︱服務條款︱著作權聲明︱隱私權聲明︱客服
Poweredbyudn.com
粉絲團
udn部落格
延伸文章資訊
- 1影像辨識
影像辨識. --以Python為例. 1. 106.3.1 古佳怡. Page 2. 2. 流程. 影像輸入. 前置處理. 切割. 辨識 ... OpenCV資料夾所附的digits.png. ...
- 2使用OpenCV處理YOLOv4即時影像辨識
机器人; NVIDAI Jetson Nano深度學習應用-使用OpenCV處理YOLOv4即時影像辨識. NVIDAI Jetson Nano深度學習應用- ...
- 3Raspberry3使用WebCam+OpenCV進行人臉辨識 - Google Sites
Raspberry 3+Python3 + opencv-contrib-python 3.4.3.18 ... detectMultiScale(gray, scaleFactor=1.3, ...
- 4Python + OpenCV 輕鬆上手玩AI 影像辨識| 緯育TibaMe
這門課是學習影像辨識最快速的一門課,OpenCV是當今最被廣泛採用的影像處理程式庫,而Python是最火紅的程式語言,本課程將使用Python程式與OpenCV實作QR Code掃描器及 ...
- 5成為AI 科學家|動手玩OpenCV ,邁入影像辨識新視界 - TibaMe
... 接著逐漸帶到OpenCV 的基本操作、繪圖、色彩、濾波器、直方圖等概念,並深入影像處理目的與實作,讓你探索出OpenCV 的多種玩法,學會影像辨識、偵測、融合等技能。