Contents ...
udn網路城邦
你知道柏油路會對車牌辨識產生多大的麻煩嗎?
2020/07/22 16:17
瀏覽1,005
迴響0
推薦5
引用0

客戶反映使用我的軟體,辨識上面這種看來還算清楚的照片,卻常常辨識不出車牌?或需要特別長的時間?比同樣大小的照片多出好幾倍之多?這個故事說起來就有點複雜了!你以為理所當然的事情,對於聰明度有限的影像辨識演算法來說,可能差之毫釐,失之千里!要讓產品自動就能辨識各種情境的車牌,這種AI距離我們還好遠!我的車牌辨識軟體市場評價已經不錯了,但是跟人眼比較還是很笨的!

為了讓每一個客戶都能高準確率也很快速的辨識出車牌,我當然是盡量取得「中數」,就是依據最常見的狀況設計出辨識最好也最快的產品,當客戶的狀況其實不太符合我預設的「中數」時,有兩種可能:一是辨識不出答案,因為我的運算資源都被非車牌的雜訊誤導耗盡了!一是運算時間特別久,因為真正的車牌目標在預設條件下是「次要」的目標,要到最後才處理,辨識時間就會太久了!

這些問題如果給我資料分析,總是有辦法優化解決的!所以我才會說車牌辨識是一種「服務」!碰到這類麻煩,每次我都會先客製化的解決個別場域的特性問題,然後思考可不可以讓程式內部自動偵測到這些異常現象,自行決定如何作自我調適的處理?如果成功就會變成我的標準辨識核心的一部份,我的辨識核心就會越來越「聰明」了!

這和所謂機器學習的概念是完全不同的!他們是將新的不同資料加入原有的巨量資料之中,然後放手讓機器學習或深度學習去找出「中數」的最佳單一辨識流程!而不是針對不同情境的影像使用不同的流程,我的辨識核心內部有如一個路網,發現此路不通就會轉向走別條路,好像老鼠走迷宮,盡量走到出口才會停下。走得出迷宮之後,還會研究如何建立一些可以更快出關的準則依據,讓辨識速度更快一些!

機器學習會作出來的程序則是包含所有可用演算法的複雜單一流程,目標是「讓此流程可以答對最多題目」,而不是「盡量解決每一個影像的問題」!所以我的努力方向是讓所有病症的病人都「各自」得到越來越好的治療!機器學習則是努力找出一種萬靈丹,最好所有的病人吃下此藥就能全部康復!你們認為誰會比較快作出聰明而且快速的辨識軟體?

話扯遠了,看看上圖為何難辨識吧?下面是二值化圖,為了盡量抓出所有可能的目標,當然是用動態門檻去分割黑白區塊的!此時就看出關鍵問題了!看起來「很平」的柏油馬路,事實上在耀眼的陽光下是多不勝數的「可能目標」,更麻煩的是他們的亮度對比在此案例中,比車牌字元還要「清楚」!車牌其實是在陽光的背光面嘛!

上圖是我用尚未修改之前的程式篩選可能目標的結果,每一個可能目標會經過長寬大小與亮度對比強度兩個條件篩選,每個可能目標須在一定的大小範圍內,然後依據該目標與該目標背景的亮度差異作排序。為了節省運算時間,通常會依據影像大小取最多一兩百個目標吧?但是這個案例中前幾百名亮的目標都是柏油路上的石子反光,車牌根本擠不進來,連候選人都當不上,當然就不可能雀屏中選了!

其實為了讓真正的車牌字元進入榜單,上圖(1920X1080畫素)我開放的名額高達1500!到了上千名之後真正的車牌字元才完全入圍,即使如此,程式預設還是會先從「清晰」的目標嘗試組織出合理的車牌,那就是在柏油路面找車牌浪費時間了!所以即使最終辨識成功,時間也會耗費非常久!

那怎麼辦?如果只靠目標的大小與對比不能優先正確挑出最可能的車牌字元目標,我們就必須想出另一個車牌字元與柏油路雜訊之間有明顯差異的物理量,依據那個物理量提前讓不可能是車牌字元的目標出局,車牌字元就可以有出頭的機會了!那個物理量就是目標輪廓的形狀「整齊度」!如何定義就是一個需要設計的演算法了,只要設定一個門檻值將內容「凌亂」的目標直接篩掉就行了!

就這樣,目標數立即大減到合理的一百多個,找出正確答案的時間也恢復到零點幾秒,而不是好幾秒鐘了!這其實就是我天天上班的主要工作之一,客製化之後當然辨識率就會大幅提升,辨識速度也會變快。面對客戶抱怨,我不會輕易放棄,兩手一攤說我沒辦法改善的!辦法一定是有的,如果主程式可以微調解決就比較簡單,不行的話就要客製化增加演算法流程,如此而已!買我的軟體保證不會變成產品孤兒!

有誰推薦more
全站分類:心情隨筆 工作職場
自訂分類:不分類

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