當訓練好的圖像分類器遇到了訓練數據里不存在的類別的圖像時,顯然它會給出離譜的預測。那么我們應該如何改進分類器、如何克服這個問題呢?
老實說,這真的是領域內的一個老大難問題,沒人能給出完美的答案。Jetpac(現被谷歌收購) CTO、蘋果畢業生、TensorFlow團隊成員Pete Warden 在個人博客中寫下了他的一些個人思考。
幾天前,正與我合作的 Plant Village團隊向我提出了一個他們正在開發的應用程序(app)中遇到的問題。他們用 app 檢測植物所患的疾病。當它面對植物的葉子時,app能夠給出很好的分類結果,然而如果你讓 app處理電腦鍵盤的圖片,它會認為這是一種受損了的植物。如下圖。
左圖:AWDamage: 100%;右圖:AWDamage: 98%
既滑稽又合理
對于計算機視覺研究者們來說,這樣的結果并不令人意外。但對于大多數其他人來說,這還是令人十分震驚的。所以我想解釋為什么會發生這種情況,以及我們可以對此做些什么。
作為人類,我們習慣于對我們看到的周圍世界中的任何事物進行分類。自然而然地,我們也希望機器具有相同的能力。然而,大多數模型僅僅被訓練用來識別非常有限的物體集合,例如 ImageNet競賽中的 1,000種物體。至關重要的是,訓練過程假設模型面對的每個樣本一定都是屬于這些類別的其中一種物體,而且預測結果也在這個集合的范圍內。模型不能選擇給出「我不知道!」這樣的預測結果,也沒有訓練數據會幫助分類器學到這樣的預測結果。對于科學研究來說,這樣的簡化處理是很有意義的,但是當我們在現實世界中使用這些最終得到的模型時還是會引起一些問題。
回想起我在 Jetpac工作的日子,我們很難說服人們相信這個具有開創性的 AlexNet模型是一個巨大的突破。因為每當我們把運行著 AlexNet的用于演示的手機給測試者使用時,他們總會將自己的臉讓手機識別,而手機的預測結果往往是「氧氣面罩」或「安全帶」之類的東西。這是因為 ImageNet競賽數據集中的物體不包括任何人的標簽,但是大多數帶有面具或安全帶標簽的圖片都同時包含了人的面孔和標簽對應的物體。另一個令人尷尬的錯誤是,當人們把手機對準一個盤子時,它給出的預測結果竟然是「馬桶座」!這是因為在初始的類別中沒有盤子,而外形特征最接近的白色圓形物體是一個馬桶。
漸漸地,我認為這是一個「開放世界」與「封閉世界」的問題。我們假設模型所要面對的物體在有限的范圍內,從而訓練和評估模型。然而,一旦模型走出實驗室,被用于現實世界的種種應用,這樣的假設就不成立了。用戶會根據這些模型面對任意放在它們面前的物體的預測結果來評判它們的性能,無論這些物體是否在訓練集中。
那么,解決方案是什么呢?
不幸的是,我不知道有什么簡單的方法可以解決這個問題,但是我已經看到了目前有一些策略是對此有所幫助的。顯然,我們可以從向訓練數據添加一個「未知」類開始處理該問題。而壞消息是,這樣做會引發一連串其它的問題:
「未知」類應該包含怎樣的樣本?可能屬于該類的自然圖像無窮無盡,所以你應該如何選擇哪些圖片應該被納入該類?
在「未知」類中,每種不同類別的物體需要包含多少?
對于那些看起來和你重點關注的類非常相似的未知對象,你應該做些什么?例如,添加一個不在 ImageNet的 1,000類物體中,而看起來幾乎完全相同的品種的狗,可能會使許多本應該正確匹配的物體被迫分類到未知類中。
在訓練數據中需要讓未知類的樣本占多大的比重?
最后一點實際上涉及到了一個更廣闊的問題。你從圖像分類網絡中的到的預測值并不是概率。它們假設你看到任何特定類的概率等于該類在訓練數據中出現的頻率。如果你用一個分類里包含企鵝的動物分類器檢測亞馬遜叢林中的動物,你就會遇到這個問題,因為(幾乎)所有看到企鵝的事件都會是假正例誤報(false positive,顯然這里是不會出現企鵝的,所以當模型認為自己看到了企鵝的時候一定是錯誤的)。即使是對于美國城市中的狗的種類,罕見的品種在 ImageNet訓練數據中出現的次數也要比在一個寵物狗公園中多,所以他們會被過度描述為假正類。通常的解決方案是弄清在計算過程中你將面臨的先驗概率,然后利用它們將校準值應用到網絡的輸出中,從而獲得更接近真實概率的結果。
在實際的應用程序中,從整體上幫助解決該問題的主要策略是:將模型的適用范圍限制在「應用程序將面對的物體與模型的訓練數據匹配」的情況。要做到這一點,一個簡單的方法就是對產品進行設計。你可以創建一個用戶界面,指引人們在運行分類器之前確保攝像頭畫面中已經出現了要分類的目標,這和那些要求你對支票或其他文檔進行拍照的應用程序經常做的是一樣的。
稍微復雜一點的方案是,你可以編寫一個獨立的圖像分類器,它試圖去識別那些那些主圖像分類器不能識別的情況。這和添加一個單一的「未知」類是不同的,因為它的作用更像一種級聯操作,或者用做一個詳細的模型前的過濾器。在識別農作物患病情況的例子中,視覺上的操作環境足夠獨特,所以只需要訓練一個訓練一個模型來區分葉子和隨機選擇的其他圖片。這些照片之間有足夠的相似性,而門模型至少應該能夠識別出圖片是否是在不支持的場景中拍攝的。該門模型將在運行完整的圖像分類器之前運行,如果它沒有檢測到一些看起來像是植物的東西,它就會提前跳出程序并且返回表明沒有發現任何植物的錯誤信息。
要求你對信用卡拍照或執行其它光學字符識別(OCR)過程的應用程序通常會混合使用屏幕上的方向和檢測模糊性或不協調性,從而指導用戶拍攝可以成功處理的照片。而一個用于回答「那是樹葉嗎?」這樣的問題的獨立圖像分類模型則是這種接口模式的簡單版本。
本文給出的可能并不是一個令人滿意的答案,但是一旦你把機器學習技術引入到帶有限制的研究問題之后,它們就會反應出用戶期望目標的混亂。在一個人對一個物體的認知過程中,存在很多常識和外部知識,而我們在經典的圖像分類任務中并沒有獲取這些知識。為了獲得滿足用戶期望的結果,我們必須圍繞我們的模型設計一個完整的系統,這個系統能夠理解它們將被部署到的環境,并切不僅僅基于模型的輸出作出明智的決策。
-
分類器
+關注
關注
0文章
152瀏覽量
13209 -
圖像分類
+關注
關注
0文章
93瀏覽量
11944 -
計算機視覺
+關注
關注
8文章
1700瀏覽量
46074
原文標題:面對未知分類的圖像,我要如何拯救我的分類器
文章出處:【微信號:CAAI-1981,微信公眾號:中國人工智能學會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論