網路城邦
上一篇 回創作列表 下一篇  字體:
車牌反光怎麼辦?看我怎麼用物理解決影像辨識的問題
2020/10/08 05:45:32瀏覽2379|回應0|推薦8

像上面這種反光車牌這幾年來一直是我心頭之痛!即使我還是找得出夠多的正常字元目標組成車牌,但是明明應該最黑的區塊因為油漆光滑表面的反光,影像中就是無可置疑的「亮區」,怎麼做二值化都無法被認定是字元筆畫的一部份!所以上圖的9就只能被辨識成0了!

這就是影像辨識軟體,也就是所謂的AI,與真實的人類視覺能力的一個具體差距了!我認為AI的研究就應該聚焦於這種問題上!各位想一想,為什麼即使那個9字有反光,我們一般人,包括幼稚園的小朋友,都知道那還是個9字,但影像辨識軟體就是好難認出來?真的是「見光死」嗎?

人的視覺辨識邏輯很複雜,為何我們可以輕易判斷反光的9還是9?我可能無法完全講得清楚。但是只要能解析模擬一部份可以作出正確判斷的關鍵過程,我的辨識軟體就可以做出跟人很接近的正確判斷了!目前我的最新演算法,上面這種影像是可以正確辨識的,如下圖:

關鍵就在那些強反光的部分被我用影像處理塗黑了!所以二值化的9字雖然還是不太完整,但已經可以勉強被辨識出來是個9而不是0了!重點是我怎麼知道哪些特別白的點應該被直接塗黑呢?其實看看原來的車牌影像色階分布圖就知道了!

一個完全不懂影像辨識的人看到那個反光區塊時,腦子裡的直覺就是它太「不正常」了!應該不是車牌背景的「白色」。加上我們認知到只有光滑油漆字的表面才會反射強光,所以就在腦中作了「影像處理」,擅自把那些強烈白光直接當成黑漆,所以很快就認出那個9字了!

我作的軟體辨識過程就完全跟一般人的想法一樣,只是解析建構了我們想法中的數學與數位化資料過程。如上圖,一般的車牌色階分布圖都差不多是這樣,最左邊最黑的峰值代表字元正常的黑漆,較亮較寬的峰值代表車牌背景的「白色」,比這個峰值區域還要亮的零星畫素呢?應該就是不正常的反光了!

所以我只是找到合理的車牌背景峰值範圍,把明顯高於此峰值的畫素塗黑而已!車牌就變成這個樣子,以此灰階圖做二值化就會看出正確車號了!

這就是我一再強調:影像辨識是個物理問題的概念!掌握到影像的物理因素,以及你想辨識的目標,你就可以準確設計出達到辨識目的程序,保證作出的演算法又快又準!數學與程式只是一個解析操作事實現象與數位資訊的過程而已!如果你想輕率忽略物理事實現象,以為直接用複雜的數學與程式模組就能得到正確答案?恭喜你!你就是現在當紅的典型機器學習派的優秀門生了!

但是我們作影像辨識是不會這麼笨的!對於機器學習崇尚的機率統計來說,像上面這種特殊例外現象是不被重視,不會針對性處理的!所以如果這種案例被放到題庫之中作「學習」,應該就是機器學習的解法中永遠都會錯的死角!統計學可以得到正確答對最高比例的解法,但我們要的好商品是可以盡量答對「所有問題」的軟體!

對我們作實務研發的人來說,任何例外都要盡量設法解決,也就是「一個都不能少」!例外處理的程序還不能影響到整體辨識的穩定性!簡單說,如果一般人都看得出來,我們的軟體就一定要能辨識!客戶不會想聽我們講理由解釋原因的!這也是機器學習至今仍然無法超越傳統演算法,成為影像辨識商品設計主流技術的關鍵之一!他們還太沉迷於用統計學找到可以同時處理所有例外情況的「唯一」完美解答,這應該是不可能的!

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

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