

前幾天的文章有提到,我的辨識程序碰到類似如上的規律水溝蓋孔洞目標時,會假設它們是可能的車牌目標,還可以排列組合出非常多組!程序要一直跑到把它們都當文字辨識之後,才會發現它們根本甚麼字都不像?但是已經浪費了很多時間!這是困擾了我很久的常見雜訊,不會阻止我找到正確答案,但會嚴重拖慢辨識速度!
事實上我的程序在嘗試排列出可能的目標群之後,已經設計了不下十幾種檢驗機制,都是想及早在真的做車牌幾何校正與字模比對等耗時的演算之前,就提前確認它們「不是」車牌!就不必浪費時間資源繼續處理它們了!在一樣的電腦硬體條件之下,辨識速度要快就是要減少計算量,少做無效的工作,對於收入一樣的人來說,知道如何省錢的人,就是較有錢也較有效率的人了!
但是水溝蓋孔這種目標就是非常整齊排列大小相似的東西,我之前一直想不出簡單的檢驗排除的方法,但是今天想到了一個妙招!如上圖所示,車牌進入後段耗時辨識的組數從49組減到7組,辨識時間從1217毫秒降到271毫秒,差別真的好大!至少以後我不會再害怕水溝蓋來亂了!路邊停車的照片中它們很常見的!
怎麼作的呢?我也可以直接告訴大家!因為別的競爭對手廠商好像都說是用深度學習的嘛!即使我把我的商業機密說清楚講明白,他們也無法模仿學習用在他們自己的研發模型中的!除非他們真的學我一樣,完全不用ML、DL與CNN,那真的太難為他們了!


如上是水溝蓋與真正車牌放大的二值化圖,當我的程式選到一排黑色實心目標時,我只要從第一個目標的中心點拉一條直線到最後一個目標的中心點,然後計算這個線段的黑點數涵蓋率,正常文字大概只會有大約1/3,但水溝蓋就會是六七八十趴!這是很明顯的差距,所以我不必繼續辨識它們像不像文字了!這組目標到此就結案了!
很簡單也很合乎所有人的常識直覺,這就是我作影像辨識的風格!沒學過影像辨識、OpenCV、或Python的小朋友都聽得懂的!重點是真的有效!計算量也很低!這就是我相對於ML、DL與CNN等所謂主流技術的最大優勢!我總是從物理事實去想出我的解法!而不是把動腦的事情都交給機器去學習,機器學會了也沒辦法教我的!所以用機器學習的人最後總是會比機器更笨的!
從這件事也可以看出一個影像辨識軟體的品質關鍵!就是運算量應該越精簡越好!運算越少就會越快越省資源電費!但是只要你一用ML、DL與CNN等技術,那就絕對比使用OCR的運算量多出數十倍!就好像你買了超跑或豪宅,之後再怎麼努力省錢,基本開銷都是一般汽車與房屋的幾十倍!因為運算量實在太大,所以才必須使用GPU的!那是它們的缺點,絕對不是優點!我的軟體就是完全不必用GPU的!千萬不要被騙了!