網路城邦
上一篇 回創作列表 下一篇  字體:
二值化是目標辨識成功的關鍵,作兩次也值得!
2020/03/24 05:09:27瀏覽3683|回應0|推薦6

用人的眼睛要辨識這樣的車牌一點都不難,但是要寫出程式辨識出來真的很難!人工智慧現階段能跟人差不多聰明就太厲害了!所謂的影像辨識流程,其實就是一連串簡化影像資訊的過程,最終從簡化到足以作決策的資訊中找到我們要的目標答案。具題來說就是全彩→灰階→黑白→定義目標。每一個階段其實都會影響下一個階段的運作,從如何定義灰階開始我們就要開始想,我的選擇是不是能夠突顯我要的目標了!

一般來說我們可以使用顏色與亮度對比的差異來凸顯目標,但是像上圖這種看來很「尋常」的影像,其實車牌字元的對比度不會比環境背景的其他訊號影像更突出!還因為略有反光,原本是深黑色的字元甚至都不怎麼黑了!所以是一個很困難的案例。

無法避免的,既然目標字元在影像中不是最明顯的目標,我們就必須普查所有影像中的「可能」目標,根據很多條件逐步篩檢出我們要的車牌字元!這就是全景辨識車牌的困難之處,如果是特寫鏡頭拍的車牌,我們可以假設車牌字元就是影像中最明顯的目標,像下面的影像要辨識車牌當然很容易。

所以停車場出入口的車牌辨識大家都搶著作,因為最簡單!一旦跑出這個理想的環境,還要能高比率的正確辨識車牌,那就是完全不同的技術層級了!如果還要辨識多個車牌,車速還有點快,就是在比較「自然」的情境中辨識到車牌,那更是大學生甚至研究生與小學生的程度差別!完全不能互相比擬的!

賣車牌辨識系統的廠商最不願意說清楚的,就是這種差異!他們希望用一個「辨識率」就含糊帶過這個天差地遠的技術難度差距。希望買家認為他們如果可以在理想環境辨識到98%,就一定可以在任何環境下辨識率都是98%?這當然是愚民政策。

更糟糕的騙術,是讓客戶相信:如果在不同的環境中系統辨識率變低了,只要用「大數據」多給系統餵資料作機器學習或深度學習,系統就可以自己進化了?這是不可能的!即使勉強能讓辨識率稍微提升,付出的成本代價也完全不成比例,譬如收集數十萬張影像,耗時費力訓練系統很久,卻只能提升辨識率兩三趴!

其實雖然全景辨識很難,但不是沒有穩定可靠的方法可以逐步分析解決,像第一張圖我們運用動態二值化門檻,在每個區域給予不同的二值化門檻,還是可以作出如下的二值化圖,車牌字元還是可以被看到的!

但是照著這個影像的邏輯繼續辨識下去,車牌的第一個字怎麼看都不會像是一個完整的字母A!所以無法避免的,我得到的答案是:AT-6285,而不是正確的AAT-6285,甚至那個殘缺的2字都有可能辨識錯誤。

如果你相信有某種「完美」的目標特徵演算法,譬如很熱門的CNNRNN之類的,一定可以自動檢出我要的影像特徵,你就會陷入方法論的無窮調整程序,即使最後「」出了一組參數可以正確辨識出眼前的這張圖,也不保證可以適用到所有其他的案例,而且你也不知道為何這樣作就可以成功的原因?下次碰到無法辨識的圖時,你該怎麼做?你還是沒有具備理論基礎的經驗可以參考。

其實不必這麼麻煩的!如上圖的狀況其實很明顯就是二值化門檻值偏低了!如果字元沒有反光時,其實這種演算是OK的,但是有反光讓字元變得比較亮了,一樣的門檻值就會讓字元殘缺不完整了!知道這個原因,就找個邏輯讓整個門檻值拉高,就可以做出這樣的結果了!

你們說我的演算法車牌辨識核心有沒有機器學習的精神呢?其實也是有的!我知道真實世界中的車牌,就是會有很多環境因素讓我們的二值化門檻無法定於一尊!反光或字元略有磨損缺陷時,用高門檻比較能得到完整的字元目標。但是高門檻又容易讓筆畫變粗,讓太靠近的字元因此沾連成一塊,或字元與鄰近的背景雜訊相連,我們又無法辨識獨立字元了!

像下面的這個例子,高門檻會因為字元過度沾連而無法辨識,低門檻讓字元變得細瘦,但就是可以辨識成功!

所以二值化門檻高有高的問題,低有低的缺點,那我該怎麼做才能兩全其美呢?其實也很簡單,就是兩種都作!如果只有其中之一有合理答案當然沒問題,兩個都有答案而且一樣,也沒問題!如果不一樣呢?當然就是看整體符合度與合理性來評估了!譬如上例都是七碼車牌,字型是與六碼車牌不同的!字型是七碼車牌的字,出來的答案卻是六碼車牌?當然不合理嘛!扣分!七碼的正確答案就出線了!

我說過我從來不想隱藏我的技術理論邏輯,最多只是考驗模仿者實作的技術能力而已。我的車牌辨識核心邊緣極端狀況的辨識能力很好,關鍵之一就是我其實會用不同的二值化門檻作兩次辨識!然後再選一個比較合理的答案。但是問題來了!那不是會花很多時間嗎?車牌辨識是需要講求速度效率的,我的產品其實辨識速度快也是一個特色,「作兩次辨識」?時間不是會拖慢兩倍嗎?

是的!真的會慢兩倍!所以我的辨識流程才會分成好多版本,如果是速度需求極高的車載系統,當然就不會作兩次了,但是那種應用時的辨識畫面一直變動,也讓我的單一二值化門檻的辨識對像有高速變化,所以成功率還是很高的!某個角度會反光,下一張就不會了!如果是低速或靜態影像,當然就是細嚼慢嚥囉!

但是我可以這麼奢侈的使用看來耗時的辨識流程,很重要的原因與前提,還是我的演算法,就是純數學的部分效能是非常高的!像這張影像真的是走了兩次全景辨識程序才得到正確答案,先是算出AT-6285的錯誤答案,提高二值化門檻後再算一次才得到正確的AAT-6285。但時間還是很快的!36萬畫素,0.163秒!如果只作一個門檻呢?只要0.08秒,但答案是錯的!

不要懷疑,我用傳統演算法就是能做到讓大家驚奇的AI智慧,真的不必,也不應該太依賴機器學習或深度學習的!把基本功盡量作好研究清楚,一定會比花時間玩機器學習更快達到目的的!

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

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