網路城邦
上一篇 回創作列表 下一篇  字體:
影像辨識也是需要開刀的!
2019/11/05 09:33:46瀏覽1236|回應0|推薦5

好難得今天沒有太多預定工作,就來寫論文吧!現在所謂的用機器學習或深度學習作影像辨識,其實也無法跳脫必須先找到全景影像中「可能」目標的程序,就是利用影像的亮度與顏色變化用演算法抓出一些目標區塊物件,作為進一步處理的基礎,像這樣:

這可以說是影像辨識過程中最麻煩困難的工作,卻是絕對不能省略的關鍵程序,而且跟影像的來源環境有關,要研究出任何影像都能用的目標擷取演算法非常困難!也因此沒有幾個人願意自己去實作這一階段的工作,多半會依賴(且迷信)少數這類神奇演算法的功效,如果連他們(譬如YOLO)都擷取不到你要的目標,你作出來的答案當然是錯的!或根本沒有答案!

作車牌辨識如果可以找到能鎖定所有車牌字元的演算法,那辨識軟體就很好作了!但是全景影像中的車牌有遠有近,有清晰有模糊,清晰的大家都找得到,模糊到與背景相連的目標就不能只靠亮度與色彩演算法順利擷取到了!像下面這張車牌:

即使你放大影像來看,B字也是與背景相連無法切割的!連第二個5字都很難獨立被切割出來!

我作影像辨識設計自有的軟體是完全不用現成演算法或程式模組的,只用自己設計並實作出來的目標切割程序,我也只能獨立的切割出後面四個字元5060

下面是車牌二值化的局部放大圖:

數學可以證明,不論我如何努力調整切割的參數,都不可能將B5切割成獨立目標!因為我們只有亮度與顏色的資訊,因為影像模糊了,這些資訊變得不足以告訴我們B與背景之間其實是有一個縫隙的!影像中沒有就是沒有!任何以顏色亮度為基礎的演算法都無法讓B獨立出來!你用機器學習或深度學習軟體跑一百年作「訓練」的結果,那個B還是與背景相連的!因為演算法可以見微知著,但是不能無中生有

那怎麼辦?如果人的眼睛可以很容易辨識出B5-5060這個車牌答案,我的軟體卻無計可施?這東西還能賣嗎?一般以「找車牌」為邏輯的演算法可以概略估計出5060的左邊還是有車牌的特性,可以延伸到B的位置,應該也可以設法找到缺漏的B5,但是這種演算法碰到白色車身時就很頭痛了!因為車牌好像變得沒有明確邊界了!我以前試過的!

那我目前的演算法在正規的目標辨識之後只有車牌的四個字怎麼辦?首先是依據車牌格式推測車牌應該還不完整,那就往字串的左右去找沒能順利切割到的字了!方法是依據已經找到的字元大小及排列方向去原圖中硬挖一個區塊,暫時當作車牌的字元目標處理。至於該挖左或右邊呢?其實是兩邊都挖出來,再比較哪一個比較有車牌字元的特徵,然後二選一即可!

實作的細節當然很多沒寫,但重點在於我用到了超越亮度與顏色的邏輯去強制切割出我要的目標,我的根據是車牌的格式規則,如果我找的不是車牌而是人臉,譬如辨識到兩個眼睛但找不到嘴巴,那我要找的位置、方向與大小都和找車牌不同了!所以我說影像辨識不只是影像辨識,還是個物理問題!如果你完全不用影像外部的條件與邏輯輔助,幾乎不可能完成任何高品質的辨識軟體。

記得上次與林泓宏教授討論時,他說深度學習最大的貢獻就是這些快速有效擷取目標的演算法,讓一般研發人員可以跳過這座大山,直接拿演算法篩選出來的目標物件繼續作後續的辨識。當時我覺得有點不妥,但沒立即想到哪裡不對?現在我想到了,就是那些通用的目標擷取演算法當然無法切出那個B字,但是從影像外的資訊我知道那個位置在物理世界中真的有一個目標,我就必須硬切出一個目標!不然就不可能得到正確答案,太依賴那些演算法與模組,你就被限制住了!走不遠的!

我最後的辨識結果是這樣的:

其實車牌辨識軟體競爭的就是這些模糊邊緣的案例,如果能辨識更多這類案例,我的軟體就會顯得越聰明,雖然離人類的視力判斷水準還有蠻大的差距,但是我確實在這方面著力很深,也繼續努力之中,所以這種手拍照片的辨識應用軟體,我在市場上是極具優勢的!

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

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