鄉下老師
原文網址:http://blog.udn.com/yccsonar/165122923
列印日期:2025/07/12
你應該從工具開始學影像辨識?還是從原理開始?
2021/07/11 05:31:19


現在要變成一個對於影像辨識的工作,有生產力的軟體工程師或研發者(RD),有個隱藏版的大問題!那就是大家都不是以學會影像辨識的原理為目標,而是急著學會處理影像的「工具」?把工具軟體的課程學完就自認,也被認證是學成出師了?


雖然我自己教程式設計時也是著重實作,程式一定要能寫出來,看到執行結果才算學會。但是基礎程式設計要處理的問題都是一般人的常識程度,你需要知道的原理簡單到不證自明!沒上課之前你就都已經很清楚了!但影像處理或影像辨識顯然不是!如果要從實作中慢慢將原理學好,是可以的!


但是如果將「學會使用工具」變成課程的主體,那既然都有自排車了,學生當然就會將駕駛手排檔車的技術看扁了!一維條碼如何辨識的細節都還沒消化理解,就趕快上下一堂課,還很得意地說「我會辨識二維條碼」了?這種空心速成的影像辨識「專家」已經開始變成科技界RD的主體了!也難怪MLCNN等東西會被過度吹捧到進入「空靈」的境界?多數人使用這些技術時,根本不知道裡面發生了甚麼事?只要看到結果大致正確就欣喜莫名?這根本不是正常的科學態度!


我認為「學影像要從OpenCV開始」這個「共識」就是影像辨識科學開始生病的起點!OpenCV本身沒錯,絕對是個好東西,但是我們面對他的態度錯了!並不是去駕訓班學會開車拿到駕照就可以變成汽車修護技師甚至設計師的!你還是必須認真花好幾年讀完機械系或至少汽車修護科之後,才可能是個有能力當技師或RD的專業人士!能到B&Q買材料組裝家具或替自己家裡作些簡易修繕裝潢的人,距離真正的專業木匠或水電師傅距離還很遠的!


我自己開始用程式玩影像時OpenCV還不流行,等到它流行時,我又已經不需要靠它就能解決幾乎所有的影像問題了!所以我當然也很自然地從來都不使用它!我是作研發生意的,如果是我想賣的產品,我就必須做得比OpenCV內的範例更好!不然沒人會買,因為大家都可以看書自製嘛!如果不是我要賣的東西,OpenCV上寫得再多我也不需要去看。


這是30年前的科學家不會有的問題,那就是我應該先學「原理」?還是先學使用甚麼「軟體」或「程式庫」來做那件事?那個年代先好好上課讀書,搞清楚你要研究目標的科學與事實現象原理,是你唯一的選擇!因為那時使用工具軟體來「開發程式」?或「作研究」?是根本不存在的選項!我記得我讀博士的1990年代,類似的工具軟體,大概就只有MatLab吧?只是可以少寫一些矩陣運算程式而已,會過度倚賴他們的人也不多。


當時的科學家很尷尬的問題是:因為電腦科技開始起飛了,如果你已經是個觀念清楚非常好的科學家,但就是寫程式的功力不夠好,即使你讀到博士都會被時代拋在冷僻的角落!一堆對於科學原理半生不熟,但是很會寫各種新穎視窗或網路程式的年輕人反而都飛黃騰達,變成科技新貴了?


我就是那個尷尬時代被折磨出來的「野生」影像辨識專家,現在我開始理解到這不是我的不幸,反而是上天賜給我的福報!我充分發現從OpenCV開始學影像辨識的人都應該回學校好好將原理概念補修一下,但是曾經滄海難為水,除卻巫山不是雲,他們都已經是碩士甚至博士!再也回不去了!只能繼續往前找更好的「工具」,來支撐他們的生涯(或是尊嚴?),所以MLCNN等等更抽象的工具技術就是他們努力想攀住,讓自己繼續自我感覺良好的浮木了!


以前我不太懂他們為何就是很不願意使用直接觀察分析的方式解決問題?這對我來說是理所當然也不困難的事情,因為我看影像的事實細節故事都很透明,但是對於學OpenCV起步的人來說,他們是會開車啦!但是打開引擎蓋看到的多數東西都很陌生,用原理思考解決問題是他們很尷尬不願面對的場景,他們並沒有看到我看得很清晰的那些影像細節原理,我現在終於懂了!是不能也,非不為也!