我在FB上常常貼出很誇張的辨識成功案例,偶爾你也會看到其他廠商或研究單位貼出一些很歪斜車牌的辨識案例,但是除了真正購買使用該廠商軟體的人,其實不會知道真假!我知道我的技術是真的,也很希望大家相信,除了不時更新我的雲端辨識網站供大家免費測試,也會像老師一樣,盡可能用白話文在此部落格向大家介紹我是怎麼作到的!以昭公信!
其實影像辨識就是從影像中抽取我們想知道的特定資訊!但是這些目標資訊是埋藏在複雜的背景之中,所以必然的過程是逐步篩選簡化淘汰不必要的資訊,就是所謂的抽取特徵了!以CNN類神經網路的做法就是建立一些特徵矩陣,稱之為Kernel,然後拿去掃描全圖,稱之為Convolution,就是卷積運算,符合特徵的位置就會獲得較高的分數,形成所謂的特徵地圖Feature Map,這就是CNN的前處理。
如上圖,運算的結果就是抽取出應該跟我們想找的目標相關的資訊,然後設法從這些已經較簡化的資訊中組織出最後需要的目標!上面這張圖應該已經很嚇人了!大多數人覺得自己不可能學會操作這麼複雜抽象的東西,就會心甘情願地花錢去買ML、DL與CNN等技術的工具程式模組或軟體了!這就是現在AI產業很興盛的一環了!賣書、賣課程教學或賣軟體等等!
但是回到問題的根本,上面的示意圖還有個非常大的漏洞未處理或未展示出來!就是他們用矩陣方式來找特徵,隱含的假設是目標在影像中必須是「正面」的!譬如車牌必須相當正面的被拍攝,不同的傾斜度或斜視角度的車牌呢?就會有不同的特徵內容。但是在3D立體世界,目標剛好正面對著攝影機的情況不多,所以這個假設大多時候是錯誤不適用於實況的。
CNN要能辨識歪斜目標,不是必須設計更多特徵矩陣,掃描更多次,就是必須在篩選資訊時保留更多資訊,在後面的學習模式中加入更多的隱藏層,也就是更多的處理程序與參數,然後用更多的資料去訓練模型!大家看看最上圖的誇張案例就可以想像,如果你堅持使用CNN與DL來「學會」辨識這種極端的車牌影像,我不能說完全不可能!但是必須投入的成本絕對是難以想像的!
所以大家不要誤以為熟悉CNN與深度學習的AI影像專家都過著羽扇綸巾談笑間的瀟灑生活?事實上他們多半只能辨識簡單的東西,譬如車牌這麼簡單的目標,只要一歪斜就會讓他們非常為難!硬要辨識不是不行,但是需要的資料量與計算量就會多到即使買了輝達最高階的電腦都不夠用!他們的生活應該是跟處身於壓力鍋中一樣煎熬痛苦的!他們最知道自己並沒有點石成金的金手指!
面對一樣的問題,現在可以羽扇綸巾談笑間的其實是我這種「不用」CNN的傳統影像辨識專家!如最上圖,我用傳統的OCR技術不必矩陣運算就可以精準找到字元特徵,這階段就比CNN快上數十倍,特徵鎖定的位置還更精準了!當然也絕對不需要GPU的!CNN面對歪斜目標如果還是堅持用更多角度歪斜的資料來「訓練」模型!那表示需要更多資料與計算,那又是無止盡的花費!而且是浪費!因為還是不會比使用OCR更準!
我的做法就是直接將OCR前處理取得的歪斜目標做幾何校正,把因為斜視造成的扭曲修正回來,那只是一次性的幾何計算,耗費的計算量極小,所以最後即使是高度扭曲的車牌影像也可以很快速的辨識成功,我並不需要巨量資料或超級電腦就可以完成我的高效率AI影像辨識工作!
我是個實際存在的人與技術,所以不必迷信作影像辨識一定必須使用ML、DL與CNN!事實可能正好相反!做影像辨識使用那些技術你會很快陷入困境難以自拔!你的公司想不虧損破產都很難!成功做出高效率高精度的產品呢?就是海市蜃樓的幻想了!
限會員,要發表迴響,請先登入