Contents ...
udn網路城邦
從一張困難的香港車牌辨識談我的辨識哲學
2018/08/02 05:34
瀏覽1,883
迴響0
推薦12
引用0

我常說我的影像辨識技術是「野生」的!我不是科班出身,雖然經過自學也都知道了「正統」影像辨識學者們的大多數技術,學院派喜歡標榜技術本身的優劣價值,甚至設下標準課程,讓研究生一招一招的學習,好像學的方法越多你就越厲害?所謂專家的身分地位也是看你「懂得多少」技術而定?但是在我的觀點,徒法不足以自行,技術就是技術,肯學就會,但學會再多知識技術,如果不能解決實際的問題,你的價值還是零!

真實世界的問題各式各樣,從簡單到小學生都會的,到教授博士都解決不了的都有,每一個問題都必須個案分析,真正理解問題,掌握問題才可能找到最正確有效率的解法!如果仗著我「知道很多方法」就一一嘗試,總有一種可以解決問題,這是愚蠢至極的想法!其實也是很多研究生的論文作很久的主因,美其名曰學習實作各種方法論,其實就是抓瞎!方法那麼多哪裡試得完?還不就是做了幾種,一兩年時間耗掉就結案畢業了!

因為你需要的正確解決方案通常不是一個程序,而是好幾個程序,也就是好幾個不同方法的排列組合!每一種方法內的每一個門檻參數也會影響到下一步驟的處理,只要這複雜程序中的任何一個環節不合理,答案就是錯的!如果你的問題邊界是明確的,像是下圍棋的規則,那麼你可以利用電腦資源暴力運算,遍歷所有可能的排列組合,找到最佳的答案!這就是現在所謂機器學習的精神

大家看到這種技術在下棋方面的成功,就對它充滿了浪漫的憧憬,其實面對真實世界的問題,幾乎沒有一個是邊界條件很明確的!要靠大量計算統計得到明確的唯一答案,像車牌辨識這樣的結果,根本是不可能的!所以我並不看好機器學習在影像辨識的領域會有好的表現,不然你應該已經看到很多機器學習版的優質車牌辨識系統了!

這種車辨軟體真的已經有了!但是辨識率還遠不如傳統方式研發的軟體,執行速度效能更是非常的差,因為他們基本上是像無頭蒼蠅亂飛的!想偷懶不去研究個案辨識成敗的真正原因,當然無法精確地解決問題,他們能夠提升辨識率的唯一方法就是「讓電腦勤快一點」,多嘗試不同算法與門檻值,結果當然就是很慢!或者必須靠超級電腦來追上速度,你家錢多到沒地方花嗎?

其實即使是傳統的車牌辨識研發,對於個案的針對性例外處理應該也不像我這麼認真!總覺得建立「一個」完美的程序,合乎「學術」角度的優美與規範還是很重要的。但是我不這麼想!問題就是問題,我們的所有努力應該跟隨的是我們想解決的問題,以影像辨識來說,如果一時想不出標準的影像辨識解法,就應該模仿生物的視覺機制,或參考其他常識!解決問題才是目標,不一定要拘泥於甚麼方法論,姿勢不重要,擊倒對手才重要!

下面就是我剛剛解決的一個問題,過程足以說明我的影像辨識哲學!想偷學的人盡量學!因為我知道很少人這麼作,即使你今天開始改弦易轍,想學我的想法與做法,要跟上我的腳步都還需要很久,到時我可能都退休了!你屆時如果名利雙收,我只會在一旁鼓掌,與有榮焉,沒甚麼值得計較的。

    

從第一張圖開始,看起來相當清晰的車牌我居然辨識出很離譜的答案,六個字的車牌居然只剩三個字!看圖二就知道,這是傳統的影像二值化程序難以避免的結果,下排的0字在影像本身的角度來看,確實與車牌外部的陰影連成一氣,我自然從目標大小就不會認為它是一個字元了!

如前文「侵入性的影像辨識資料處理」所述,我會利用已經找到的107三個可靠字元目標上下緣作切線,確實可以將下排的0字經過二值化圖的切割後辨識出來(如圖四)。但是上排的BC通通都與車牌上緣的陰影相連,即使1007都正確了,我還是看不出獨立的BC字元,怎麼辦?

此時導向正確答案需要用到的邏輯已經不再只是影像辨識本身的技術了!首先我根據香港車牌的格式慣例,高度懷疑1007根本不是個合理的車牌號碼,它應該還有上排的字元!所以我從1007往上搜尋,如果它真的有上排字,最可能的車牌邊界會在哪裡?如果可以鎖定車牌的上邊界就直接在那個位置作黑白圖上的切線!

看到最後一張圖了嗎?我作的切線擦掉了車牌上緣的部分陰影後,BC字元目標就獨立浮現出來了!此時再度嘗試組合車牌字元,就可以得到正確的BC1007的結果了!當然這些程序必須在嚴謹的條件前提下才能施作,不要沒事亂切,將原本已經辨識正確的車牌切成不合理的結果,也就是沒病就不要亂吃藥!更不能隨便開刀!

我真的很想推廣這種影像辨識的理念!就是以物理的觀察思考為軸心,從人類視覺邏輯去找解決方案,而不是以數學演算法來領導辨識流程設計,更不屑於使用嘗試錯誤的機器學習愚蠢理念來開發軟體。以這個例子來看,我參考的甚至包括非物理的車牌格式規範,所以影像辨識是一個在真實世界解決問題的綜合性工作,除了專業你也必須有常識!

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

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