天天看點

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

視覺/圖像重磅幹貨,第一時間送達

原文作者:張皓@知乎

本系列文章旨在直覺系統地梳理深度學習各領域常見概念與基本思想,使讀者對深度學習的重要概念與思想有一直覺了解,做到“知其然,又知其是以然”,進而降低後續了解論文及實際應用的難度。本系列文章力圖用簡練的語言加以描述,避免數學公式和繁雜細節。本文旨在介紹深度學習在計算機視覺領域四大基本任務中的應用,包括分類(圖a)、定位、檢測(圖b)、語義分割(圖c)、和執行個體分割(圖d)。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹
計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

計算機視覺(computer vision)簡介

計算機視覺旨在識别和了解圖像/視訊中的内容。其誕生于1966年MIT AI Group的"the summer vision project"。當時,人工智能其他分支的研究已經有一些初步成果。由于人類可以很輕易地進行視覺認知,MIT的教授們希望通過一個暑期項目解決計算機視覺問題。當然,計算機視覺沒有被一個暑期内解決,但計算機視覺經過50餘年發展已成為一個十分活躍的研究領域。如今,網際網路上超過70%的資料是圖像/視訊,全世界的監控攝像頭數目已超過人口數,每天有超過八億小時的監控視訊資料生成。如此大的資料量亟待自動化的視覺了解與分析技術。

計算機視覺的難點在于語義鴻溝。這個現象不僅出現在計算機視覺領域Moravec悖論發現,進階的推理隻需要非常少的計算資源,而低級的對外界的感覺卻需要極大的計算資源。要讓計算機如成人般地下棋是相對容易的,但是要讓電腦有如一歲小孩般的感覺和行動能力卻是相當困難甚至是不可能的。

語義鴻溝(semantic gap) 人類可以輕松地從圖像中識别出目标,而計算機看到的圖像隻是一組0到255之間的整數。

計算機視覺任務的其他困難:拍攝視角變化、目标占據圖像的比例變化、光照變化、背景融合、目标形變、遮擋等。

計算機視覺的頂級會議和期刊:頂級會議有CVPR、ICCV、和ECCV,此外ICLR也有不少計算機視覺論文。頂級期刊有IJCV和TPAMI。由于計算機視覺領域發展十分迅速,不論身處學術界或産業界,通過閱讀頂級會議和期刊論文了解計算機視覺的最近研究成果都十分必要。

卷積神經網絡(convolutional neural networks, CNN)

經典的多層感覺機由一系列全連接配接層組成,卷積神經網絡中除全連接配接層外,還有卷積層和彙合(pooling)層。

1、卷積層

為什麼要用卷積層輸入圖像通常很維數很高,例如,1,000×1,000大小的彩色圖像對應于三百萬維特征。是以,繼續沿用多層感覺機中的全連接配接層會導緻龐大的參數量。大參數量需要繁重的計算,而更重要的是,大參數量會有更高的過拟合風險。卷積是局部連接配接、共享參數版的全連接配接層。這兩個特性使參數量大大降低。卷積層中的權值通常被成為濾波器(filter)或卷積核(convolution kernel)。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

局部連接配接 在全連接配接層中,每個輸出通過權值(weight)和所有輸入相連。而在視覺識别中,關鍵性的圖像特征、邊緣、角點等隻占據了整張圖像的一小部分,圖像中相距很遠的兩個像素之間有互相影響的可能性很小。是以,在卷積層中,每個輸出神經元在通道方向保持全連接配接,而在空間方向上隻和一小部分輸入神經元相連。

共享參數 如果一組權值可以在圖像中某個區域提取出有效的表示,那麼它們也能在圖像的另外區域中提取出有效的表示。也就是說,如果一個模式(pattern)出現在圖像中的某個區域,那麼它們也可以出現在圖像中的其他任何區域。是以,卷積層不同空間位置的神經元共享權值,用于發現圖像中不同空間位置的模式。共享參數是深度學習一個重要的思想,其在減少網絡參數的同時仍然能保持很高的網絡容量(capacity)。卷積層在空間方向共享參數,而循環神經網絡(recurrent neural networks)在時間方向共享參數。

卷積層的作用 通過卷積,我們可以捕獲圖像的局部資訊。通過多層卷積層堆疊,各層提取到特征逐漸由邊緣、紋理、方向等低層級特征過度到文字、車輪、人臉等高層級特征。

卷積層中的卷積和數學教材中的卷積是什麼關系 基本沒有關系。卷積層中的卷積實質是輸入和權值的互相關(cross-correlation)函數,而不是數學教材中的卷積。

描述卷積的四個量 一個卷積層的配置由如下四個量确定。1. 濾波器個數。使用一個濾波器對輸入進行卷積會得到一個二維的特征圖(feature map)。我們可以用時使用多個濾波器對輸入進行卷積,以得到多個特征圖。2. 感受野(receptive field) F,即濾波器空間局部連接配接大小。3. 零填補(zero-padding) P。随着卷積的進行,圖像大小将縮小,圖像邊緣的資訊将逐漸丢失。是以,在卷積前,我們在圖像上下左右填補一些0,使得我們可以控制輸出特征圖的大小。4. 步長(stride) S。濾波器在輸入每移動S個位置計算一個輸出神經元。

卷積輸入輸出的大小關系 假設輸入高和寬為H和W,輸出高和寬為H'和W', 則H'=(H-F+2P)/S+1, W'=(W-F+2P)/S+1. 當S=1時,通過設定P=(F-1)/2, 可以保證輸入輸出空間大小相同。例如,3*3的卷積需要填補一個像素使得輸入輸出空間大小不變。

應該使用多大的濾波器 盡量使用小的濾波器,如3×3卷積。通過堆疊多層3×3卷積,可以取得與大濾波器相同的感受野,例如三層3×3卷積等效于一層7×7卷積的感受野。但使用小濾波器有以下兩點好處。1. 更少的參數量。假設通道數為D,三層3×3卷積的參數量為3×(D×D×3×3)=27D^2, 而一層7×7卷積的參數量為D×D×7×7=49D^2。2. 更多非線性。由于每層卷積層後都有非線性激活函數,三層3×3卷積一共經過三次非線性激活函數,而一層7×7卷積隻經過一次。

1×1卷積 旨在對每個空間位置的D維向量做一個相同的線性變換。通常用于增加非線性,或降維,這相當于在通道數方向上進行了壓縮。1×1卷積是減少網絡計算量和參數的重要方式。

全連接配接層的卷積層等效 由于全連接配接層和卷積層都是做點乘,這兩種操作可以互相等效。全連接配接層的卷積層等效隻需要設定好卷積層的四個量:濾波器個數等于原全連接配接層輸出神經元個數、感受野等于輸入的空間大小、沒有零填補、步長為1。

為什麼要将全連接配接層等效為卷積層 全連接配接層隻能處理固定大小的輸入,而卷積層可以處理任意大小輸入。假設訓練圖像大小是224×224,而當測試圖像大小是256×256。如果不進行全連接配接層的卷積層等效,我們需要從測試圖像中裁剪出多個224×224區域分别前饋網絡。而進行卷積層等效後,我們隻需要将256×256輸入前饋網絡一次,即可達到多次前饋224×224區域的效果。

卷積結果的兩種視角 卷積結果是一個D×H×W的三維張量。其可以被認為是有D個通道,每個通道是一個二維的特征圖,從輸入中捕獲了某種特定的特征。也可以被認為是有H×W個空間位置,每個空間位置是一個D維的描述向量,描述了對應感受野的圖像局部區域的語義特征。

卷積結果的分布式表示 卷積結果的各通道之間不是獨立的。卷積結果的各通道的神經元和語義概念之間是一個“多對多”的映射。即,每個語義概念由多個通道神經元一起表示,而每個神經元又同時參與到多個語義概念中去。并且,神經元響應是稀疏的,即大部分的神經元輸出為0。

卷積操作的實作 有如下幾種基本思路。1. 快速傅裡葉變換(FFT)。通過變換到頻域,卷積運算将變為普通矩陣乘法。實際中,當濾波器尺寸大時效果好,而對于通常使用的1×1和3×3卷積,加速不明顯。2. im2col (image to column)。im2col将與每個輸出神經元相連的局部輸入區域展成一個列向量,并将所有得到的向量拼接成一個矩陣。這樣卷積運算可以用矩陣乘法實作。im2col的優點是可以利用矩陣乘法的高效實作,而弊端是會占用很大存儲,因為輸入元素會在生成的矩陣中多次出現。此外,Strassen矩陣乘法和Winograd也常被使用。現有的計算庫如MKL和cuDNN,會根據濾波器大小選擇合适的算法。

2、彙合層

彙合層 根據特征圖上的局部統計資訊進行下采樣,在保留有用資訊的同時減少特征圖的大小。和卷積層不同的是,彙合層不包含需要學習的參數。最大彙合(max-pooling)在一個局部區域選最大值作為輸出,而平均彙合(average pooling)計算一個局部區域的均值作為輸出。局部區域彙合中最大彙合使用更多,而全局平均彙合(global average pooling)是更常用的全局彙合方法。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

彙合層的作用 彙合層主要有以下三點作用。1. 增加特征平移不變性。彙合可以提高網絡對微小位移的容忍能力。2. 減小特征圖大小。彙合層對空間局部區域進行下采樣,使下一層需要的參數量和計算量減少,并降低過拟合風險。3. 最大彙合可以帶來非線性。這是目前最大彙合更常用的原因之一。近年來,有人使用步長為2的卷積層代替彙合層。而在生成式模型中,有研究發現,不使用彙合層會使網絡更容易訓練。

圖像分類(image classification)

給定一張輸入圖像,圖像分類任務旨在判斷該圖像所屬類别。

1、圖像分類常用資料集

以下是幾種常用分類資料集,難度依次遞增。rodrigob.github.io/are_列舉了各算法在各資料集上的性能排名。

MNIST 60k訓練圖像、10k測試圖像、10個類别、圖像大小1×28×28、内容是0-9手寫數字。

CIFAR-10 50k訓練圖像、10k測試圖像、10個類别、圖像大小3×32×32。

CIFAR-100 50k訓練圖像、10k測試圖像、100個類别、圖像大小3×32×32。

ImageNet 1.2M訓練圖像、50k驗證圖像、1k個類别。2017年及之前,每年會舉行基于ImageNet資料集的ILSVRC競賽,這相當于計算機視覺界奧林匹克。

2、圖像分類經典網絡結構

基本架構 我們用conv代表卷積層、bn代表批量歸一層、pool代表彙合層。最常見的網絡結構順序是conv -> bn -> relu -> pool,其中卷積層用于提取特征、彙合層用于減少空間大小。随着網絡深度的進行,圖像的空間大小将越來越小,而通道數會越來越大。

針對你的任務,如何設計網絡? 當面對你的實際任務時,如果你的目标是解決該任務而不是發明新算法,那麼不要試圖自己設計全新的網絡結構,也不要試圖從零複現現有的網絡結構。找已經公開的實作和預訓練模型進行微調。去掉最後一個全連接配接層和對應softmax,加上對應你任務的全連接配接層和softmax,再固定住前面的層,隻訓練你加的部分。如果你的訓練資料比較多,那麼可以多微調幾層,甚至微調所有層。

LeNet-5 60k參數。網絡基本架構為:conv1 (6) -> pool1 -> conv2 (16) -> pool2 -> fc3 (120) -> fc4 (84) -> fc5 (10) -> softmax。括号中的數字代表通道數,網絡名稱中有5表示它有5層conv/fc層。當時,LeNet-5被成功用于ATM以對支票中的手寫數字進行識别。LeNet取名源自其作者姓LeCun。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

AlexNet 60M參數,ILSVRC 2012的冠軍網絡。網絡基本架構為:conv1 (96) -> pool1 -> conv2 (256) -> pool2 -> conv3 (384) -> conv4 (384) -> conv5 (256) -> pool5 -> fc6 (4096) -> fc7 (4096) -> fc8 (1000) -> softmax。AlexNet有着和LeNet-5相似網絡結構,但更深、有更多參數。conv1使用11×11的濾波器、步長為4使空間大小迅速減小(227×227 -> 55×55)。AlexNet的關鍵點是:(1). 使用了ReLU激活函數,使之有更好的梯度特性、訓練更快。(2). 使用了随機失活(dropout)。(3). 大量使用資料擴充技術。AlexNet的意義在于它以高出第二名10%的性能取得了當年ILSVRC競賽的冠軍,這使人們意識到卷積神經網絡的優勢。此外,AlexNet也使人們意識到可以利用GPU加速卷積神經網絡訓練。AlexNet取名源自其作者名Alex。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

VGG-16/VGG-19 138M參數,ILSVRC 2014的亞軍網絡。VGG-16的基本架構為:conv1^2 (64) -> pool1 -> conv2^2 (128) -> pool2 -> conv3^3 (256) -> pool3 -> conv4^3 (512) -> pool4 -> conv5^3 (512) -> pool5 -> fc6 (4096) -> fc7 (4096) -> fc8 (1000) -> softmax。^3代表重複3次。VGG網絡的關鍵點是:(1). 結構簡單,隻有3×3卷積和2×2彙合兩種配置,并且重複堆疊相同的子產品組合。卷積層不改變空間大小,每經過一次彙合層,空間大小減半。(2). 參數量大,而且大部分的參數集中在全連接配接層中。網絡名稱中有16表示它有16層conv/fc層。(3). 合适的網絡初始化和使用批量歸一(batch normalization)層對訓練深層網絡很重要。在原論文中無法直接訓練深層VGG網絡,是以先訓練淺層網絡,并使用淺層網絡對深層網絡進行初始化。在BN出現之後,伴随其他技術,後續提出的深層網絡可以直接得以訓練。VGG-19結構類似于VGG-16,有略好于VGG-16的性能,但VGG-19需要消耗更大的資源,是以實際中VGG-16使用得更多。由于VGG-16網絡結構十分簡單,并且很适合遷移學習,是以至今VGG-16仍在廣泛使用。VGG-16和VGG-19取名源自作者所處研究組名(Visual Geometry Group)。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

GoogLeNet 5M參數,ILSVRC 2014的冠軍網絡。GoogLeNet試圖回答在設計網絡時究竟應該選多大尺寸的卷積、或者應該選彙合層。其提出了Inception子產品,同時用1×1、3×3、5×5卷積和3×3彙合,并保留所有結果。網絡基本架構為:conv1 (64) -> pool1 -> conv2^2 (64, 192) -> pool2 -> inc3 (256, 480) -> pool3 -> inc4^5 (512, 512, 512, 528, 832) -> pool4 -> inc5^2 (832, 1024) -> pool5 -> fc (1000)。GoogLeNet的關鍵點是:(1). 多分支分别處理,并級聯結果。(2). 為了降低計算量,用了1×1卷積降維。GoogLeNet使用了全局平均彙合替代全連接配接層,使網絡參數大幅減少。GoogLeNet取名源自作者所處機關(Google),其中L大寫是為了向LeNet緻敬,而Inception的名字來源于盜夢空間中的"we need to go deeper"梗。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

Inception v3/v4 在GoogLeNet的基礎上進一步降低參數。其和GoogLeNet有相似的Inception子產品,但将7×7和5×5卷積分解成若幹等效3×3卷積,并在網絡中後部分把3×3卷積分解為1×3和3×1卷積。這使得在相似的網絡參數下網絡可以部署到42層。此外,Inception v3使用了批量歸一層。Inception v3是GoogLeNet計算量的2.5倍,而錯誤率較後者下降了3%。Inception v4在Inception子產品基礎上結合了residual子產品(見下文),進一步降低了0.4%的錯誤率。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

ResNet ILSVRC 2015的冠軍網絡。ResNet旨在解決網絡加深後訓練難度增大的現象。其提出了residual子產品,包含兩個3×3卷積和一個短路連接配接(左圖)。短路連接配接可以有效緩解反向傳播時由于深度過深導緻的梯度消失現象,這使得網絡加深之後性能不會變差。短路連接配接是深度學習又一重要思想,除計算機視覺外,短路連接配接也被用到了機器翻譯、語音識别/合成領域。此外,具有短路連接配接的ResNet可以看作是許多不同深度而共享參數的網絡的內建,網絡數目随層數指數增加。ResNet的關鍵點是:(1). 使用短路連接配接,使訓練深層網絡更容易,并且重複堆疊相同的子產品組合。(2). ResNet大量使用了批量歸一層。(3). 對于很深的網絡(超過50層),ResNet使用了更高效的瓶頸(bottleneck)結構(右圖)。ResNet在ImageNet上取得了超過人的準确率。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

下圖對比了上述幾種網絡結構。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

preResNet ResNet的改進。preResNet整了residual子產品中各層的順序。相比經典residual子產品(a),(b)将BN共享會更加影響資訊的短路傳播,使網絡更難訓練、性能也更差;(c)直接将ReLU移到BN後會使該分支的輸出始終非負,使網絡表示能力下降;(d)将ReLU提前解決了(e)的非負問題,但ReLU無法享受BN的效果;(e)将ReLU和BN都提前解決了(d)的問題。preResNet的短路連接配接(e)能更加直接的傳遞資訊,進而取得了比ResNet更好的性能。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

ResNeXt ResNet的另一改進。傳統的方法通常是靠加深或加寬網絡來提升性能,但計算開銷也會随之增加。ResNeXt旨在不改變模型複雜度的情況下提升性能。受精簡而高效的Inception子產品啟發,ResNeXt将ResNet中非短路那一分支變為多個分支。和Inception不同的是,每個分支的結構都相同。ResNeXt的關鍵點是:(1). 沿用ResNet的短路連接配接,并且重複堆疊相同的子產品組合。(2). 多分支分别處理。(3). 使用1×1卷積降低計算量。其綜合了ResNet和Inception的優點。此外,ResNeXt巧妙地利用分組卷積進行實作。ResNeXt發現,增加分支數是比加深或加寬更有效地提升網絡性能的方式。ResNeXt的命名旨在說明這是下一代(next)的ResNet。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

随機深度 ResNet的改進。旨在緩解梯度消失和加速訓練。類似于随機失活(dropout),其以一定機率随機将residual子產品失活。失活的子產品直接由短路分支輸出,而不經過有參數的分支。在測試時,前饋經過全部子產品。随機深度說明residual子產品是有資訊備援的。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

DenseNet 其目的也是避免梯度消失。和residual子產品不同,dense子產品中任意兩層之間均有短路連接配接。也就是說,每一層的輸入通過級聯(concatenation)包含了之前所有層的結果,即包含由低到高所有層次的特征。和之前方法不同的是,DenseNet中卷積層的濾波器數很少。DenseNet隻用ResNet一半的參數即可達到ResNet的性能。實作方面,作者在大會報告指出,直接将輸出級聯會占用很大GPU存儲。後來,通過共享存儲,可以在相同的GPU存儲資源下訓練更深的DenseNet。但由于有些中間結果需要重複計算,該實作會增加訓練時間。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

SENet ILSVRC 2017的冠軍網絡。SENet通過額外的分支(gap-fc-fc-sigm)來得到每個通道的[0, 1]權重,自适應地校正原各通道激活值響應。以提升有用的通道響應并抑制對目前任務用處不大的通道響應。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

目标定位(object localization)

在圖像分類的基礎上,我們還想知道圖像中的目标具體在圖像的什麼位置,通常是以包圍盒的(bounding box)形式。

基本思路 多任務學習,網絡帶有兩個輸出分支。一個分支用于做圖像分類,即全連接配接+softmax判斷目标類别,和單純圖像分類差別在于這裡還另外需要一個“背景”類。另一個分支用于判斷目标位置,即完成回歸任務輸出四個數字标記包圍盒位置(例如中心點橫縱坐标和包圍盒長寬),該分支輸出結果隻有在分類分支判斷不為“背景”時才使用。

人體位姿定位/人臉定位 目标定位的思路也可以用于人體位姿定位或人臉定位。這兩者都需要我們對一系列的人體關節或人臉關鍵點進行回歸。

弱監督定位 由于目标定位是相對比較簡單的任務,近期的研究熱點是在隻有标記資訊的條件下進行目标定位。其基本思路是從卷積結果中找到一些較高響應的顯著性區域,認為這個區域對應圖像中的目标。

目标檢測(object detection)

在目标定位中,通常隻有一個或固定數目的目标,而目标檢測更一般化,其圖像中出現的目标種類和數目都不定。是以,目标檢測是比目标定位更具挑戰性的任務。

1、目标檢測常用資料集

PASCAL VOC 包含20個類别。通常是用VOC07和VOC12的trainval并集作為訓練,用VOC07的測試集作為測試。

MS COCO COCO比VOC更困難。COCO包含80k訓練圖像、40k驗證圖像、和20k沒有公開标記的測試圖像(test-dev),80個類别,平均每張圖7.2個目标。通常是用80k訓練和35k驗證圖像的并集作為訓練,其餘5k圖像作為驗證,20k測試圖像用于線上測試。

mAP (mean average precision) 目标檢測中的常用評價名額,計算方法如下。當預測的包圍盒和真實包圍盒的交并比大于某一門檻值(通常為0.5),則認為該預測正确。對每個類别,我們畫出它的查準率-查全率(precision-recall)曲線,平均準确率是曲線下的面積。之後再對所有類别的平均準确率求平均,即可得到mAP,其取值為[0, 100%]。

交并比(intersection over union, IoU) 算法預測的包圍盒和真實包圍盒交集的面積除以這兩個包圍盒并集的面積,取值為[0, 1]。交并比度量了算法預測的包圍盒和真實包圍盒的接近程度,交并比越大,兩個包圍盒的重疊程度越高。

2、基于候選區域的目标檢測算法

基本思路 使用不同大小的視窗在圖像上滑動,在每個區域,對視窗内的區域進行目标定位。即,将每個視窗内的區域前饋網絡,其分類分支用于判斷該區域的類别,回歸分支用于輸出包圍盒。基于滑動窗的目标檢測動機是,盡管原圖中可能包含多個目标,但滑動窗對應的圖像局部區域内通常隻會有一個目标(或沒有)。是以,我們可以沿用目标定位的思路對視窗内區域逐個進行處理。但是,由于該方法要把圖像所有區域都滑動一遍,而且滑動窗大小不一,這會帶來很大的計算開銷。

R-CNN 先利用一些非深度學習的類别無關的無監督方法,在圖像中找到一些可能包含目标的候選區域。之後,對每個候選區域前饋網絡,進行目标定位,即兩分支(分類+回歸)輸出。其中,我們仍然需要回歸分支的原因是,候選區域隻是對包含目标區域的一個粗略的估計,我們需要有監督地利用回歸分支得到更精确的包圍盒預測結果。R-CNN的重要性在于當時目标檢測已接近瓶頸期,而R-CNN利于在ImageNet預訓練模型微調的方法一舉将VOC上mAP由35.1%提升至53.7%,确定了深度學習下目标檢測的基本思路。一個有趣之處是R-CNN論文開篇第一句隻有兩個詞"Features matter." 這點明了深度學習方法的核心。

候選區域(region proposal) 候選區域生成算法通常基于圖像的顔色、紋理、面積、位置等合并相似的像素,最終可以得到一系列的候選矩陣區域。這些算法,如selective search或EdgeBoxes,通常隻需要幾秒的CPU時間,而且,一個典型的候選區域數目是2k,相比于用滑動窗把圖像所有區域都滑動一遍,基于候選區域的方法十分高效。另一方面,這些候選區域生成算法的查準率(precision)一般,但查全率(recall)通常比較高,這使得我們不容易遺漏圖像中的目标。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

Fast R-CNN R-CNN的弊端是需要多次前饋網絡,這使得R-CNN的運作效率不高,預測一張圖像需要47秒。Fast R-CNN同樣基于候選區域進行目标檢測,但受SPPNet啟發,在Fast R-CNN中,不同候選區域的卷積特征提取部分是共享的。也就是說,我們先将整副圖像前饋網絡,并提取conv5卷積特征。之後,基于在原始圖像上運作候選區域生成算法的結果在卷積特征上進行采樣,這一步稱為興趣區域彙合。最後,對每個候選區域,進行目标定位,即兩分支(分類+回歸)輸出。

興趣區域彙合(region of interest pooling, RoI pooling) 興趣區域彙合旨在由任意大小的候選區域對應的局部卷積特征提取得到固定大小的特征,這是因為下一步的兩分支網絡由于有全連接配接層,需要其輸入大小固定。其做法是,先将候選區域投影到卷積特征上,再把對應的卷積特征區域空間上劃分成固定數目的網格(數目根據下一步網絡希望的輸入大小确定,例如VGGNet需要7×7的網格),最後在每個小的網格區域内進行最大彙合,以得到固定大小的彙合結果。和經典最大彙合一緻,每個通道的興趣區域彙合是獨立的。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

Faster R-CNN Fast R-CNN測試時每張圖像前饋網絡隻需0.2秒,但瓶頸在于提取候選區域需要2秒。Faster R-CNN不再使用現有的無監督候選區域生成算法,而利用候選區域網絡從conv5特征中産生候選區域,并且将候選區域網絡內建到整個網絡中端到端訓練。Faster R-CNN的測試時間是0.2秒,接近實時。後來有研究發現,通過使用更少的候選區域,可以在性能損失不大的條件下進一步提速。

候選區域網絡(region proposal networks, RPN) 在卷積特征上的通過兩層卷積(3×3和1×1卷積),輸出兩個分支。其中,一個分支用于判斷每個錨盒是否包含了目标,另一個分支對每個錨盒輸出候選區域的4個坐标。候選區域網絡實際上延續了基于滑動窗進行目标定位的思路,不同之處在于候選區域網絡在卷積特征而不是在原圖上進行滑動。由于卷積特征的空間大小很小而感受野很大,即使使用3×3的滑動窗,也能對應于很大的原圖區域。Faster R-CNN實際使用了3組大小(128×128、256×256、512×512)、3組長寬比(1:1、1:2、2:1),共計9個錨盒,這裡錨盒的大小已經超過conv5特征感受野的大小。對一張1000×600的圖像,可以得到20k個錨盒。

為什麼要使用錨盒(anchor box) 錨盒是預先定義形狀和大小的包圍盒。使用錨盒的原因包括:(1). 圖像中的候選區域大小和長寬比不同,直接回歸比對錨盒坐标修正訓練起來更困難。(2). conv5特征感受野很大,很可能該感受野内包含了不止一個目标,使用多個錨盒可以同時對感受野内出現的多個目标進行預測。(3). 使用錨盒也可以認為這是向神經網絡引入先驗知識的一種方式。我們可以根據資料中包圍盒通常出現的形狀和大小設定一組錨盒。錨盒之間是獨立的,不同的錨盒對應不同的目标,比如高瘦的錨盒對應于人,而矮胖的錨盒對應于車輛。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

R-FCN Faster R-CNN在RoI pooling之後,需要對每個候選區域單獨進行兩分支預測。R-FCN旨在使幾乎所有的計算共享,以進一步加快速度。由于圖像分類任務不關心目标具體在圖像的位置,網絡具有平移不變性。但目标檢測中由于要回歸出目标的位置,是以網絡輸出應當受目标平移的影響。為了緩和這兩者的沖突,R-FCN顯式地給予深度卷積特征各通道以位置關系。在RoI彙合時,先将候選區域劃分成3×3的網格,之後将不同網格對應于候選卷積特征的不同通道,最後每個網格分别進行平均彙合。R-FCN同樣采用了兩分支(分類+回歸)輸出。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

小結 基于候選區域的目标檢測算法通常需要兩步:第一步是從圖像中提取深度特征,第二步是對每個候選區域進行定位(包括分類和回歸)。其中,第一步是圖像級别計算,一張圖像隻需要前饋該部分網絡一次,而第二步是區域級别計算,每個候選區域都分别需要前饋該部分網絡一次。是以,第二步占用了整體主要的計算開銷。R-CNN, Fast R-CNN, Faster R-CNN, R-FCN這些算法的演進思路是逐漸提高網絡中圖像級别計算的比例,同時降低區域級别計算的比例。R-CNN中幾乎所有的計算都是區域級别計算,而R-FCN中幾乎所有的計算都是圖像級别計算。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

3、基于直接回歸的目标檢測算法

基本思路 基于候選區域的方法由于有兩步操作,雖然檢測性能比較好,但速度上離實時仍有一些差距。基于直接回歸的方法不需要候選區域,直接輸出分類/回歸結果。這類方法由于圖像隻需前饋網絡一次,速度通常更快,可以達到實時。

YOLO 将圖像劃分成7×7的網格,其中圖像中的真實目标被其劃分到目标中心所在的網格及其最接近的錨盒。對每個網格區域,網絡需要預測:每個錨盒包含目标的機率(不包含目标時應為0,否則為錨盒和真實包圍盒的IoU)、每個錨盒的4個坐标、該網格的類别機率分布。每個錨盒的類别機率分布等于每個錨盒包含目标的機率乘以該網格的類别機率分布。相比基于候選區域的方法,YOLO需要預測包含目标的機率的原因是,圖像中大部分的區域不包含目标,而訓練時隻有目标存在時才對坐标和類别機率分布進行更新。YOLO的優點在于:(1). 基于候選區域的方法的感受野是圖像中的局部區域,而YOLO可以利用整張圖像的資訊。(2). 有更好的泛化能力。YOLO的局限在于:(1). 不能很好處理網格中目标數超過預設固定值,或網格中有多個目标同時屬于一個錨盒的情況。(2). 對小目标的檢測能力不夠好。(3). 對不常見長寬比的包圍盒的檢測能力不強。(4). 計算損失時沒有考慮包圍盒大小。大的包圍盒中的小偏移和小的包圍盒中的小偏移應有不同的影響。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

SSD 相比YOLO,SSD在卷積特征後加了若幹卷積層以減小特征空間大小,并通過綜合多層卷積層的檢測結果以檢測不同大小的目标。此外,類似于Faster R-CNN的RPN,SSD使用3×3卷積取代了YOLO中的全連接配接層,以對不同大小和長寬比的錨盒來進行分類/回歸。SSD取得了比YOLO更快,接近Faster R-CNN的檢測性能。後來有研究發現,相比其他方法,SSD受基礎模型性能的影響相對較小。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

FPN 之前的方法都是取高層卷積特征。但由于高層特征會損失一些細節資訊,FPN融合多層特征,以綜合高層、低分辨率、強語義資訊和低層、高分辨率、弱語義資訊來增強網絡對小目标的處理能力。此外,和通常用多層融合的結果做預測的方法不同,FPN在不同層獨立進行預測。FPN既可以與基于候選區域的方法結合,也可以與基于直接回歸的方法結合。FPN在和Faster R-CNN結合後,在基本不增加原有模型計算量的情況下,大幅提高對小目标的檢測性能。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

RetinaNet RetinaNet認為,基于直接回歸的方法性能通常不如基于候選區域方法的原因是,前者會面臨極端的類别不平衡現象。基于候選區域的方法可以通過候選區域過濾掉大部分的背景區域,但基于直接回歸的方法需要直接面對類别不平衡。是以,RetinaNet通過改進經典的交叉熵損失以降低對已經分的很好的樣例的損失值,提出了焦點(focal)損失函數,以使模型訓練時更加關注到困難的樣例上。RetinaNet取得了接近基于直接回歸方法的速度,和超過基于候選區域的方法的性能。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹
計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

4、 目标檢測常用技巧

非最大抑制(non-max suppression, NMS) 目标檢測可能會出現的一個問題是,模型會對同一目标做出多次預測,得到多個包圍盒。NMS旨在保留最接近真實包圍盒的那一個預測結果,而抑制其他的預測結果。NMS的做法是,首先,對每個類别,NMS先統計每個預測結果輸出的屬于該類别機率,并将預測結果按該機率由高至低排序。其次,NMS認為對應機率很小的預測結果并沒有找到目标,是以将其抑制。然後,NMS在剩餘的預測結果中,找到對應機率最大的預測結果,将其輸出,并抑制和該包圍盒有很大重疊(如IoU大于0.3)的其他包圍盒。重複上一步,直到所有的預測結果均被處理。

線上困難樣例挖掘(online hard example mining, OHEM) 目标檢測的另一個問題是類别不平衡,圖像中大部分的區域是不包含目标的,而隻有小部分區域包含目标。此外,不同目标的檢測難度也有很大差異,絕大部分的目标很容易被檢測到,而有一小部分目标卻十分困難。OHEM和Boosting的思路類似,其根據損失值将所有候選區域進行排序,并選擇損失值最高的一部分候選區域進行優化,使網絡更關注于圖像中更困難的目标。此外,為了避免選到互相重疊很大的候選區域,OHEM對候選區域根據損失值進行NMS。

在對數空間回歸 回歸相比分類優化難度大了很多。 損失對異常值比較敏感,由于有平方,異常值會有大的損失值,同時會有很大的梯度,使訓練時很容易發生梯度爆炸。而  損失的梯度不連續。在對數空間中,由于數值的動态範圍小了很多,回歸訓練起來也會容易很多。此外,也有人用平滑的  損失進行優化。預先将回歸目标規範化也會有助于訓練。

語義分割(semantic segmentation)

語義分割是目标檢測更進階的任務,目标檢測隻需要框出每個目标的包圍盒,語義分割需要進一步判斷圖像中哪些像素屬于哪個目标。

1、語義分割常用資料集

PASCAL VOC 2012 1.5k訓練圖像,1.5k驗證圖像,20個類别(包含背景)。

MS COCO COCO比VOC更困難。有83k訓練圖像,41k驗證圖像,80k測試圖像,80個類别。

2、語義分割基本思路

基本思路 逐像素進行圖像分類。我們将整張圖像輸入網絡,使輸出的空間大小和輸入一緻,通道數等于類别數,分别代表了各空間位置屬于各類别的機率,即可以逐像素地進行分類。

全卷積網絡+反卷積網絡 為使得輸出具有三維結構,全卷積網絡中沒有全連接配接層,隻有卷積層和彙合層。但是随着卷積和彙合的進行,圖像通道數越來越大,而空間大小越來越小。要想使輸出和輸入有相同的空間大小,全卷積網絡需要使用反卷積和反彙合來增大空間大小。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

反卷積(deconvolution)/轉置卷積(transpose convolution) 标準卷積的濾波器在輸入圖像中進行滑動,每次和輸入圖像局部區域點乘得到一個輸出,而反卷積的濾波器在輸出圖像中進行滑動,每個由一個輸入神經元乘以濾波器得到一個輸出局部區域。反卷積的前向過程和卷積的反向過程完成的是相同的數學運算。和标準卷積的濾波器一樣,反卷積的濾波器也是從資料中學到的。

反最大彙合(max-unpooling) 通常全卷積網絡是對稱的結構,在最大彙合時需要記下最大值所處局部區域位置,在對應反最大彙合時将對應位置輸出置為輸入,其餘位置補零。反最大彙合可以彌補最大彙合時丢失的空間資訊。反最大彙合的前向過程和最大彙合的反向過程完成的是相同的數學運算。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

3、語義分割常用技巧

擴張卷積(dilated convolution) 經常用于分割任務以增大有效感受野的一個技巧。标準卷積操作中每個輸出神經元對應的輸入局部區域是連續的,而擴張卷積對應的輸入局部區域在空間位置上不連續。擴張卷積向标準卷積運算中引入了一個新的超參數擴張量(dilation),用于描述輸入局部區域在空間位置上的間距。當擴張量為1時,擴張卷積退化為标準卷積。擴張卷積可以在參數量不變的情況下有效提高感受野。例如,當有多層3×3标準卷積堆疊時,第l 層卷積(l 從1開始)的輸出神經元的感受野為2l +1。與之相比,當有多層3×3擴張卷積堆疊,其中第l 層卷積的擴張量為2^{l-1}時,第l 層卷積的輸出神經元的感受野為2^{l +1}-1。感受野越大,神經元能利用的相關資訊越多。和經典計算機視覺手工特征相比,大的感受野是深度學習方法能取得優異性能的重要原因之一。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

條件随機場(conditional random field, CRF) 條件随機場是一種機率圖模型,常被用于微修全卷積網絡的輸出結果,使細節資訊更好。其動機是距離相近的像素、或像素值相近的像素更可能屬于相同的類别。此外,有研究工作用循環神經網絡(recurrent neural networks)近似條件随機場。條件随機場的另一弊端是會考慮兩兩像素之間的關系,這使其運作效率不高。

利用低層資訊 綜合利用低層結果可以彌補随着網絡加深丢失的細節和邊緣資訊,利用方式可以是加和(如FCN)或沿通道方向拼接(如U-net),後者效果通常會更好一些。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

執行個體分割(instance segmentation)

語義分割不區分屬于相同類别的不同執行個體。例如,當圖像中有多隻貓時,語義分割會将兩隻貓整體的所有像素預測為“貓”這個類别。與此不同的是,執行個體分割需要區分出哪些像素屬于第一隻貓、哪些像素屬于第二隻貓。

基本思路 目标檢測+語義分割。先用目标檢測方法将圖像中的不同執行個體框出,再用語義分割方法在不同包圍盒内進行逐像素标記。

Mask R-CNN 用FPN進行目标檢測,并通過添加額外分支進行語義分割(額外分割分支和原檢測分支不共享參數),即Mask R-CNN有三個輸出分支(分類、坐标回歸、和分割)。此外,Mask R-CNN的其他改進有:(1). 改進了RoI彙合,通過雙線性內插補點使候選區域和卷積特征的對齊不因量化而損失資訊。(2). 在分割時,Mask R-CNN将判斷類别和輸出模闆(mask)這兩個任務解耦合,用sigmoid配合對率(logistic)損失函數對每個類别的模闆單獨處理,取得了比經典分割方法用softmax讓所有類别一起競争更好的效果。

計算機視覺四大基本任務(分類、定位、檢測、分割)介紹

參考文獻

  1. V. Badrinarayanan, et al. SegNet: A deep convolutional encoder-decoder architecture for image segmentation. TPAMI, 2017.
  2. Y. Bengio, et al. Representation learning: A review and new perspectives. TPAMI, 2013.
  3. L.-C. Chen, et al. SegNet: A deep convolutional encoder-decoder architecture for image segmentation. PAMI, 2017.
  4. S. Chetlur, et al. cuDNN: Efficient primitives for deep learning. arXiv: 1410.0759, 2014.
  5. J. Cong, and B. Xiao. Minimizing computation in convolutional neural networks. ICANN, 2014.
  6. J. Dai, et al. R-FCN: Object detection via region-based fully convolutional networks. NIPS, 2016.
  7. A. Garcia-Garcia, et al. A review on deep learning techniques applied to semantic segmentation. arXiv: 1704.06857, 2017.
  8. R. Girshick, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. CVPR, 2014.
  9. R. Girshick. Fast R-CNN. ICCV, 2015.
  10. K. He, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition. ECCV, 2014.
  11. K. He, et al. Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification. ICCV, 2015.
  12. K. He, et al. Deep residual learning for image recognition. CVPR, 2016.
  13. K. He, et al. Identity mappings in deep residual networks. ECCV, 2016.
  14. K. He, et al. Mask R-CNN. ICCV, 2017.
  15. J. Hu, et al. Squeeze-and-excitation networks. CVPR, 2018.
  16. G. Huang, et al. Deep networks with stochastic depth. ECCV, 2016.
  17. G. Huang, et al. Densely connected convolutional networks. CVPR, 2017.
  18. J. Huang, et al. Speed/Accuracy trade-offs for modern convolutional object detectors. CVPR, 2017.
  19. A. Krizhevsky, and G. Hinton. Learning multiple layers of features from tiny images. Technical Report, 2009.
  20. A. Krizhevsky, et al. ImageNet classification with deep convolutional neural networks. NIPS, 2012.
  21. A. Lavin, and S. Gray. Fast algorithms for convolutional neural networks. CVPR, 2016.
  22. Y. LeCun, et al. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 1998.
  23. M. Lin, et al. Network in network. ICLR, 2014.
  24. T.-Y. Lin, et al. Microsoft COCO: Common objects in context. ECCV, 2014.
  25. T.-Y. Lin, et al. Feature pyramid networks for object detection. CVPR, 2017.
  26. T.-Y. Lin, et al. Focal loss for dense object detection. ICCV, 2017.
  27. W. Liu, et al. SSD: Single shot multibox detector. ECCV, 2016.
  28. J. Long, et al. Fully convolutional networks for semantic segmentation. CVPR, 2015.
  29. H. Noh, et al. Learning deconvolution network for semantic segmentation. ICCV, 2015.
  30. G. Pleiss, et al. Memory-efficient implementation of DenseNets. arXiv: 1707.06990, 2017.
  31. J. Redmon, et al. You only look once: Unified, real-time object detection. CVPR, 2016.
  32. S. Ren, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. NIPS, 2015.
  33. S. Ren, et al. Object detection networks on convolutional feature maps. TPAMI, 2017.
  34. O. Ronneberger, et al. U-net: Convolutional networks for biomedical image segmentation. MICCAI, 2015.
  35. O. Russakovsky, et al. ImageNet large scale visual recognition challenge. IJCV, 2015.
  36. P. Sermanet, et al. OverFeat: Integrated recognition, localization, and detection using convolutional networks. ICLR, 2014.
  37. A. Shrivastava, et al. Training region-based object detectors with online hard example mining. CVPR, 2016.
  38. K. Simonyan, and A. Zisserman. Very deep convolutional networks for large-scale image recognition. ICLR, 2015.
  39. J. T. Springenberg, et al. Striving for simplicity: The all convolutional net. ICLR Workshop, 2015.
  40. V. Sze, et al. Efficient processing of deep neural networks: A tutorial and survey. Proceedings of IEEE, 2017.
  41. C. Szegedy, et al. Going deep with convolutions. CVPR, 2015.
  42. C. Szegedy, et al. Rethinking the Inception architecture for computer vision. CVPR, 2016.
  43. C. Szegedy, et al. Inception v4, Inception-ResNet and the impact of residual connections on learning. AAAI, 2017.
  44. A. Toshev, and C. Szegedy. DeepPose: Human pose estimation via deep neural networks. CVPR, 2014.
  45. A. Veit, et al. Residual networks behave like ensembles of relatively shallow networks. NIPS, 2016.
  46. S. Xie, et al. Aggregated residual transformations for deep neural networks. CVPR, 2017.
  47. F. Yu, and V. Koltun. Multi-scale context aggregation by dilated convolutions. ICLR, 2016.
  48. M. D. Zeiler, and R. Fergus. Visualizing and understanding convolutional networks. ECCV, 2014.
  49. S. Zheng, et al. Conditional random fields as recurrent neural networks. ICCV, 2015.

—版權聲明—

僅用于學術分享,版權屬于原作者。

繼續閱讀