網路城邦
上一篇 回創作列表 下一篇  字體:
如果證據顯示該處一有個字,隨便猜個字都比空著好!
2021/12/10 16:04:12瀏覽978|回應0|推薦4

剛剛在研究這張磨損車牌的辨識,這也是人眼一定不會看錯,但是用OCRSOP辨識卻一定會錯的案例!我的車牌辨識所以讓人覺得很聰明(AI),主要原因就是我會不斷研究這種人比電腦聰明的特殊案例!跟大多數主流派思維很不一樣的是:

我不會花太多時間去思考嘗試演算法的整體調控,譬如讓二值化門檻更高一點,或許那個模糊破碎的「1」字就會變完整了!那樣做通常只會增加更多需要處理的問題,譬如讓本來分離可辨識的字元沾連在一起了!如果是每個字元都一起偏亮或偏暗,甚至有相似程度的磨損,這種整體思維或許還有用,但如果是只有其中一兩字異常呢?那就別試了,永遠不會有完美平衡點的!

就像你是個營養師,想設計一套餐點,同時適合各種體質、年齡、甚至有不同疾病的人,那是不切實際的!你會浪費很多時間還是無法面面俱到,得到完美的菜單。但是做車牌辨識少一個字就是錯的!也就是即使某字狀況特殊,還是一個都不能少!七字全對是100分,少一字不是80分,而是0分!

那應該怎麼作呢?合理方式就是先用SOP盡量辨識出可以辨識到的字,然後檢視這個答案的合理性,如上的案例,那個1字斷成了三節,當然第一時間任何軟體都不會認定它是個1字!如果不是剛好它夾在其他車牌字的中間,可能連人眼也不會說它是個1字!

這就是我會覺得有趣的部分了!所有「人」都會自動承認那是個1字,即使它很模糊甚至破碎,為什麼?因為它的周邊已經是一個幾乎完美的車牌了,依照正常車牌字元的相對位置,那裡一定會有個字,如果空白就一定不能構成合理的車牌了!,就像考試時,選擇題的答案欄如果空著交卷,是鐵定不可能得到分數的!

相對的,隨便猜一個答案都有機會猜對,如果可以排除幾個絕對不可能的答案,你答對的機率又大幅提高了!這就是人的思考方式,我需要做的就是如何將這個思考過程程式化。所以如何做出機率較高的「猜測」,也是提高辨識率的重要技巧!事實上機器學習以機率統計為基礎,就是猜測的演算法了!但是當然不要一開始就用猜的,能精準答對的題目當然要認真解題,不要亂猜嘛!所以我的影像辨識絕對不會以ML為主體,他們是中繼或後援投手,絕對不宜做先發。

具體來說,我這張車牌首輪辨識結果確實只有「AQB550」六個字,雖然六個字的車牌也是有的,但是檢視他們之間的字距,就會發現兩個5字相距太遠了!如果那是台灣車牌都有的格線位置呢?那車牌就會被解讀成「AQB5-50」了!但是4-2格式的六碼車牌前面四個字應該都是純數字啊?所以很明顯的這是一個必定錯誤的答案!

我之前的辨識版本就是經過這個流程,最終得到AQB5-50,知道不可能答對,就乾脆說找不到車牌了!反正報告出來也不可能對嘛!至少在台灣是這樣的!那有沒有辦法讓它敗部復活呢?畢竟離正確答案已經這麼接近了,誰都會覺得很可惜的!

我的辦法就像是補考了!因為我已經計算了字距,知道哪兩個字之間非常可能有個字,補上0-9的任何一個數字,它就是格式合理的車牌了!那就在這個位置抓瞎了!拿0-9的字模比對,即使符合度超低,也讓分數最高的出線吧!就像數學考試全班都不及格,但是學校的數學競賽一定要派個「數學最好」的人參賽,那就無魚蝦也好,不及格的第一名也趕鴨子上架吧!

當然這種已經縮小範圍的無門檻猜測其實答對的機率還是非常高的!所以我就矇對了!那個1字的字元比對符合度當然是不及格的,否則第一輪SOP就辨識到了!如果我把全圖辨識的標準也降那麼低,那局面可就太混亂了!資料處理量就會多好多倍,可能的字元太多了嘛!

所以總是執著於研究出完美的全圖辨識主流程是很愚蠢的!不僅研發時間會很長很長,即使做出來辨識率也不會很好,只是讓所有參數妥協,找到辨識率最高的單一流程,雖然美稱為「最佳化」其實還可以「更佳化」!如果你覺得人比電腦聰明,人就是這樣思考解決問題的,你要不要模仿呢?還是堅持找到完美的CNN+ML+DL一次性解決方案呢?

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

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