RCNN


Scene understanding

  1. Image classification
  2. Object detection
  3. Semantic segmentation
  4. Instance segmentation
1. Image classification

goals: the task of object classification requires binary labels indication whether objects are present in an image.(對目標是否出現在圖片給出判別,yes or no)

2. object detection

goals:detecting an object entails both stating that an object belonging to a specified class is present, and localizing it in the image.The location of an object is typically represented by a bounding box.(對目標屬於什么類別進行判斷,進行目標的定位)

3. Semantic scene labeling

goals:the task of labeling semantic objects in a scene requires that each pixel of an image be labeled as belonging to a category, such as sky, chair, steet,etc. In contrast to the detection task, individual instances of objects do not need to be segmented.(要求對圖片的像素進行分類,是屬於天空、街道等等,需要進行目標檢測任務,但是不需要進行分割任務)

4. Instance segment

實例分割是物體檢測+語義分割的綜合體。相對物體檢測的邊界框,實例分割可精確到物體的邊緣;相對語義分割,實例分割可以標注出圖上同一物體的不同個體(羊1,羊2,羊3...)

經典目標檢測算法

  1. RCNN
  2. Fast RCNN
  3. Faster RCNN
  4. Mask RCNN

1. RCNN

R-CNN: Region Proposal + CNN + Category-specific Linears SVMs

RCNN算法分為4個步驟

  • 一張圖生成1k~2K個候選區域
  • 對每一個候選區域,使用深度網絡提取特征
  • 特征送入每一類的SVM分類器,判斷屬於的類別
  • 使用回歸器精細修正候選框的位置

wraped region:包裹的區域

RCNN思想:輸入一張圖片。提取區域,建議大約2k個區域。然后依次將這些區域送入CNN,進行區域目標區域的分類,和區域框bbox的線性回歸。bbox(就是每個區域region矩形框的位置)

論文概要與背景知識整理

backgound

在當時,用 CNN 做 Object Detection 與 Single-label Image Classification 之間的 Gap,或者說這個問題 challenging 的地方一共有兩處:

  1. 一個就是之前沒有過用 CNN 做 Object Detection 的工作。不同於 Image Classification,Object Detection 要求 localizing objects within an image. 這個 Location 信息要怎么給出?在當時流行的 CNN架構AlexNet ,只被用來做圖像分類任務。
  2. 另外一個就是,labeled data for detection is scarce. AlexNet 在 Single-label Image Classification 上取得成功,是因為 ImageNet 正好有上千萬幅標注好的分類圖像,但是對於 Object Detection,當時最大的 VOC dataset 可不足以支撐訓練其那么多的神經網絡參數。

abstract 摘要

論文成果,在PASCAL VOC數據集上,mAP達到53.3%,相比VOC 2012的結果增加30%。主要有兩個關鍵思想:一是可以將高性能的CNN網絡應用於自底而上(從背景到前景)的region proposals,以便進行目標檢測和定位;二是當有標簽的數據很少時,用監督預訓練(supervised pre—training)作為一個輔助任務,然后對特別區域進行微調,可以顯著提高模型表現力。

introduction

bbox(bounding box)的定位location 是一個回歸問題。

可以選擇滑動窗口 to localizing objects within an image.為了保持圖像高分辨率,CNN一般只有兩層convolution and pooling layers. 在本文中,嘗試使用sliding-window approach, 但是隨着網絡的加深,(5個convolution layers),會有很大的receptive fields(感受野 195 * 195 pixels),strides(32 * 32) in the image。這使得滑動窗口的精確定位變得很困難。

本文為了解決CNN網絡的定位問題,采用了“recognition using regions”方法。we use a simple technique(affine image warping) to compute a fixed-size CNN input from each region proposal, regardless of the region's shape.

本文的第二個問題:有標簽的數據很少,不足以支持CNN的訓練。傳統方法是使用無監督的預訓練,然后接下來的使用無監督的微調(fine-tuning)。

本文的第二個貢獻:在一個大的數據集上進行supervised pre-training, followed by domian special fine-tuning on a small dataset, is an effective paradigm(一個領域主流的理念、方法、行事套路) for learning high-capacity CNNs when data is scarce.

Object detection with R-CNN

目標檢測主要有三個模塊組成。
第一個生成單一類的目標區域。第二是對於each region,CNN網絡提取固定長度(fixed-length)特征向量.第三個是線性分類器SVM.

2.1 模塊設計

test-time detection

在測試圖片上,提取大約2000 region proposals。wraps each proposal and forward propagate it through the CNN。對於每一類,我們使用SVM進行訓練,

all parameters are shared across all categories.在分類中,所有的CNN參數是共享的。也就是說分類任務使用的是同一個CNN網絡。

2.2 Model

R-CNN = Region Proposal + CNN + Category-specific Linear SVMs + Non-Maximum Suppression + Bounding Box Regression

  1. The first generates category-independent region proposals.
  2. The second module is a large convolutional neural network that extracts a fixed-length feature vector from each region.
  3. The third module is a set of class-specific linear SVMs.

Module 1:Region Proposal

Region Proposal 用 Selective Search 實現,選這個文章里到沒有說是有什么優點采選 SS,而是為了跟其他已有的方法對比,他們用了 SS。所以完全可以用其他 Region Proposal 方法,比如 BING 之類的。

目前我能理解的 detection 的思路其實就是 region classification,確定了哪些 region 里面有什么類的 object 也就完成了 detection,至於怎么產生這些 region,可以用 sliding-window,也可以用 region proposal,其實我覺得 sliding-window 就是一種特別簡化的 region proposal 嘛。

Module 2:Feature Extraction

CNN 就是用來抽取特征的,輸出是 softmax,但這個只是在訓練 CNN fine-tunning 的階段用,最分類還是用的 SVM.

CNN 對輸入的要求是必須都是固定大小的,但是 Region Proposal method 產生的 region 每個都各不相同,怎么把這不規則的 region 輸入需要固定大小輸入的 CNN,這是怎么解決的呢?Regardless of the size or aspect ratio of the candidate region, we warp all pixels in a tight bounding box around it to the required size.

Module 3: Classification

SVM 用來分類。

Module 4: Non-Maximum Suppression

Given all scored regions in an image, we apply a greedy non-maximum suppression (for each class independently) that rejects a region if it has an intersection-over-union (IoU) overlap with a higher scoring selected region larger than a learned threshold.

去除重復的 Proposal,所以 R-CNN 這里是有大量的冗余計算的,先產生大量的 Proposal,然后最后再剔除掉絕大部分,如果一開始就可以產生少量高質量的 Proposal 就好了,這就是后面改進工作(Faster R-CNN)的 Motivation 了。

Module 5:Bounding Box Regression

Inspired by the bounding box regression employed in DPM [15], we train a linear regression model to predict a new detection window given the pool 5 features for a selective search region proposal.

Conclusion

We achieved this performance through two insights. The first is to apply highh-capacity convolutional neural networks to bottom-up region proposals in order to localize and segment objects.The second is a paredigm for training large CNNs when labeled training data is scarce. We show that it is highly effective to pre-train the network with supervision——for a auxiliary task with abundant data(image classification) and then to fine-tune the network for the target task where data is scarce(detection).

問題一:如何生成候選區域,依據什么規則?

候選區域的生成

使用了Selective Search1方法從一張圖像生成約2000-3000個候選區域。Selective Search如下:

  • 使用Efficient GraphBased Image Segmentation中的方法來得到region
  • 得到所有region之間兩兩的相似度
  • 合並最像的兩個region
  • 重新計算新合並region與其他region的相似度
  • 重復上述過程直到整張圖片都聚合成一個大的region
  • 使用一種隨機的計分方式給每個region打分,按照分數進行ranking,取出top k的子集,就是selective search的結果

相似度的考慮可以結合多種策略

策略多樣化(Diversification Strategies)
  • 顏色(顏色直方圖)相似度
  • 紋理(梯度直方圖)相似度
  • 大小相似度
  • 吻合(fit)相似度
  • 最后把上述相似度按照不同的權重結合到一起

問題二:候選區域的尺寸不一,如何處理?

答:regardless of the size or aspect ratio of the candidate region, we warp(相當於python中的resize操作) all pixels in a tight bounding box around it to the required size.

問題三:使用的CNN網絡模型是什么?

答:對於 pre-training: discriminatively pre-trained the CNN on a large auxiliary dataset (ILSVRC 2012) with image-level annotations,就是 pretrained AlexNet。

問題四:分類和回歸任務是分開做的,還是同時進行的?

  1. 對於 fine-tunning: Domain-specific fine-tuning on VOC
  • 這個 VOC 是 VOC Detection,並不是 Classification,
  • 注意的是,這里是把 Object Region 和 Background Region 輸入 CNN,並不是整張圖像,而且每個 Region Proposal 都是被 resize 到 227 × 227 大小,為了符合 AlexNet 對輸入的要求(因為 fully-connected layer 的要求)。所以只要把 AlexNet 最后分類的 1000 類改成 VOC 的 21 類就可以了,網絡結構不用變,因為 R-CNN 背后的思想是 Object Detection by Region Proposal Classification,所以 Classification Network 可以直接拿來用。
  • 構造 Batch 的時候,mini-batch size 是 128,32 個 positive window,從每類里面均勻分布隨機采樣;96 個 Background window。之所以背景樣本比 Object 樣本多很多,因為實際情況就是這樣的。
    對於 Classification: 對於每一個 category,肯定是要構建 positive 和 negative 兩類啦
    對於完全是 背景 or 完全含有目標的 Proposal,很容易判斷是 positive or Negative
    對於只包含部分的 Proposal,是算 IOU,閾值是 0.3,這是作者做了網格搜索驗證后的結果,后面的研究似乎也都沿用了 0.3 這個值。

問題:在有標簽數據很少時,傳統方法先unsupervised pre-training, followed by domian-specific fine-tune的概念?

答:無監督的預訓練不能幫助我們尋找到更好的初始化權重。

無監督的預訓練並不能降低訓練集的誤差,預先訓練的模型比隨機初始化的模型產生更低的測試成本。它的優點似乎是更好的泛化,而不僅僅是更好的優化過程。

無參數的預訓練會帶來類似於正則化的效用,是某種特殊的先驗分布帶來的正則化(此處甚是懵逼),這種效用會隨着模型的復雜性的增大而增大。

問題:為什么要用SVM,直接用softmax分類器不好嗎?

suppliment里面提到,用softmax效果降低4個百分點。原因有下:

  1. the definition of positive examples used in fine-tuning does not emphasize precise localization
  2. the softmax classifier was trained on randomly sampled negative examples rather than on the subset of “hard negatives” used for SVM training.

非極大抑制(Non-Maximum Suppression)

目標檢測中,NMS被用在后期的物體邊界框去除。

NMS 對檢測得到的全部boxes進行局部的最大搜索,以搜索某鄰域范圍內的最大值,從而濾出一部分 boxes,提升最終的檢測精度。

簡而言之,找出score比較region,其中需要考慮不同region的一個重疊問題。

  • 輸入:檢測到的Boxes(同一個物體可能被檢測到很多Boxes,每個box均有分類score)
  • 輸出:最優的box
  • 過程:去除冗余的重疊 Boxes,對全部的 Boxes 進行迭代-遍歷-消除.
  1. 將所有框的得分排序,選中最高分及其對應的框;
  2. 遍歷其余的框,如果和當前最高分框的重疊面積(IOU)大於一定閾值,則將框刪除;
  3. 從未處理的框中繼續選一個得分最高的,重復上述過程.

假設從一個圖像中得到了2000 region proposals,通過在CNN之后我們會得到2000×4096的一個特征矩陣,然后通過N的SVM來判斷每一個region屬於N的類的scores。其中,SVM的權重矩陣大小為4096×N,最后得到2000*N的一個score矩陣(其中,N為類別的數量)。

Non-Maximum Suppression就是需要根據score矩陣和region的坐標信息,從中找到置信度比較高的bounding box。首先,NMS計算出每一個bounding box的面積,然后根據score進行排序,把score最大的bounding box作為隊列中。接下來,計算其余bounding box與當前最大score與box的IoU,去除IoU大於設定的閾值的bounding box。然后重復上面的過程,直至候選bounding box為空。最終,檢測了bounding box的過程中有兩個閾值,一個就是IoU,另一個是在過程之后,從候選的bounding box中剔除score小於閾值的bounding box。需要注意的是:Non-Maximum Suppression一次處理一個類別,如果有N個類別,Non-Maximum Suppression就需要執行N次。

例如:

假設某物體檢測到 4 個 Boxes,每個 Box 分別對應一個類別 Score,根據 Score 從小到大排列依次為,(B1, S1), (B2, S2), (B3, S3), (B4, S4). S4 > S3 > S2 > S1.

  • Step 1. 根據Score 大小,從 Box B4 框開始;
  • Step 2. 分別計算 B1, B2, B3 與 B4 的重疊程度 IoU,判斷是否大於預設定的閾值;如果大於設定閾值,則舍棄該 Box;同時標記保留的 Box. 假設 B3 與 B4 的閾值超過設定閾值,則舍棄 B3,標記 B4 為要保留的 Box;
  • Step 3. 從剩余的 Boxes 中 B1, B2 中選取 Score 最大的 B2, 然后計算 B2 與 剩余的 B1 的重疊程度 IoU;如果大於設定閾值,同樣丟棄該 Box;同時標記保留的 Box.
    重復以上過程,直到找到全部的保留 Boxes.

Fine-tuning過程

通過對imageNet上訓練出來的模型(如CaffeNet、VGGNet、ResNet)進行微調,然后應用到我們自己的數據集上。因為ImageNet數以百萬計帶標簽的數據,使得VGGnet、ResNet等預訓練模型具有具有非常強大的泛化能力。通常我們只需要對預訓練模型的后幾層進行微調,然后應用到我們的數據上,就能得到很好的結果。

簡而言之,通過在預訓練模型上進行Fine-tuning,可以使得在目標任務達到很高的performance,而且使用相對少的數據量。

經驗:在層數較深的情況下,由於deep learning本身的特性,在越高層形成的特征越抽象,而前面的卷積層則是顏色和邊緣這些比較泛化的特征,所以在fine-tuning時,可以將前幾層conv層的learning_rate設置為0,而后幾層conv層不建議置為0,否則會對performance影響太大

目前最強大的模型是ResNet,很多視覺任務通過fine-tuning ResNet可以得到很好的performance。

fine-tuning和遷移學習的區別?

舉個例子,假設今天老板給你一個新的數據集,讓你做一下圖片分類,這個數據集是關於Flowers的。問題是,數據集中flower的類別很少,數據集中的數據也不多,你發現從零訓練開始訓練CNN的效果很差,很容易過擬合。怎么辦呢,於是你想到了使用Transfer Learning,用別人已經訓練好的Imagenet的模型來做。
做的方法有很多:

  1. 把Alexnet里卷積層最后一層輸出的特征拿出來,然后直接用SVM分類。這是Transfer Learning,因為你用到了Alexnet中已經學到了的“知識”。
  2. 把Vggnet卷積層最后的輸出拿出來,用貝葉斯分類器分類。思想基本同上。
  3. 甚至你可以把Alexnet、Vggnet的輸出拿出來進行組合,自己設計一個分類器分類。這個過程中你不僅用了Alexnet的“知識”,也用了Vggnet的“知識”。
  4. 最后,你也可以直接使用fine-tune這種方法,在Alexnet的基礎上,重新加上全連接層,再去訓練網絡。

綜上,Transfer Learning關心的問題是:什么是“知識”以及如何更好地運用之前得到的“知識”。這可以有很多方法和手段。而fine-tune只是其中的一種手段。

image
如何判斷哪些region屬於同一個物體?這個問題找不到一個統計的答案。

有些圖片可以通過顏色來區分物體,而有些通過紋理區分,還有一些既不是顏色相近,也是不紋理相似。

所以需要結合多種策略,才有可能找打圖片中的物體。

Multiscale
image
在上面兩張圖片, selective search 展示了不同scale 的必要性。在左邊的圖片,我們發現目標有不同的scales。在右邊的圖片,我們必須找到不同的scale,因為女孩包含在tv中。

由於物體之間存在層級關系,所以Selective Search用到了Multiscale的思想。從上圖看出,Select Search在不同尺度下能夠找到不同的物體。

注意,這里說的不同尺度,不是指通過對原圖片進行縮放,或者改變窗口大小的意思,而是,通過分割的方法將圖片分成很多個region,並且用合並(grouping)的方法將region聚合成大的region,重復該過程直到整張圖片變成一個最大的region。這個過程就能夠生成multiscale的region了,而且,也符合了上面“物體之間可能具有層級關系”的假設。

Selective Search方法簡介

  • 使用Efficient GraphBased Image Segmentation中的方法來得到region
  • 得到所有region之間兩兩的相似度
  • 合並最像的兩個region
  • 重新計算新合並region與其他region的相似度
  • 重復上述過程直到整張圖片都聚合成一個大的region
  • 使用一種隨機的計分方式給每個region打分,按照分數進行ranking,取出top k的子集,就是selective search的結果

ps:(efficient GraphBased Image Segmentation)留着后面再看吧,需要補的知識有點多,喪臉!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM