Contents ...
udn網路城邦
86條款的故事!講清楚給你聽!
2019/10/16 09:21
瀏覽833
迴響0
推薦9
引用0

賣車牌辨識產品因為競爭者眾,心理壓力其實蠻大的!我一再說過,我希望做出來的是接近AI等級的軟體,對於較困難狀態的影像也要有一定的辨識能力,如果是影像端正沒有磨損陰影的車牌,我的辨識率應該和別家都一樣好,但是別家辨識核心視為「影像品質差」的,我也會盡量嘗試辨識,難免就會多做多錯。辨識系統沒有答案時,使用者可能會認為自己沒弄好,沒拍到可以辨識的影像,但是辨識錯誤可就露餡了!直接就會「噹」你!

我的態度是盡力提升我的辨識能力,也盡量與客戶溝通,不但會解釋辨識錯誤的原因,也會詳細說明改善的方式,談這些技術問題時,我向來不會胡扯甚麼商業機密之類的鬼話!就是實話實說,你願意聽多少我就說多少!甚至客戶對辨識邏輯的意見如果有道理,我還會直接將他們的邏輯加到我的程式之中!

如下這個案例,我原來的辨識核心(有時候)居然會將6辨識成8,當然直接被「噹」得很慘!但是請大家仔細看,左邊是原圖,右上方是幾何修正之後的車牌影像,右下方的三個小影像,最上面的是我好不容易一路從原圖上抓下來的目標,下面是我的系統86的標準字模。

客戶直覺的反應是:你沒看到6的右上方好大一個洞嗎?看有洞沒洞就知道不是8了!怎麼這樣還會認錯?太離譜了!他的基本概念是對的,我的軟體或其他的辨識系統一定都會有類似的辨識機制,我稱之為特徵辨識,就是除了比對字模型狀,也會偵測一些特徵,包括右上方有沒有洞?但是如何整合特徵與字模辨識的分數就有學問了!

如果我一看到有洞就直接排除是8,那麼右上方略為磨損的8就直接被淘汰了!即使它在字模比對上分數高達98%8也沒有機會被辨識成8了!最後出線的可能是符合度很低的另一個字!這樣我還是會被罵的!簡單說,太偏重特徵辨識的話,用立可白塗一條細細的線就可以破解我的辨識系統了

所以如何平衡的使用字模比對符合度,與特徵辨識的結果就是「智慧」判斷的關鍵了!基本上我是以字模比對符合度為基礎,特徵辨識成為加權分數,用來提高或降低某些答案的分數,但是要加權多少?就是統計學了!沒有絕對答案的!機器學習碰到這種狀況就是用大量資料,調整到一個答對率最高的比率,我也是這樣的。只是這種邊緣案例很少,真要訓練到很準,再多資料都不夠的!

但是我的客戶說,那就先看某字是不是又像8又像6時,再呼叫特徵來決定嘛!也就是字模比對時要記得誰是第一名?誰是第二名?如果68剛好是前兩名,而且分數很接近時,再看右上方有洞沒洞決定是68就不會誤判了!我也覺得很有道理,其實類似的特殊例外處理我常常作的!

但是這種例外處理有一點像是頂樓加蓋的違章建築,如果共用程序足以明確分辨答案時就盡量不要用,不然程式會越來越亂很難維護。以這個例子來說,68的分差其實只有不到一趴!確實有需要做額外的條件檢視加權,不然就像走在獨木橋上,掉下去的機率還蠻大的,即使是違章建築也應該加蓋的。

其實追究這個案例中86會如此接近的罪魁禍首,是這張車牌的6本身就不符合標準字型,正常的六碼車牌的6圈圈部分較小,這個車牌的6圈圈太大了!以致中間的橫線偏高了,在比對6的字模時這個筆畫對不到,對8的字模時卻對到十足,所以原始分數8就比6大好多了!特徵加減分之後還是8略高一點點,就被認定是8了!

客戶建議的機制如果在適當前提條件下檢視確認,當然就不可能誤認了!其實有另一種方式可以解決類似問題,我也用過,就是為這個「例外的6字型」多做一個字模!就是會有不只一個的6字模,用比對符合度較高的作為6的符合度!不然台灣車牌六碼與七碼的字型差這麼多,我怎麼可能都不會認錯?

但是這又說到了我辨識台灣車牌的一個痛點!台灣六碼車牌的字型根本沒有公告資訊!如果你找得到我請你吃牛排!高檔的那種!所以字型並不穩定,例外還蠻多的!如果字型差一點就多做一個字模我會做不完,辨識時間也會拉得太長!

而且大家注意到了嗎?從原始的歪斜車牌作幾何修正到上圖右上的標準車牌影像過程中,也存在著變數,如果我的幾何校正因為車牌影像不完美,做得差了一點點,字元目標就會有點歪,所以將字模做得很準也未必一定有用,還是必須輔以特徵辨識才能得到較穩定正確的結果。

我其實老是會聽到一些人說哪一家的辨識系統幾乎從來不會錯!意思是說我怎麼努力做都跟不上「先進團隊」的!但是基本上我不太相信有永遠都會對的演算法可以面對這麼複雜的真實世界,如果真有其他廠牌怎麼用都比我的好,那我就會改做別的生意,也建議客戶改買他們的產品!我這邊呢?只要還有人買,就會繼續研發精進的。

有誰推薦more
全站分類:心情隨筆 工作職場
自訂分類:教育學習

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