面對破碎的字元,如何讓軟體有宏觀的理解能力? - 鄉下老師 - udn部落格
鄉下老師
作家:鄉下老師
文章分類
    Top
    面對破碎的字元,如何讓軟體有宏觀的理解能力?
    2026/05/26 03:01:48
    瀏覽:247
    迴響:0
    推薦:10
    引用0

    從博士論文研究地形辨識演算法時我就有一個深刻的體會:人眼與人腦的宏觀識別能力真的很神奇!數學上要找到山脈的軸線就是找區域高點(Local High),但是地形資料有數位誤差,如果堅持必須是資料的高點才是山頂軸線的成員,那找到的山脈軸線就一定會斷斷續續!因為就是有些山頂就是會剛好相鄰的兩點在精度有限的數字上是完全一樣高的!如果「山頂是平的」當然「山脊」就斷了嘛!要讓辨識軟體「看到」人能理解的連續山脈是很不容易的!

    OCR技術做車牌辨識時也有很類似的問題,碰到影像模糊的時候,我們還是會想用二值化的技術去切割字元,因為OCR的計算量少效率高嘛!一旦使用CNN的矩陣卷積(Convolution)的計算方式呢?就會開始陷入計算量爆炸的不歸路了!研發過程會變得超級緩慢!需要的資料與電腦成本也會狂飆!

    但是OCR面對模糊影像時就是會有如上的字元破碎或沾連的問題!之前我談過很多次如何切割沾連字元的技術,但是字元破碎的機率一樣很高,如果沒有穩定有效的對策,OCR也是一樣走不通的!也就是如上的碎成五顏六色碎片的KG,我的演算法必須跟人的宏觀視覺一樣,把它們理解為完整的字!

    要做到這件事首先必須得到一個字應該多大?的合理假設值!我們當然不會事先知道一個隨機影像中的車牌字是多大?但是以機率來看,如果車牌有六七個字,我們的二值化門檻也不離譜的話,應該有四五個字是可以直接被正確辨識的!利用這幾個字做個簡單的統計,就會得知車牌字元的合理寬高了

    有了一個字「應該」是多大的估計值,就可以回頭檢視每個被擷取到的目標是不是正常合理了!譬如破碎的G字初步辨識時只能抓到紅色的那一塊較大碎片,與合理高度比較明顯太矮了,那就要修正它的高度,將破碎的綠與藍色碎片也納入G字的範圍,再做一次字模比對就會得到正確的G答案了!

    那個K字狀況也很類似,如果直接辨識較大的紅色碎片,答案應該會是A而不是K!但是當我們推測出字元的寬高之後,我們會發現那塊藍色的碎片也在合理字元範圍之內,納入它為字元的一部份之後再比對字模,這個字就會比較像K而不是A了!

    所以任何看似聰明神奇的辨識能力都不是來自神祕的數學公式?或只是運氣好?都是很多精密且合理的科學計算推理的結果!如果你相信如此精密複雜的推理過程,可以不必動腦筋,用大量資料經過深度學習的訓練過程就能學會?我只能說你病了!病得不輕!目前的深度學習技術距離這種智慧還非常非常遙遠!

    相對的!如果你能以專家系統的方式角度切入研究這類影像辨識問題的對策,你一定可以很有效率的快速且精準的解決問題!不但不需要大量資料的耗時訓練成本,產出的軟體還非常快速有效又省電!在這個議題上,甚麼才是較好的AI技術?絕對不可能是深度學習的!不要再傻傻當被騙的肥羊了!你可以不必用GPU的!省點錢給辛苦工作的人加菜吃好一點比較實惠啦!

    回應

    限會員,要發表迴響,請先登入