網路城邦
上一篇 回創作列表 下一篇   字體:
想辨識得又快又準的訣竅,就是「不要」使用CNN!
2024/09/25 10:39:35瀏覽438|回應0|推薦4

這是取自一篇2018年高雄科大貨櫃碼辨識的碩士論文中無法正確辨識的一個困難案例,當然他們必然是標榜使用最新AI技術的CNN來做辨識的!正因為理論上CNN宣稱「可以」比傳統的OCR更能」辨識出模糊破碎的目標,我就很有興趣想試試看用我的以OCR為基礎的演算法能否搞定這個案例?如果連CNN都無法辨識正確的案例,我用我的OCR技術卻可以辨識正確呢?那就好玩了!又有題材可以取笑CNN了?

結果我稍作研究後就可以用極快的速度(31毫秒)做出正確辨識!該論文使用70張影像為實驗資料庫,我擷取其中他們宣稱辨識失敗的9張影像做實驗,結果成功辨識出其中的8張!身為專業影像辨識業者的我沒有漏氣,直接輾壓了在校生!而且不是使用號稱無敵AICNN,只是使用傳統的OCR技術「而已」!

這是不是有點像金庸武俠小說天龍八部中的橋段?在聚賢莊大戰之中,武藝高強的喬峰刻意只用一套非常基礎簡易的太祖長拳,就一一擊敗了各大門派使用各種複雜拳術與兵器的高手!正所謂「重劍無鋒,大巧不工」,只要基本功紮實,使用哪一種武功都能贏的!重點是功力與技巧,不是使用哪個門派的武功就一定比較強的!

以上面的例子來說,我不覺得CNN真的無法解決這種難度的辨識障礙,只是學生的功力可能還不夠好,加上學生可以使用的資源不夠!如果有輝達的GPU超級電腦,不惜工本的作極大量的運算,應該還是可以靠「算力」與「電費」強勢辨識成功的!重點是在真實世界中成本考量也是很重要的!不是誰家都很有錢的!CNN是不是比OCR準確?或許還有討論的空間,使用CNN的運算成本高出OCR很多倍則是無可置疑的!

以上例來說,我的演算邏輯很簡單,很像填字遊戲!我先用基本的OCR就可以很輕鬆正確的辨識出MCU93234等清晰的字!然後根據貨櫃碼的格式與字元間距等關係做推理,猜猜哪裡可能有遺漏的字?就去該處硬挖出可能破碎的字,這跟CNN掃描特徵的方式類似,只是我不會像野貓井一樣到處亂挖地毯式搜索,所以計算量遠比CNN低很多很多!

如果我預測可能有字的位置挖出的東西真的很不像字元,當然就放棄了,繼續推理其他可能位置,直到找出足夠字元拼湊出合乎規格的完整貨櫃碼為止!可能有缺字的位置大概只有三五個,我就只在三五處挖字!如果用CNN呢?每一個步驟都要做全圖掃描,非常耗時緩慢的!

這篇論文的前半部程序還是使用「CNN」的方法找到貨櫃碼區域的!因為用CNN找實在太慢,太耗時了!他們只用CNN做字元辨識而已,結果還無法辨識出較破碎字元?實在很掉漆的!他們原本想蹭AI熱度,藉著CNN來抬高論文價值,結果適得其反,反而充分證明了CNN的缺點!貨櫃碼辨識的各個程序階段其實CNN都比不上OCR的效能!

我不知道同樣的議題交給業界號稱AI技術高超的公司去做會不會比較好?但我絕對相信好也有限!說到辨識速度與辨識率,CNN在這種議題上是看不到我的車尾燈的!因為理論上OCR就是可以做得比CNN更快、更合理、當然也更準確!而且運算量少很多倍!省錢多多!所以這種辨識字元的工作是絕對不適合使用CNN的!事實俱在,信不信由你!

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

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