網路城邦
上一篇 回創作列表 下一篇   字體:
只要能設計合理的補救措施!OCR比CNN好用太多了!
2024/12/04 05:05:21瀏覽177|回應0|推薦6

這張車牌看似不難辨識?但是細看之下就會發現有很多刮痕!可能是某次擦撞時留下的痕跡,車主可能覺得「看起來」還好就沒積極處理,但是看在我這種擅長使用OCR辨識技術的人眼中就會覺得很嚴重了!如果這是故意製造的辨識障礙,那作者本身也一定是影像辨識的高手了!先看看下面的二值化圖,與我們嘗試勾勒出來的輪廓線圖:

不要小看上面兩個小紅圈圈標註的小瑕疵,那個若有意似無意的第一個數字1下方的小細線就將這字與背景中的底線連在一起,有如點穴一般,一個小動作就讓這麼清楚的1字變成OCR無法辨識的死穴了!中間那個1 字中間被刮痕截斷也是致命的傷害,一個字斷成兩截,如果軟體沒有抽象思考的能力,當然兩個破碎目標都不會像是標準字型的1了!

如果我是懷疑論者,就一定會說這是高人刻意來惡搞車牌辨識軟體的傑作!用極不明顯的小雜訊就讓軟體失效了!這就是傳統的OCR技術為人詬病的大缺點了!我們辨識的前處理中最關鍵的步驟就是用封閉曲線勾勒出獨立的目標,如上圖的JN290等字元雖有輕微破損,但仍可完成封閉曲線就一定可以辨識成功!

但是如果像車牌辨識,需要每個字都被正確辨識才能完成標準答案時,上面兩個小瑕疵中的任何一個,就足以讓這個車牌辨識案例失敗了!所謂的「差之毫釐,失之千里」就是這個意思了!相對地現在流行的CNN(類神經網路)的演算法就沒有這種缺點,理論上上面兩個1都可以被掃描出來,完全不受雜訊干擾!

但就像開車的人都知道超跑性能很好舒適快捷,可是很少人買得起的!因為CNN不會事前就知道車牌在整個影像中的概略位置,也不知道車牌與字元的概略大小,所以要用卷積搜尋目標的方式找到正確的字元計算量與耗時就會是OCR的數十倍!所以必須GPU等額外計算設備支援,系統成本就會很高了!否則辨識速度就會慢到讓人以為電腦當機了

相對的,OCR找到輪廓線的過程計算量不多,速度很快就可以找到至少大部分的字元,如果我們可以以此為基礎,設計一些補救措施,讓OCR可以補足容易漏失的字元,我們就可以又快又好又便宜的完成高品質的車牌辨識軟體了!我就是朝這個方向努力的!我們公司真的有認真關注學習CNN,但因為實在太「」了,用不起!希望能繼續賣不昂貴品質還更好的軟體服務大眾!

要設計出解決上述問題的演算法,很有趣的部分就是必須同時參考影像內外的資訊,甚至偷用一些CNN的技術概念!簡單說就是我們從車牌設計的規範可以知道:車牌字元都一樣大,至少一樣高,甚至也可能一樣寬!字數與英數字格式也有很多規定,去查監理單位公告的資訊就知道了!

有了這些規範,車牌辨識就不是漫無邊際的問答題,而是答案範圍限制很多的填充題,甚至是選擇題了!加上至少大部分已被OCR鎖定的確定字元,我們就可以知道這個車牌在圖中的概略位置與車牌字元的大小了!再依據監理單位公布的規範,我們就可以檢視這個車牌是不是有缺字或多字?如果有多字,就是用各種格式條件抓出最可能的疑犯刪掉了!

如果有缺字呢?也是依據車牌格式規範,判斷應該是缺在甚麼位置?是在某兩字之間?或是字串的前方或後方?接下來就是偷學CNN的卷積掃描搜尋的方式,在極小範圍內框出可能破碎或與背景沾連的字元了!想像一下,如上案例只要用已知字元的大小,設計特徵矩陣掃描頭尾與字距過大的空隙,任何模糊破碎字元都無所遁形了!需要增加的計算量還是不多!

所以我的OCR技術是傳統方式的進化版,甚至是整合CNN技術的最新最高效率與最高辨識率,還最低成本的先進科技!千萬不要誤以為我是落在DLCNN等新潮AI技術的後面,抱殘守缺冥頑不靈的老頑固?事實正好相反!我比那些AI影像辨識更先進!其實YOLO就是因應CNN速度太慢的問題,拼命向傳統OCR等技術取經的成果!而我已經更快將CNN整合到我的OCR技術中了!大家都應該知道的!

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

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