最後還有比較常見的就是細粒度分類,就是可能都屬於一個大類,但是細分下來,就存在細微的差異,細粒度分類也是圖像分類識別裏的一個分支,比較常見的分類就是對 狗,鳥,以及飛機的各種型號的分類,這類問題就是類間差異太小。
所以總的來說,影響分類識別的因素可以歸結為三個方面:
第一種因素,就是比較常見的基於圖像本身的一些因素,比如光照,形變,尺度,模糊等等。
第二種因素,就是類內差異太大,比如椅子,桌子,雖然都叫椅子,桌子,可是形態各異。
第三種因素,就是類間差異太小,最常見的就是細粒度分類。
第一種因素,可以說是所有分類識別問題都會經常遇到的,這是因為真實環境就是各種各樣的;第二種因素,很多時候都是因為類別定義的問題,人類有的時候,分類並不是基於物體的形狀或者樣子,而是基於功能,這種基於功能的抽象的類別定義,讓分類模型對分類對象的理解更加困難;第三種因素,是屬於細粒度分類的問題。對於後面兩種因素,我們這裡不做討論,我們只討論第一種因素對分類識別的影響。
我們考慮最常見的分類情況,比如對常見交通工具以及各種常見動物的分類等等,真實的自然場景總是複雜多變的,光線有強有弱,形狀也會有各種變化,因為換個視角觀察,同一個物體呈現在圖像上的形狀也發生了變化,尺度有大有小,因為拍攝的遠近距離不同,同一個物體呈現在圖像上的大小也會不同,更不用說模糊,遮擋等因素,所以真實的場景就是包含了各種可能。
我們再來回想一下,分類識別模型的訓練及預測, 一般來說,就是給定一個訓練集,我們在這個訓練集上訓練了一個模型,然後將這個模型用在測試集上進行預測,計算出一個準確率,然後就宣稱自己的模型可以在這個測試集上達到多少多少的準確率。相信經常看 paper 的人就會發現,這是一個非常似曾相識的套路。
其實,很多模型,換一個數據集,哪怕還是同樣的類別,性能立馬就會大打折扣,這個對於人類來說,會覺得不可思議,還是同樣的狗,為什麼換幾張圖,狗就不是狗了,而是貓或者其他什麼匪夷所思的東西,所以說,模型在某些方面的 「聰明」 和 「愚蠢」 經常是同時存在的。
模型的不穩定,或者不夠 robust,是目前分類識別中最常遇到的問題,我們經常會看到,對某張圖稍微修改幾個像素的值,這張圖在模型眼裡就已經千差萬別了。人類的視覺感知,相對來說,會穩定的多。
如果仔細分析,就會發現,分類本質上還是一個 mapping 的過程,從高維的圖像空間映射到高維的特徵空間,然後再映射到標籤空間,網路經過一系列複雜的映射,將同一類的圖像聚集到一起。
在真實的自然世界中,同一類的圖像,在特徵空間往往很難最終聚成某一個點,而是會散佈在某個高維空間的某個區域裏,而不同類的圖像,形成不同的區域,彼此理論上應該是沒有混疊的,所以我們會說類內距離和類間距離的概念。類內距離要儘可能的小,類間距離要儘可能的大,所以網路的學習過程,其實就是一個對圖像特徵重新進行分佈的過程。
雖然我們希望所有的圖像,都能夠在高維空間分開,但是實際上,不同類的區域之間多少總會有重疊,這就造成了我們看到有些圖像總是會被分錯,因為在特徵空間,這些圖像的特徵已經是混在一起了。
所以說,圖像分類問題,本質上還是一個數據擬合的過程,而在真實世界裡,自然圖像不可能會完美地在高維空間裏形成一個個彼此沒有混疊的區域,所以總是會有被分錯的情況。我們尋找的是錯誤率最低的那個分界面。
而人類的視覺感知,比 CNN 這些模型要魯棒的多,因為人類的視覺感知,不是簡單的一個函數映射,而是經過了漫長的進化演化而來的,融合了目標檢測,背景過濾,聯想,決策,推理等等各種因素,交織在一起的一個非常精細的智能系統。不是一個簡單的 CNN 網路就能輕易替代的,目前的分類模型,可能會在某個非常細化的領域,識別水平會表現很好,可是這些分類模型都很 「單一」,無法將這種認知能力遷移到其他的地方。
圖片來源於:
2018_IJCV_Deep Learning for Generic Object Detection A Survey
推薦閱讀: