cs231n---语义分割 物体定位 物体检测 物体分割
1 語義分割
語義分割是對圖像中每個像素作分類,不區(qū)分物體,只關(guān)心像素。如下:
(1)完全的卷積網(wǎng)絡(luò)架構(gòu)
處理語義分割問題可以使用下面的模型:
其中我們經(jīng)過多個卷積層處理,最終輸出體的維度是C*H*W,C表示類別個數(shù),表示每個像素在不同類別上的得分。最終取最大得分為預(yù)測類別。
訓(xùn)練這樣一個模型,我們需要對每個像素都分好類的訓(xùn)練集(通常比較昂貴)。然后前向傳播出一張圖的得分體(C*H*W),與訓(xùn)練集的標簽體求交叉熵,得到損失函數(shù),然后反向傳播學(xué)習(xí)參數(shù)。
然而,這樣一個模型的中間層完全保留了圖像的大小,非常占內(nèi)存,因此有下面改進的框架。
(2)先欠采樣再過采樣的框架
經(jīng)過欠采樣后可以大量節(jié)省內(nèi)存,提高效率,最后再經(jīng)過過采樣來恢復(fù)原始圖片的大小。我們知道欠采樣可以使用卷積層和池化,下面介紹過采樣的幾種方式。
去池化?Unpooling?
去池化有Nearest Neighbor,Bed of Nails等方法:
還有一種被稱為Max Unpooling 的方法,該方法記錄下之前使用max pooling前各個最大值在數(shù)組中的索引,去池化的時候把值放到索引處,其他位置補0:
?
轉(zhuǎn)置卷積?Transpose Convolution
不同于去池化,轉(zhuǎn)置卷積法是一種可學(xué)習(xí)的過采樣方法。具體步驟是,將輸入的每個值作為權(quán)重,對濾波器進行加權(quán),然后各個加權(quán)的濾波器按照步長拼成輸出,重疊部分相加。如下:
我們可以通過學(xué)習(xí)濾波器,來學(xué)習(xí)網(wǎng)絡(luò)應(yīng)該如何做過采樣。
理解轉(zhuǎn)置卷積的一個一維的例子是:
在一些論文里,轉(zhuǎn)置卷積還有一些其他名字,看到的時候要知道:
另外,轉(zhuǎn)置卷積之所以被稱為轉(zhuǎn)置卷積,是因為它的矩陣形式。傳統(tǒng)的卷積寫成矩陣形式如下(注意這里是一維的例子):
其中x是濾波器,a是輸入。而轉(zhuǎn)置卷積寫成矩陣形式如下:
?
2 分類+定位
分類+定位的任務(wù)要求我們在給圖片打標簽之后,還要框出物體在什么地方(注意與物體檢測的區(qū)別,在分類定位中,輸出的框的個數(shù)是事先已知的,而物體檢測中則是不確定的)。如下:
此類任務(wù)常用的處理框架如下:
?
首先我們還是用CNN得到描述圖片的特征向量,然后我們接入兩個全連接網(wǎng)絡(luò),一個網(wǎng)絡(luò)負責(zé)生成最后的類別評分,另一個負責(zé)生成紅框四個點的坐標值。因此對應(yīng)兩個損失,softmax損失和回歸損失。我們將這兩個損失加權(quán)相加得到總的損失(加權(quán)值是超參數(shù)),然后進行反向傳播學(xué)習(xí)。
這里應(yīng)用回歸的思路同樣可以應(yīng)用于姿態(tài)估計,我們用十四個點來確定一個人的姿態(tài)情況:
應(yīng)用同樣的框架(CNN+回歸全連接網(wǎng)絡(luò))可以訓(xùn)練這個任務(wù):
?
3 物體檢測?
與分類+定位任務(wù)不同的是,物體檢測中需要檢測的物體數(shù)量是不確定的,因此無法直接使用上面的回歸框架。下面簡單介紹幾個框架。
(1)滑動窗口
滑動窗口的思想是隨機選取若干個不同大小不同位置的窗口,對它們應(yīng)用CNN進行分類。缺點是窗口數(shù)量很大,計算代價很高。
(2)RCNN
訓(xùn)練階段:
a 使用IMAGENet的數(shù)據(jù)預(yù)訓(xùn)練一個CNN
b 構(gòu)造訓(xùn)練集:首先應(yīng)用Selective Search算法從每張帶標定框的圖像中選取2000~3000個候選框。對每個候選框來說,找到與它重疊面積最大的標定框,如果重疊比例大于閾值(0.5),則將該候選框標簽設(shè)為該標定框的標簽,若重疊比例小于閾值(0.5),則標簽設(shè)為“背景”。同時對于重疊比例大于一定閾值(0.6)的候選框,還要計算出其與標定框的偏移距離。
c 每個候選區(qū)域經(jīng)過預(yù)處理,送到CNN中提取出圖像特征,然后把圖像特征送到SVM分類器中,計算出標簽分類的損失。同時圖像特征還要送到回歸器中,計算偏移距離的L2損失。
d 反向傳播訓(xùn)練SVM,回歸器,CNN
整體框架圖如下:
(3)Fast RCNN
RCNN訓(xùn)練和預(yù)測速度很慢,主要是由于不同候選框之間的重疊部分特征重復(fù)用CNN提取導(dǎo)致的。因此可以采取先對整個圖像進行CNN特征提取,然后在選定候選區(qū)域,并從總的featuremap中找到每個候選區(qū)域?qū)?yīng)的特征。框架如下:
(4)Faster RCNN
Fast RCNN的性能瓶頸是SS算法選定候選區(qū)域,在Faster RCNN中,使用網(wǎng)絡(luò)Region Proposal Network (RPN) 來預(yù)測候選區(qū)域,整體框架如下:
Faster RCNN是當(dāng)前很先進的目標檢測框架,要了解細節(jié)看這篇論文:
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Systems. 2015.
(5)SSD
SSD的思想是將圖像劃分為很多個格子,以每個格子的中心可以衍生出若干個base boxes。使用神經(jīng)網(wǎng)絡(luò)一次性的對這些格子進行分類,對這些baseboxes進行回歸。
上圖中,一個圖像劃分為7*7個grid,每個grid有3個base boxes。我們需要用回歸為每個base boxes預(yù)測五個值,為每個格子進行分類打分。直接使用一個的CNN神經(jīng)網(wǎng)絡(luò)輸出7*7*(5*B+C)的大小即可。
更多細節(jié)參看論文:Liu et al, “SSD: Single-Shot MultiBox Detector”, ECCV 2016?
?
(6)各種物體檢測框架的對比
有很多變量可控:
這篇論文對比了各種框架:
Huang et al, “Speed/accuracy trade-offs for modern convolutional object detectors”, CVPR 2017?
FasterCNN比SSD具有更高的精度,但是沒有SSD快。
?
(7)Dense Captioning?
?Dense Captioning 是對圖片中的每個事物做檢測,并用語言進行描述:
Dense Captioning其實就是Object Detection + Captioning ,其框架可以使用faster RCNN結(jié)合LSTM來做。具體參考文獻:
Johnson, Karpathy, and Fei-Fei, “DenseCap: Fully Convolutional Localization Networks for Dense Captioning”, CVPR 2016?
?
4 物體分割?
物體分割要做的是在物體檢測上更進一步,從像素層面把各個物體分割出來。
Mask RCNN是當(dāng)前很前沿的一種方法,其將faster RCNN和語義分割結(jié)合成一個框架,具有非常好的效果!框架為:
如上圖,首先將圖像使用CNN處理為特征,然后經(jīng)過一個RPN網(wǎng)絡(luò)生成候選區(qū)域,投射到之前的feature map。到這里與faster RCNN一樣。之后有兩個分支,一個分支與faster RCNN相同,預(yù)測候選框的分類和邊界值,另一個分支則與語義分割相似,為每個像素做分類。
mask RCNN具有超級好的效果,有機會一定要拜讀一下。
He et al, “Mask R-CNN”, arXiv 2017
?
?5 總結(jié)
這些成功的計算機視覺框架和模型給我們的啟示是,將具有基本功能的模塊整合成一個可訓(xùn)練的端到端系統(tǒng),可以完成更加復(fù)雜的功能。通過向網(wǎng)絡(luò)中引入多個損失函數(shù)的分支,可以讓其完成多目標的聯(lián)合優(yōu)化。
?
轉(zhuǎn)載于:https://www.cnblogs.com/coldyan/p/8391559.html
總結(jié)
以上是生活随笔為你收集整理的cs231n---语义分割 物体定位 物体检测 物体分割的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 龙母和雪诺是什么关系 龙女会跟雪诺在一起
- 下一篇: array_combine()