軍車的車牌辨識也是很困難的!跟大多數的辨識一樣,如果解析度夠高,焦距準確不模糊,也不歪斜變形太大,你自己看著OpenCV照抄組裝也可以做得很好的!但是實務上我從客戶那邊得到的車牌常常是這種品質的!如果我也只是OpenCV的水準就根本沒辦法做現在的生意了!即使如上的模糊照片我還是必須有至少95%以上的辨識率,否則客戶就不會買了!
大家不要誤以為OpenCV是甚麼武功「祕笈」或「寶典」?差得遠了!那只是讓不會寫程式或不想寫程式的初階使用者偷懶參考用的範例程式庫!真的要解決問題時,那些東西在專業人士眼中就跟小朋友的玩具差不多,你不會也不可能騎著小朋友的三輪腳踏車去環島或來個一日雙塔的!我的公司從來就不用OpenCV的,因為根本不需要!直接寫程式解題的效率比套公式好上百倍!
辨識軍車車牌的主要問題是字元間距太小了!而且白字容易反光散射,如上的案例不是太暗而是環境太亮,所以整排字元幾乎都是連成一片的!看看下圖就知道了!要用OCR辨識成功幾乎是不可能的!因為字元目標在影像中是實質相連的,任何銳利化的影像處理都無法使它們正確分開!想強制切割的話,要如何知道它們是幾個字的連體嬰?要在哪裡下刀切割才會正確?沒有足夠資訊的!
所以這就是必須使用CNN的概念解決的問題了!我之所以能夠辨識成功,其實是以能用OCR正確切割的D字為基準點,往左右水平方向去依序掃描找出50209等數字的!當然也會找到那個「軍」字,如有必要我也可以用形狀特徵辨識出那是個軍字的!這就是所謂的順藤摸瓜了!你可能只看到一個瓜露出樹叢,但是順著它的藤蔓摸索下去,所有隱身在樹叢中的瓜都會被你依序找到的!
因為按照格式是:軍X-XXXXX,二三碼之間有較大間隙,如果這兩字都會模糊到沾連呢?那就只剩下全圖地毯式搜索的最後辦法了!在實務上因為那樣速度太慢,就必須使用GPU等額外設備幫忙才能趕得上需要的反應時間了!那就表示你的車牌辨識系統會貴得嚇人!還極度耗電!沒人會買的!我是做生意的,沒人會買的東西做它幹嘛?所以我的軟體就自動放棄極端狀況了!
上圖也是另一種CNN救了我的極端狀況,字元因為磨損變得破碎了,按照前面順藤摸瓜的邏輯,一樣可以辨識成功的!即使字元真的被磨損到變成兩三塊都行的!此時我就很愛CNN了!
所以如果你很狹義的解讀所謂的AI影像辨識,就是必須使用ML、DL與CNN等技術?那麼我也確實是有用到CNN概念的!只是它與ML或DL都一樣實在太浪費資源,也就是太燒錢了!我只會在刀口上必要的小範圍內使用!如果我堅持不用CNN,要解決上述這種問題就非常困難了!就像我們只在生病時才去看醫生吃藥,時機不多成本不高的!天天去醫院報到才是浪費!
所以影像辨識想做得好,你必須海納百川,所有相關的方法與資訊都必須盡量合理適時的採納使用!我不反對ML、DL與CNN,我批評的是:不看場合、目的與情境都一昧蠻幹堅持用這些極度耗費計算資源的演算法!那是會害死你自己、所有人和整個地球的!
限會員,要發表迴響,請先登入