因為影像左右相反,導致識別系統軟體專案失敗的例子
我最近聽到一件失敗的軟體專案例子。內政部某單位,建了一套基於生物特徵辨識的身份識別與出入管制系統。這個系統會收集一般人的臉部與指紋特徵,建立特徵資料庫。並結合門禁與監視器設備,管制人員出入。聽說還會與走道的監視鏡頭結合,隨時識別進出人員的身份。簡單地說,從你進入該單位管轄區域之後,你都一直處於被識別的狀態,直到你離開為止。一但區域內監視器中的人員影像,被識別為黑名單人員,或是沒有進入記錄,都會通報管理人員。
這種系統,可以說是小型的天眼系統,或說是人肉搜索系統。不但錄影,還會識別身份。多少都會觸及人民隱私權的議題。不過這不是本文重點,就不多談。
這個軟體專案的失敗原因,並不是出在看起來技術含量很高的生物特徵識別軟體。你想想,好幾年前就有筆記型電腦(IBM ThinkPad)內建指紋識別系統。現在連智慧型手機,都可以安裝人臉辨識軟體。如果你對人臉辨識有興趣,還有一套名叫 OpenCV 的開放源碼庫可用;基於 BSD 授權,完全沒有任何商用化阻礙。生物特徵識別的演算法有很高的技術門檻不假,但相關的軟體程式也已步入消費性產品的應用領域,相當成熟了。開發這類的應用軟體的門檻並不高,專案也不是因為寫不出軟體而失敗。
說來好笑,軟體失敗的原因出在監視鏡頭上。你或許會想不論是 IPCam 還是 WebCam,不都是很成熟的產品了,電子材料行一抓一大把的東西,也會搞不定?難不成是用什麼特殊規格的監視鏡頭嗎?但也不是,聽說就是很普通的 IPCam 監視鏡頭,一隻五千元左右的貨色,足以應付臉部識別工作。但是有一個特異點,就是那些鏡頭安裝時,全部被設定為影像左右對調。匪夷所思。
影像左右對調,表示傳給臉部辨識系統的影像全是左右相反的。但軟體可沒辦法分清左右,所以它取到的人臉特徵也全是相反的。本來在左邊臉上的痣,變成在右邊。本來左眼大、右眼小的人,變成右眼大、左眼小。換句話說,只要你拿正常的影像或是照片傳給那套系統,全都不能正確識別。
你可別認為分別左右是件簡單的事。根據生物學的研究,生物對左右的識別能力比上下的識別能力弱上許多,需要透過訓練才能強化。十九世記的一些軍事文獻中也記載,訓練文盲軍隊時,第一件事就是要訓練他們分別左右腳。以生活週遭的實例來說,如果單獨拿一張左右相反的照片給你看,除非你正拿著照片站在實景之前比對,否則大多數人都不會發現左右相反。就算照片中的背景是非常熟悉的地方,第一時間也只會覺得有點怪怪的。這個軟體專案就在這種沒人發覺影像左右相反的情形下,持續運作。就連驗收時都沒發現。
驗收時都沒發現,看似荒謬但就是發生了。因為這個案子就失敗在驗收時用的也是同一組鏡頭。就好像你請一位木工師傅做桌子,完工後要檢查長寬高時,卻又拿著木工師傅的尺去量。再怎麼量,尺寸都不會錯。
這套系統失去了共用性與擴充性,只能運用在現有裝置的區域中。搞不好連維修也有問題,像是更換監視鏡頭時,若忘了設定影像左右對調,那這隻鏡頭的影像就不能被正常識別。若想要擴充到一般的手持裝置,讓管理人員可以拿著手持裝置識別人員也是有難度。它的特徵資料庫也不能提供給其他需要識別人員身份的資料系統使用;與其配合它的相反特徵資料,不如自己重新建一個正常的算了。
撇開隱私權的公民議題,純以技術觀點來看,這套特徵識別系統就算還在運作,卻是不廢也殘啊。聽說還是幾千萬的軟體標案。我們繳的稅就這樣浪費掉了。
這是哪個單位哪個專案,我也不清楚。但我能清楚說出的是,從軟體品質管理的角度來看,硬體輸入設備這邊的查核工作顯然是個盲點。尤其是資料輸出結果還是通過率時,更難發覺。碰到辨識不符合的情形,我們的反應是重新取樣,或者調整辨識演算參數,又或是程式bug;不會想到是影像左右相反。我個人在寫軟體的測試案例時,也很少會想到這一方面。當慎之。
樂多舊回應