網路城邦
上一篇 回創作列表 下一篇  字體:
每一次的車牌辨識都是環環相扣的旅程,別寄望黑盒子了!
2020/03/26 05:24:25瀏覽1561|回應0|推薦5

上面是兩個車牌辨識的流程圖,分別是依據機器學習與傳統影像辨識概念建立的程序,如果你看到這些車牌辨識流程圖就覺得複雜了,那我認真寫出我的程序時,你一定會覺得我肯定是瘋了!因為我的流程圖絕對會有很多條件判斷決定的分支子流程,甚至還有迴圈的!而且上面流程中完全沒提到車牌可能歪斜變形的幾何校正程序,但是這個部分當然極端重要!在我的辨識流程中佔了三分之一的比重!就拿下面這張圖的辨識為例吧:

除了很強的幾何處理能力,能鎖定這種歪斜變形車牌之外,大白天的,你怎麼會事先就預期到車牌目標會躲在這麼陰暗的角落呢?即使是用人眼要找車牌,第一時間也是會先找亮度對比較強的目標,你應該不會馬上就鎖定這個車牌的!如果用比較正常的邏輯去找明顯目標,二值化出來的圖大概會是這個樣子,隱隱然好像有字元在那邊,但是看不清楚。

那怎麼辦?你還是必須繼續走下去,嘗試找目標找車牌,直到確定真的找不到時,再回頭改變二值化的參數,那就是辨識流程的迴圈了!用通俗的邏輯來形容,就是回頭去找更暗更亮的目標,如果你找對了範圍,用PhotoShop軟體的簡易二值化功能就可以把目標凸顯出來了!

機器學習派喜歡用一個「邊緣偵測」的名詞就蓋括了所有找到目標的神奇演算法,其實邊緣偵測也一樣是用影像中亮度與顏色的變化程度來建立特徵資料,就是經由摘要(簡化)影像資訊來幫助後面程序作出辨識的決定,基本上還是沒有跳脫灰階二值化的概念,因為影像資訊就那麼多,他們並不能比傳統的影像辨識方法找到更多無中生有的資訊。但是要多大的變化才是有意義(可能是目標)的特徵呢?

我們要在亮區與暗區,從亮度變化幅度小到大的所有特徵,通通鉅細靡遺地都收集完備嗎?那就不是「簡化」資訊了,好像你要帶著所有家當,甚至平常都不用的防災設備去露營一樣!你有可能這樣做嗎?我們當然是選擇輕車簡從,背個被包帶個帳篷與簡單食物就上路了,這樣有九成的機率你就可以輕鬆露營了!

但是天有不測風雲,如果就是碰到基本款的特徵資訊,無法辨識到較為異常的目標呢?你一定要回頭調整特徵擷取的範圍參數再來一次的!我聽過對於機器學習樂觀派的人士說:用深度學習時,我可以把複雜的前處理(擷取特徵)的工作交給機器,它們會提供我必要的資訊,我只要專注在研究後段的辨識邏輯就好了!

太天真了!第一它們不可能提供最完整的特徵資訊,即使可以,也會變得處理速度很慢很沒效率,因為它們跟你一樣,一樣也無法事先知道可能的目標會有多大的變化?合理的方式一定也是提供最可能找到目標的區段特徵,讓你有九成的機率辨識成功。除非你相信這些模組有未卜先知的功能,比你還知道你要辨識的影像目標特徵會集中在哪個區段?如果有這種東西我就真的失業了!

但是對於實用系統來說,一成的失敗率絕對是太糟了!如果要達到辨識率99%,你就必須有回饋機制,必須回到特徵擷取的程序再來一次,而且你還要盡量提供「經驗值」,根據前次失敗的過程資訊判斷,告訴特徵擷取程序:「這個範圍的特徵我試過了找不到,建議你給我那個範圍的吧!」否則盲目搜尋一定會很浪費時間的!

這就是有回饋的迴圈機制了!如上面的車牌辨識案例,在我的辨識流程中也是第一回合找不到,或有答案,但是自我評估的信賴度看起來很不可靠?所以啟動第二回合才辨識成功的!如果沒有這種敗部復活的本事,我的車牌辨識軟體應該是很難賣的!

結論是:影像辨識絕對是環環相扣的複雜流程,如果你想作出高辨識率的軟體,上面流程圖中的每一個方塊你都無法簡單的交給任何外來的黑盒子!即使你用了很棒的邊緣偵測模組,也不會像開電視來看一樣簡單,你必須與它做很複雜的溝通,我相信你一定會很快決定自己根據需要寫出自己要的程式比較快!

很多人知道我的影像辨識軟體完全沒有外來模組之後都會很驚訝!就像聽到居然有人在自己的車庫中手工打造一輛車來開?一樣的不可思議?但這是事實!也不是我愛炫技,或是沒錢買模組,或低估別人的演算法。這是我認真從事實務開發的經驗帶來的必然結果

不這麼作,我就絕對無法在幾年內達到目前的高度!我的做法很獨特,但絕對不是閉關練功型的人,別人的演算法我都會隨時參考學習的!我的第一版車牌辨識也是模仿類似前面的流程概念製作出來的!但是如果我引用外來模組,就會很快被限制住,甚至困住!無法將我要的精準辨識邏輯繼續推進。

因為我這樣持續研發一直走得很順利,每個影像辨識專案都是一兩個月內辨識率就逼近百分百!但是看到(或聽到)周遭很多使用機器學習方式想作較複雜精準影像辨識的人,都做得非常卡,可說是舉步維艱,幾乎沒有人真的能順利達標!所以才會覺得,一心只想用某些演算模組「簡化」辨識流程的機器學習派支持者腦袋一定壞掉了!

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=132215958