goals: the task of object classification requires binary labels indication whether objects are present in an image.(對目標是否出如今圖片給出判別,yes or no)python
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.(對目標屬於什麼類別進行判斷,進行目標的定位)算法
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.(要求對圖片的像素進行分類,是屬於天空、街道等等,須要進行目標檢測任務,可是不須要進行分割任務)網絡
實例分割是物體檢測+語義分割的綜合體。相對物體檢測的邊界框,實例分割可精確到物體的邊緣;相對語義分割,實例分割能夠標註出圖上同一物體的不一樣個體(羊1,羊2,羊3...)架構
R-CNN: Region Proposal + CNN + Category-specific Linears SVMsapp
RCNN算法分爲4個步驟less
wraped region:包裹的區域dom
RCNN思想:輸入一張圖片。提取區域,建議大約2k個區域。而後依次將這些區域送入CNN,進行區域目標區域的分類,和區域框bbox的線性迴歸。bbox(就是每一個區域region矩形框的位置)ide
在當時,用 CNN 作 Object Detection 與 Single-label Image Classification 之間的 Gap,或者說這個問題 challenging 的地方一共有兩處:性能
論文成果,在PASCAL VOC數據集上,mAP達到53.3%,相比VOC 2012的結果增長30%。主要有兩個關鍵思想:一是能夠將高性能的CNN網絡應用於自底而上(從背景到前景)的region proposals,以便進行目標檢測和定位;二是當有標籤的數據不多時,用監督預訓練(supervised pre—training)做爲一個輔助任務,而後對特別區域進行微調,能夠顯著提升模型表現力。學習
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.
目標檢測主要有三個模塊組成。
第一個生成單一類的目標區域。第二是對於each region,CNN網絡提取固定長度(fixed-length)特徵向量.第三個是線性分類器SVM.
在測試圖片上,提取大約2000 region proposals。wraps each proposal and forward propagate it through the CNN。對於每一類,咱們使用SVM進行訓練,
all parameters are shared across all categories.在分類中,全部的CNN參數是共享的。也就是說分類任務使用的是同一個CNN網絡。
R-CNN = Region Proposal + CNN + Category-specific Linear SVMs + Non-Maximum Suppression + Bounding Box Regression
Region Proposal 用 Selective Search 實現,選這個文章裏到沒有說是有什麼優勢採選 SS,而是爲了跟其餘已有的方法對比,他們用了 SS。因此徹底能夠用其餘 Region Proposal 方法,好比 BING 之類的。
目前我能理解的 detection 的思路其實就是 region classification,肯定了哪些 region 裏面有什麼類的 object 也就完成了 detection,至於怎麼產生這些 region,能夠用 sliding-window,也能夠用 region proposal,其實我以爲 sliding-window 就是一種特別簡化的 region proposal 嘛。
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.
SVM 用來分類。
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 了。
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.
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以下:
類似度的考慮能夠結合多種策略
答: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.
答:對於 pre-training: discriminatively pre-trained the CNN on a large auxiliary dataset (ILSVRC 2012) with image-level annotations,就是 pretrained AlexNet。
構造 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 這個值。
答:無監督的預訓練不能幫助咱們尋找到更好的初始化權重。
無監督的預訓練並不能下降訓練集的偏差,預先訓練的模型比隨機初始化的模型產生更低的測試成本。它的優勢彷佛是更好的泛化,而不只僅是更好的優化過程。
無參數的預訓練會帶來相似於正則化的效用,是某種特殊的先驗分佈帶來的正則化(此處甚是懵逼),這種效用會隨着模型的複雜性的增大而增大。
suppliment裏面提到,用softmax效果下降4個百分點。緣由有下:
目標檢測中,NMS被用在後期的物體邊界框去除。
NMS 對檢測獲得的所有boxes進行局部的最大搜索,以搜索某鄰域範圍內的最大值,從而濾出一部分 boxes,提高最終的檢測精度。
簡而言之,找出score比較region,其中須要考慮不一樣region的一個重疊問題。
假設從一個圖像中獲得了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.
經過對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。
舉個例子,假設今天老闆給你一個新的數據集,讓你作一下圖片分類,這個數據集是關於Flowers的。問題是,數據集中flower的類別不多,數據集中的數據也很少,你發現從零訓練開始訓練CNN的效果不好,很容易過擬合。怎麼辦呢,因而你想到了使用Transfer Learning,用別人已經訓練好的Imagenet的模型來作。
作的方法有不少:
綜上,Transfer Learning關心的問題是:什麼是「知識」以及如何更好地運用以前獲得的「知識」。這能夠有不少方法和手段。而fine-tune只是其中的一種手段。
如何判斷哪些region屬於同一個物體?這個問題找不到一個統計的答案。
有些圖片能夠經過顏色來區分物體,而有些經過紋理區分,還有一些既不是顏色相近,也是不紋理類似。
因此須要結合多種策略,纔有可能找打圖片中的物體。
Multiscale
在上面兩張圖片, selective search 展現了不一樣scale 的必要性。在左邊的圖片,咱們發現目標有不一樣的scales。在右邊的圖片,咱們必須找到不一樣的scale,由於女孩包含在tv中。
因爲物體之間存在層級關係,因此Selective Search用到了Multiscale的思想。從上圖看出,Select Search在不一樣尺度下可以找到不一樣的物體。
注意,這裏說的不一樣尺度,不是指經過對原圖片進行縮放,或者改變窗口大小的意思,而是,經過分割的方法將圖片分紅不少個region,而且用合併(grouping)的方法將region聚合成大的region,重複該過程直到整張圖片變成一個最大的region。這個過程就可以生成multiscale的region了,並且,也符合了上面「物體之間可能具備層級關係」的假設。
Selective Search方法簡介
ps:(efficient GraphBased Image Segmentation)留着後面再看吧,須要補的知識有點多,喪臉!