
這種因為夜間光照不平均形成的亮暗不均的車牌其實還挺常見的,這是人的眼睛應該不會看錯,但影像辨識蠻困難的情況,較簡易初階版的辨識軟體是一定無法辨識的!但我號稱是優質車牌辨識的軟體當然不能就這樣被擊敗的!正好拿來說明我最近這次以提升整體辨識速度為主要目標的大改版的重要內涵!
如圖所示,上方是原圖,中間是以單一亮度門檻做的二值化圖,影像處理速度很快,但是永遠找不到可以將所有車牌都同時正確切割的答案!關鍵就是卡在事實上沒有一個「單一」的「最佳」灰階門檻值可以同時適用於車牌左右邊的字!此時你動用機器學習,使用大量資料訓練學習,其實也只是嘗試找出可以正確辨識「最多」個字的二值化門檻,而不是辨識出「所有」字的完美方案!
所以在全圖中因應亮暗區域使用動態的二值化門檻計算(影像處理)是必須的!就是必須計算各個較小區域的平均亮度,亮區要用較高的門檻,暗區要用較低的門檻,才能如圖下方那樣將每一個字都顯現出來!這種過程其實是我已經使用多年的舊版的SOP!
換言之,這張影像用我的舊版就能辨識,但是我嫌它速度有點慢,所以插入了單一門檻的快篩模式,會先嘗試用單一門檻的二值化辨識,如果簡單的方式就能辨識出合理的答案,當然就不必使用較耗時的動態二值化了!如果影像正常清晰,其實八成以上的影像都是可以用簡單的單一門檻二值化就辨識成功的!
在容易辨識的大多數影像上節省辨識時間就是我此次改版的主要目標了!目前看來也真的省下接近一半的運算量與運算時間!但是當然不能以降低既有的辨識率為代價!如上案例一定還是要能辨識出來的!所以失敗的單一門檻辨識就是多出來的錯誤嘗試了!這當然會浪費一些時間,但這種案例不多,算算總帳還是值得的!
如下就是新(下)舊(上)版本的辨識時間差異,算是我必須付出的代價!直接用正確可辨識的方案只需要69毫秒,先快篩失敗後再用被迫使用完整方案會變成需要164毫秒!但是這麼困難的影像極少,就像極少數生病的人給他們較多的照護資源不會讓醫療體系崩盤的!真正的大浪費是讓大多數不必上醫院的健康人天天上醫院!這就是我做這次改版的重要意義!

我會在此介紹這些細節的原因,是想破除一些機器學習的謊言迷思!首先就是如果「訓練學習」的標的是某個參數,而那個參數在物理上就不可能是單一數值就能適用於所有的目標,那再多的資料,再大量的訓練都是徒勞無功的!理論上就不合乎物理事實的目標,你用再龐大的算力投入都不會成功的!
另一方面,YOLO之類的CNN演算法,很強調它們不必做傳統影像處理,只要直接設計特徵矩陣,在原始影像中以一樣的標準搜尋特徵的加權值就可以達到辨識的目的?事實上碰到如上的狀況也是很艱難的!因為環境的整體明暗度也是會影響特徵值表現的!如果不先做一些亮度均衡的影像處理,效果一定很差!
總之,我認為不要相信那些完全忽略不談物理科學與現象的演算法!以影像辨識來說,我認為物理科學才是我們最可靠最可以信賴的好朋友!依循物理的原則,思考與設計處理影像的方式絕對是最簡單有效的切入點!想依賴盲目的大量運算找到視覺上的人工智慧?那絕對是緣木求魚啦!
限會員,要發表迴響,請先登入













