【技術綜述】你真的瞭解圖像分類嗎?

作者 | 言有三

編輯 | 言有三

圖像分類是計算機視覺中最基礎的任務,基本上深度學習模型的發展史就是圖像分類任務提升的發展歷史,不過圖像分類並不是那麼簡單,也沒有被完全解決。

01

什麼是圖像分類

圖像分類是計算機視覺中最基礎的一個任務,也是幾乎所有的基準模型進行比較的任務。從最開始比較簡單的10分類的灰度圖像手寫數字識別任務mnist,到後來更大一點的10分類的 cifar10和100分類的cifar100 任務,到後來的imagenet 任務,圖像分類模型伴隨着數據集的增長,一步一步提升到了今天的水平。現在,在imagenet 這樣的超過1000萬圖像,超過2萬類的數據集中,計算機的圖像分類水準已經超過了人類。

不過,不要把圖像分類任務想的過於簡單。

圖像分類顧名思義就是一個模式分類問題,它的目標是將不同的圖像,劃分到不同的類別,實現最小的分類誤差。總體來說,對於單標籤的圖像分類問題,它可以分爲跨物種語義級別的圖像分類,子類細粒度圖像分類,以及實例級圖像分類三大類別

1.1 跨物種語義級別的圖像分類

所謂跨物種語義級別的圖像分類,它是在不同物種的層次上識別不同類別的對象,比較常見的包括如貓狗分類等。這樣的圖像分類,各個類別之間因爲屬於不同的物種或大類,往往具有較大的類間方差,而類內則具有較小的類內誤差。

下面是cifar10 中的10個類別的示意圖,這就是一個典型的例子。

cifar包含10個類別,分別是airplane,automobile,bird,cat,deer,dog,frog,horse,ship,truck,其中airplane,automobile,ship,truck都是交通工具,bird,cat,deer,dog,frog,horse都是動物,可以認爲是兩個大的品類。而交通工具內部,動物內部,都是完全不同的物種,這些都是語義上完全可以區分的對象,所以cifar10的分類任務,可以看作是一個跨物種語義級別的圖像分類問題。類間方差大,類內方差小。

1.2 子類細粒度圖像分類

細粒度圖像分類,相對於跨物種的圖像分類,級別更低一些。它往往是同一個大類中的子類的分類,如不同鳥類的分類,不同狗類的分類,不同車型的分類等。

下面以不同鳥類的細粒度分類任務,加利福尼亞理工學院鳥類數據庫-2011,即Caltech-UCSD Birds-200-2011爲例。這是一個包含200類,11788張圖像的鳥類數據集,同時每一張圖提供了15個局部區域位置,1個標註框,還有語義級別的分割圖。在該數據集中,以woodpecker爲例,總共包含6類,即American Three toed Woodpecker,Pileated Woodpecker,Red bellied Woodpecker,Red cockaded Woodpecker,Red headed Woodpecker,Downy Woodpecker,我們取其中兩類各一張示意圖查看如圖。

從上圖可以看出,兩隻鳥的紋理形狀都很像,要像區分只能靠頭部的顏色和紋理,所以要想訓練出這樣的分類器,就必須能夠讓分類器識別到這些區域,這是比跨物種語義級別的圖像分類更難的問題。

1.3 實例級圖像分類

如果我們要區分不同的個體,而不僅僅是物種類或者子類,那就是一個識別問題,或者說是實例級別的圖像分類,最典型的任務就是人臉識別。

在人臉識別任務中,需要鑑別一個人的身份,從而完成考勤等任務。人臉識別一直是計算機視覺裏面的重大課題,雖然經歷了幾十年的發展,但仍然沒有被完全解決,它的難點在於遮擋,光照,大姿態等經典難題,讀者可以參考更多資料去學習。

02

圖像分類模型

圖像分類任務從傳統的方法到基於深度學習的方法,經歷了幾十年的發展。這裏只關注於深度學習的進展,下面重點講述幾個重要的節點。

2.1 MNIST與LeNet5

在計算機視覺分類算法的發展中,MNIST 是首個具有通用學術意義的基準。這是一個手寫數字的分類標準,包含 60000 個訓練數據,10000 個測試數據,圖像均爲灰度圖,通用的版本大小爲 28×28。

在上個世紀90年代末本世紀初,SVM and K-nearest neighbors方法被使用的比較多,以SVM爲代表的方法,可以將MNIST分類錯誤率降低到了0.56%,彼時仍然超過以神經網絡爲代表的方法,即LeNet系列網絡。LeNet網絡誕生於1994年,後經過多次的迭代纔有了1998年的LeNet5,是爲我們所廣泛知曉的版本。

這是一個經典的卷積神經網絡,它包含着一些重要的特性,這些特性仍然是現在CNN網絡的核心。

  • 卷積層由卷積,池化,非線性激活函數構成。從1998年至今,經過20年的發展後,卷積神經網絡依然遵循着這樣的設計思想。其中,卷積發展出了很多的變種,池化則逐漸被帶步長的卷積完全替代,非線性激活函數更是演變出了很多的變種。
  • 稀疏連接,也就是局部連接,這是以卷積神經網絡爲代表的技術能夠發展至今的最大前提。利用圖像的局部相似性,這一區別於傳統全連接的方式,推動了整個神經網絡技術的發展。

雖然LeNet5當時的錯誤率仍然停留在0.7%的水平,不如同時期最好的SVM方法,但隨着網絡結構的發展,神經網絡方法很快就超過了其他所有方法,錯誤率也降低到了0.23%,甚至有的方法已經達到了錯誤率接近0的水平。

2.2 ImageNet與AlexNet

在本世紀的早期,雖然神經網絡開始有復甦的跡象,但是受限於數據集的規模和硬件的發展,神經網絡的訓練和優化仍然是非常困難的。MNIST和CIFAR數據集都只有60000張圖,這對於10分類這樣的簡單的任務來說,或許足夠,但是如果想在工業界落地更加複雜的圖像分類任務,仍然是遠遠不夠的。

後來在李飛飛等人數年時間的整理下,2009年,ImageNet數據集發佈了,並且從2010年開始每年舉辦一次ImageNet大規模視覺識別挑戰賽,即ILSVRC。ImageNet數據集總共有1400多萬幅圖片,涵蓋2萬多個類別,在論文方法的比較中常用的是1000類的基準。

在ImageNet發佈的早年裏,仍然是以SVM和Boost爲代表的分類方法佔據優勢,直到2012年AlexNet的出現。

AlexNet是第一個真正意義上的深度網絡,與LeNet5的5層相比,它的層數增加了3層,網絡的參數量也大大增加,輸入也從28變成了224,同時GPU的面世,也使得深度學習從此進行GPU爲王的訓練時代。

AlexNet有以下的特點:

  • 網絡比LeNet5更深,包括5個卷積層和3個全連接層。
  • 使用Relu激活函數,收斂很快,解決了Sigmoid在網絡較深時出現的梯度彌散問題。
  • 加入了Dropout層,防止過擬合。
  • 使用了LRN歸一化層,對局部神經元的活動創建競爭機制,抑制反饋較小的神經元放大反應大的神經元,增強了模型的泛化能力。
  • 使用裁剪翻轉等操作做數據增強,增強了模型的泛化能力。預測時使用提取圖片四個角加中間五個位置並進行左右翻轉一共十幅圖片的方法求取平均值,這也是後面刷比賽的基本使用技巧。
  • 分塊訓練,當年的GPU計算能力沒有現在強大,AlexNet創新地將圖像分爲上下兩塊分別訓練,然後在全連接層合併在一起。
  • 總體的數據參數大概爲240M,遠大於LeNet5。

2.3 分類模型的逐年進步

2013年ILSVRC分類任務冠軍網絡是Clarifai,不過更爲我們熟知的是zfnet。hinton的學生Zeiler和Fergus在研究中利用反捲積技術引入了神經網絡的可視化,對網絡的中間特徵層進行了可視化,爲研究人員檢驗不同特徵激活及其與輸入空間的關係成爲了可能。在這個指導下對AlexNet網絡進行了簡單改進,包括使用了更小的卷積核和步長,將11x11的卷積核變成7x7的卷積核,將stride從4變成了2,性能超過了原始的AlexNet網絡。

2014年的冠亞軍網絡分別是GoogLeNet和VGGNet。

其中VGGNet包括16層和19層兩個版本,共包含參數約爲550M。全部使用3×3的卷積核和2×2的最大池化核,簡化了卷積神經網絡的結構。VGGNet很好的展示瞭如何在先前網絡架構的基礎上通過簡單地增加網絡層數和深度就可以提高網絡的性能。雖然簡單,但是卻異常的有效,在今天,VGGNet仍然被很多的任務選爲基準模型。

GoogLeNet是來自於Google的Christian Szegedy等人提出的22層的網絡,其top-5分類錯誤率只有6.7%。

GoogleNet的核心是Inception Module,它採用並行的方式。一個經典的inception結構,包括有四個成分。1×1卷積,3×3卷積,5×5卷積,3×3最大池化,最後對四個成分運算結果進行通道上組合。這就是Inception Module的核心思想。通過多個卷積核提取圖像不同尺度的信息然後進行融合,可以得到圖像更好的表徵。自此,深度學習模型的分類準確率已經達到了人類的水平(5%~10%)。

與VGGNet相比,GoogleNet模型架構在精心設計的Inception結構下,模型更深又更小,計算效率更高。

2015年,ResNet獲得了分類任務冠軍。它以3.57%的錯誤率表現超過了人類的識別水平,並以152層的網絡架構創造了新的模型記錄。由於ResNet採用了跨層連接的方式,它成功的緩解了深層神經網絡中的梯度消散問題,爲上千層的網絡訓練提供了可能。

2016年依舊誕生了許多經典的模型,包括贏得分類比賽第二名的ResNeXt,101層的ResNeXt可以達到ResNet152的精確度,卻在複雜度上只有後者的一半,核心思想爲分組卷積。即首先將輸入通道進行分組,經過若干並行分支的非線性變換,最後合併。

在ResNet基礎上,密集連接的DenseNet在前饋過程中將每一層與其他的層都連接起來。對於每一層網絡來說,前面所有網絡的特徵圖都被作爲輸入,同時其特徵圖也都被後面的網絡層作爲輸入所利用。

DenseNet中的密集連接還可以緩解梯度消失的問題,同時相比ResNet,可以更強化特徵傳播和特徵的複用,並減少了參數的數目。DenseNet相較於ResNet所需的內存和計算資源更少,並達到更好的性能。

2017年,也是ILSVRC圖像分類比賽的最後一年,SeNet獲得了冠軍。這個結構,僅僅使用了“特徵重標定”的策略來對特徵進行處理,通過學習獲取每個特徵通道的重要程度,根據重要性去降低或者提升相應的特徵通道的權重。

至此,圖像分類的比賽基本落幕,也接近算法的極限。但是,在實際的應用中,卻面臨着比比賽中更加複雜和現實的問題,需要大家不斷積累經驗。

03

總結

雖然基本的圖像分類任務,尤其是比賽趨近飽和,但是現實中的圖像任務仍然有很多的困難和挑戰。如類別不均衡的分類任務,類內方差非常大的細粒度分類任務,以及包含無窮負樣本的分類任務。

  • 不是所有的分類任務,樣本的數量都是相同的,有很多任務,類別存在極大的不均衡問題,比如邊緣檢測任務。圖像中的邊緣像素,與非邊緣像素,通常有3個數量級以上的差距,在這樣的情況下,要很好的完成圖像分類任務,必須在優化目標上進行設計。
  • 雖然前面我們說過圖像分類可以分爲3大類,對於貓狗分類這樣的語義級別的問題,算法已經達到或超越人類專家水平,但是對於如何區分不同種類的貓這樣的細粒度分類問題,算法僅僅在某些數據集上勉強能突破90%,遠未超越人類專家,還有非常大的發展空間。
  • 另外前面所說的分類,全部都是單標籤分類問題,即每一個圖只對應一個類別,而很多的任務,其實是多標籤分類問題,一張圖可以對應多個標籤。多標籤分類問題,通常有兩種解決方案,即轉換爲多個單標籤分類問題,或者直接聯合研究。前者,可以訓練多個分類器,來判斷該維度屬性的是否,損失函數常使用softmax loss。後者,則直接訓練一個多標籤的分類器,所使用的標籤爲0,1,0,0…這樣的向量,使用hanmming距離等作爲優化目標。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章