
從博士論文研究地形辨識演算法時我就有一個深刻的體會:人眼與人腦的宏觀識別能力真的很神奇!數學上要找到山脈的軸線就是找區域高點(Local High),但是地形資料有數位誤差,如果堅持必須是資料的高點才是山頂軸線的成員,那找到的山脈軸線就一定會斷斷續續!因為就是有些山頂就是會剛好相鄰的兩點一樣高的!要讓辨識軟體「看到」人能理解的連續山脈是很不容易的!
用OCR技術做車牌辨識時也有很類似的問題,碰到影像模糊的時候,我們還是會想用二值化的技術去切割字元,因為OCR的計算量少效率高嘛!一旦使用CNN的矩陣卷積(Convolution)的計算方式呢?就會開始陷入計算量爆炸的不歸路了!研發過程會變得超級緩慢!需要的資料與電腦成本也會狂飆!
但是OCR面對模糊影像時就是會有如上的字元破碎或沾連的問題!之前我談過很多次如何切割沾連字元的技術,但是字元破碎的機率一樣很高,如果沒有穩定有效的對策,OCR也是一樣走不通的!也就是如上的碎成五顏六色碎片的K與G,我的演算法必須跟人的宏觀視覺一樣,把它們理解為完整的字!
要做到這件事首先必須得到一個字應該多大?的合理假設值!我們當然不會事先知道一個隨機影像中的車牌字是多大?但是以機率來看,如果車牌有六七個字,我們的二值化門檻也不離譜的話,應該有四五個字是可以直接被正確辨識的!利用這幾個字做個簡單的統計,就會得知車牌字元的合理寬高了!
有了一個字「應該」是多大的假設值,就可以回頭檢視每個被擷取到的目標是不是正常合理了!譬如破碎的G字初步辨識時只能抓到紅色的那一塊較大碎片,與合理高度比較明顯太矮了,那就要修正它的高度,將破碎的綠與藍色碎片也納入G字的範圍,再做一次字模比對就會得到正確的G答案了!
那個K字狀況也很類似,如果直接辨識較大的紅色碎片,答案應該會是A而不是K!但是當我們推測出字元的寬高之後,我們會發現那塊藍色的碎片也在合理字元範圍之內,納入它為字元的一部份之後再比對字模,這個字就會比較像K而不是A了!
所以任何看似聰明神奇的辨識能力都不是來自僥倖運氣好!都是很多精緻且合理的科學計算推理的結果!如果你相信如此精密複雜的推理過程,可以不必傷腦筋,用大量資料經過深度學習的訓練過程就學會?我只能說你病了!還病得不輕!目前的深度學習技術距離這種智慧還非常遙遠!
相對的!如果你能以專家系統的方式角度切入研究這類影像辨識問題的對策,你一定可以很有效率的快速且精準的解決問題!不但不需要大量資料的耗時訓練成本,產出的軟體還非常快速有效又省電!在這個議題上,甚麼才是較好的AI技術?絕對不可能是深度學習的!不要再傻傻當被騙的肥羊了!你可以不必用GPU的!省點錢給辛苦工作的人加菜吃好一點比較實惠啦!

限會員,要發表迴響,請先登入




