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)python

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 SVMsapp

RCNN算法分爲4個步驟less

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

wraped region:包裹的區域dom

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

論文概要與背景知識整理

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)留着後面再看吧,須要補的知識有點多,喪臉!

相關文章
相關標籤/搜索