目標檢測 1——基本概念和Two Stage網絡模型

筆記來源:DeepLearning-500-questions

1.基本概念

1.1 什麼是目標檢測?

​ 目標檢測(Object Detection)的任務是找出圖像中所有感興趣的目標(物體),確定它們的類別和位置,是計算機視覺領域的核心問題之一。由於各類物體有不同的外觀、形狀和姿態,加上成像時光照、遮擋等因素的干擾,目標檢測一直是計算機視覺領域最具有挑戰性的問題。
計算機視覺中關於圖像識別有四大類任務:

  • 分類-Classification:解決“是什麼?”的問題,即給定一張圖片或一段視頻判斷裏面包含什麼類別的目標。

  • 定位-Location:解決“在哪裏?”的問題,即定位出這個目標的的位置。

  • 檢測-Detection:解決“是什麼?在哪裏?”的問題,即定位出這個目標的的位置並且知道目標物是什麼。

  • 分割-Segmentation:分爲語義分割(Semantic segmentation),實例分割(Instance-segmentation),解決“每一個像素屬於哪個目標物或場景”的問題。
    在這裏插入圖片描述

1.2 目標檢測要解決的核心問題?

除了圖像分類之外,目標檢測要解決的核心問題是:

1.目標可能出現在圖像的任何位置。

2.目標有各種不同的大小。

3.目標可能有各種不同的形狀。

1.3 目標檢測算法分類?

基於深度學習的目標檢測算法主要分爲兩類:

1.Two stage目標檢測算法

​ 先進行區域生成(region proposal,RP)(一個有可能包含待檢物體的預選框),再通過卷積神經網絡進行樣本分類。

​ 任務:特徵提取—>生成RP—>分類/定位迴歸。

​ 常見的two stage目標檢測算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

2.One stage目標檢測算法

​ 不用RP,直接在網絡中提取特徵來預測物體分類和位置。
​ 任務:特徵提取—>分類/定位迴歸。
​ 常見的one stage目標檢測算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。
在這裏插入圖片描述

1.4 目標檢測有哪些應用?

​ 目標檢測具有巨大的實用價值和應用前景。應用領域包括人臉檢測、行人檢測、車輛檢測、飛機航拍或衛星圖像中道路的檢測、車載攝像機圖像中的障礙物檢測、醫學影像在的病竈檢測等。還有在安防領域中,可以實現比如安全帽、安全帶等動態檢測,移動偵測、區域入侵檢測、物品看護等功能。

2. Two Stage目標檢測算法

2.1 R-CNN

R-CNN有哪些創新點?

  1. 使用CNN(ConvNet)對 region proposals 計算 feature vectors。從經驗驅動特徵(SIFT、HOG)到數據驅動特徵(CNN feature map),提高特徵對樣本的表示能力。
  2. 採用大樣本下(ILSVRC)有監督預訓練和小樣本(PASCAL)微調(fine-tuning)的方法解決小樣本難以訓練甚至過擬合等問題。

注:ILSVRC其實就是衆所周知的ImageNet的挑戰賽,數據量極大;PASCAL數據集(包含目標檢測和圖像分割等),相對較小。

R-CNN 介紹

​ R-CNN作爲R-CNN系列的第一代算法,其實沒有過多的使用“深度學習”思想,而是將“深度學習”和傳統的“計算機視覺”的知識相結合。比如R-CNN pipeline中的第二步和第四步其實就屬於傳統的“計算機視覺”技術。使用selective search提取region proposals,使用SVM實現分類。
在這裏插入圖片描述原論文中R-CNN pipeline只有4個步驟,光看上圖無法深刻理解R-CNN處理機制,下面結合圖示補充相應文字

  1. 預訓練模型。選擇一個預訓練 (pre-trained)神經網絡(如AlexNet、VGG)。
  2. 重新訓練全連接層。使用需要檢測的目標重新訓練(re-train)最後全連接層(connected layer)。
  3. 提取 proposals並計算CNN 特徵。利用選擇性搜索(Selective Search)算法提取所有proposals(大約2000幅images),調整(resize/warp)它們成固定大小,以滿足 CNN輸入要求(因爲全連接層的限制),然後將feature map 保存到本地磁盤。
    在這裏插入圖片描述4. 訓練SVM。利用feature map 訓練SVM來對目標和背景進行分類(每個類一個二進制SVM)
    5.邊界框迴歸(Bounding boxes Regression)。訓練將輸出一些校正因子的線性迴歸分類器
    在這裏插入圖片描述R-CNN 實驗結果

R-CNN在VOC 2007測試集上mAP達到58.5%,打敗當時所有的目標檢測算法。
在這裏插入圖片描述

2.2 Fast R-CNN

Fast R-CNN有哪些創新點?

  1. 只對整幅圖像進行一次特徵提取,避免R-CNN中的冗餘特徵提取
  2. 用RoI pooling層替換最後一層的max pooling層,同時引入建議框數據,提取相應建議框特徵
  3. Fast R-CNN網絡末尾採用並行的不同的全連接層,可同時輸出分類結果和窗口迴歸結果,實現了end-to-end的多任務訓練【建議框提取除外】,也不需要額外的特徵存儲空間【R-CNN中的特徵需要保持到本地,來供SVM和Bounding-box regression進行訓練】
  4. 採用SVD對Fast R-CNN網絡末尾並行的全連接層進行分解,減少計算複雜度,加快檢測速度。

Fast R-CNN 介紹

​ Fast R-CNN是基於R-CNN和SPPnets進行的改進。SPPnets,其創新點在於計算整幅圖像的the shared feature map,然後根據object proposal在shared feature map上映射到對應的feature vector(就是不用重複計算feature map了)。當然,SPPnets也有缺點:和R-CNN一樣,訓練是多階段(multiple-stage pipeline)的,速度還是不夠"快",特徵還要保存到本地磁盤中。

將候選區域直接應用於特徵圖,並使用RoI池化將其轉化爲固定大小的特徵圖塊。以下是Fast R-CNN的流程圖

在這裏插入圖片描述
RoI Pooling層詳解
因爲Fast R-CNN使用全連接層,所以應用RoI Pooling將不同大小的ROI轉換爲固定大小。
RoI Pooling 是Pooling層的一種,而且是針對RoI的Pooling,其特點是輸入特徵圖尺寸不固定,但是輸出特徵圖尺寸固定(如7x7)。
什麼是RoI呢?
RoI是Region of Interest的簡寫,一般是指圖像上的區域框,但這裏指的是由Selective Search提取的候選框。
在這裏插入圖片描述往往經過RPN後輸出的不止一個矩形框,所以這裏我們是對多個RoI進行Pooling。

RoI Pooling的輸入

輸入有兩部分組成:

  1. 特徵圖(feature map):指的是上面所示的特徵圖,在Fast RCNN中,它位於RoI Pooling之前,在Faster RCNN中,它是與RPN共享那個特徵圖,通常我們常常稱之爲“share_conv”;
  2. RoIs,其表示所有RoI的N*5的矩陣。其中N表示RoI的數量,第一列表示圖像index,其餘四列表示其餘的左上角和右下角座標。

在Fast RCNN中,指的是Selective Search的輸出;在Faster RCNN中指的是RPN的輸出,一堆矩形候選框,形狀爲1x5x1x1(4個座標+索引index),其中值得注意的是:座標的參考系不是針對feature map這張圖的,而是針對原圖的(神經網絡最開始的輸入)。其實關於ROI的座標理解一直很混亂,到底是根據誰的座標來。其實很好理解,我們已知原圖的大小和由Selective Search算法提取的候選框座標,那麼根據"映射關係"可以得出特徵圖(featurwe map)的大小和候選框在feature map上的映射座標。至於如何計算,其實就是比值問題,下面會介紹。所以這裏把ROI理解爲原圖上各個候選框(region proposals),也是可以的。

注:說句題外話,由Selective Search算法提取的一系列可能含有object的bounding box,這些通常稱爲region proposals或者region of interest(ROI)。

RoI的具體操作

  1. 根據輸入image,將ROI映射到feature map對應位置

    注:映射規則比較簡單,就是把各個座標除以“輸入圖片與feature map的大小的比值”,得到了feature map上的box座標

  2. 將映射後的區域劃分爲相同大小的sections(sections數量與輸出的維度相同)

  3. 對每個sections進行max pooling操作

這樣我們就可以從不同大小的方框得到固定大小的相應 的feature maps。值得一提的是,輸出的feature maps的大小不取決於ROI和卷積feature maps大小。RoI Pooling 最大的好處就在於極大地提高了處理速度。

RoI Pooling的輸出

輸出是batch個vector,其中batch的值等於RoI的個數,vector的大小爲channel * w * h;RoI Pooling的過程就是將一個個大小不同的box矩形框,都映射成大小固定(w * h)的矩形框。

RoI Pooling示例
在這裏插入圖片描述

2.3 Faster R-CNN

Faster R-CNN有哪些創新點?

Fast R-CNN依賴於外部候選區域方法,如選擇性搜索。但這些算法在CPU上運行且速度很慢。在測試中,Fast R-CNN需要2.3秒來進行預測,其中2秒用於生成2000個ROI。Faster R-CNN採用與Fast R-CNN相同的設計,只是它用內部深層網絡代替了候選區域方法。新的候選區域網絡(RPN)在生成ROI時效率更高,並且以每幅圖像10毫秒的速度運行。
Faster R-CNN的流程圖Faster R-CNN的流程圖與Fast R-CNN相同,採用外部候選區域方法代替了內部深層網絡。
在這裏插入圖片描述候選區域網絡

候選區域網絡(RPN)將第一個卷積網絡的輸出特徵圖作爲輸入。它在特徵圖上滑動一個3×3的卷積核,以使用卷積網絡(如下所示的ZF網絡)構建與類別無關的候選區域。其他深度網絡(如VGG或ResNet)可用於更全面的特徵提取,但這需要以速度爲代價。ZF網絡最後會輸出256個值,它們將饋送到兩個獨立的全連接層,以預測邊界框和兩個objectness分數,這兩個objectness分數度量了邊界框是否包含目標。我們其實可以使用迴歸器計算單個objectness分數,但爲簡潔起見,Faster R-CNN使用只有兩個類別的分類器:即帶有目標的類別和不帶有目標的類別。
在這裏插入圖片描述對於特徵圖中的每一個位置,RPN會做k次預測。因此,RPN將輸出4×k個座標和每個位置上2×k個得分。下圖展示了8×8的特徵圖,且有一個3×3的卷積核執行運算,它最後輸出8×8×3個ROI(其中k=3)。下圖(右)展示了單個位置的3個候選區域。
在這裏插入圖片描述假設最好涵蓋不同的形狀和大小。因此,Faster R-CNN不會創建隨機邊界框。相反,它會預測一些與左上角名爲錨點的參考框相關的偏移量(如x, y)。我們限制這些偏移量的值,因此我們的猜想仍然類似於錨點。
在這裏插入圖片描述要對每個位置進行k個預測,我們需要以每個位置爲中心的k個錨點。每個預測與特定錨點相關聯,但不同位置共享相同形狀的錨點。
在這裏插入圖片描述這些錨點是精心挑選的,因此它們是多樣的,且覆蓋具有不同比例和寬高比的現實目標。這使得我們可以用更好的猜想來指導初始訓練,並允許每個預測專門用於特定的形狀。該策略使早期訓練更加穩定和簡便。
在這裏插入圖片描述Faster R-CNN使用更多的錨點。它部署9個錨點框:3個不同寬高比的3個不同大小的錨點(Anchor)框。每一個位置使用9個錨點,每個位置會生成2×9個objectness分數和4×9個座標。

2.4 R-FCN

R-FCN有哪些創新點?

R-FCN 仍屬於two-stage 目標檢測算法:RPN+R-FCN

  1. Fully convolutional
  2. 位置敏感得分圖(position-sentive score maps)

our region-based detector is fully convolutional with almost all computation shared on the entire image. To achieve this goal, we propose position-sensitive score maps to address a dilemma between translation-invariance in image classification and translation-variance in object detection.

R-FCN backbone:ResNet

ResNet-101+R-FCN:83.6% in PASCAL VOC 2007 test datasets

既提高了mAP,又加快了檢測速度

假設我們只有一個特徵圖用來檢測右眼。那麼我們可以使用它定位人臉嗎?應該可以。因爲右眼應該在人臉圖像的左上角,所以我們可以利用這一點定位整個人臉。如果我們還有其他用來檢測左眼、鼻子或嘴巴的特徵圖,那麼我們可以將檢測結果結合起來,更好地定位人臉。現在我們回顧一下所有問題。在Faster R-CNN中,檢測器使用了多個全連接層進行預測。如果有2000個ROI,那麼成本非常高。R-FCN通過減少每個ROI所需的工作量實現加速。上面基於區域的特徵圖與ROI是獨立的,可以在每個ROI之外單獨計算。剩下的工作就比較簡單了,因此R-FCN的速度比Faster R-CNN快。

在這裏插入圖片描述

現在我們來看一下5×5的特徵圖M,內部包含一個藍色方塊。我們將方塊平均分成3×3個區域。現在,我們在M中創建了一個新的特徵圖,來檢測方塊的左上角(TL)。這個新的特徵圖如下圖(右)所示。只有黃色的網格單元[2,2]處於激活狀態。在左側創建一個新的特徵圖,用於檢測目標的左上角。

在這裏插入圖片描述我們將方塊分成9個部分,由此創建了9個特徵圖,每個用來檢測對應的目標區域。這些特徵圖叫做位置敏感得分圖(position-sensitive score map),因爲每個圖檢測目標的子區域(計算其得分)。
在這裏插入圖片描述

下圖中紅色虛線矩形是建議的ROI。我們將其分割成3×3個區域,並詢問每個區域包含目標對應部分的概率是多少。例如,左上角ROI區域包含左眼的概率。我們將結果存儲成3×3 vote數組,如下圖(右)所示。例如,vote_array[0][0]包含左上角區域是否包含目標對應部分的得分。
在這裏插入圖片描述

將ROI應用到特徵圖上,輸出一個3x3數組。將得分圖和ROI映射到vote數組的過程叫做位置敏感ROI池化(position-sensitive ROI-pool)。該過程與前面討論過的ROI池化非常接近。
在這裏插入圖片描述將ROI的一部分疊加到對應的得分圖上,計算V[i][j]。在計算出位置敏感ROI池化的所有值後,類別得分是其所有元素得分的平均值。
在這裏插入圖片描述

假如我們有C個類別要檢測。我們將其擴展爲C+1個類別,這樣就爲背景(非目標)增加了一個新的類別。每個類別有3×3個得分圖,因此一共有(C+1)×3×3個得分圖。使用每個類別的得分圖可以預測出該類別的類別得分。然後我們對這些得分應用 softmax 函數,計算出每個類別的概率。以下是數據流圖,在本案例中,k=3。

在這裏插入圖片描述### 8.2.5 FPN

FPN有哪些創新點?

  1. 多層特徵
  2. 特徵融合

解決目標檢測中的多尺度問題,通過簡單的網絡連接改變,在基本不增加原有模型計算量的情況下,大幅度提升小物體(small object)檢測的性能。

在物體檢測裏面,有限計算量情況下,網絡的深度(對應到感受野)與 stride 通常是一對矛盾的東西,常用的網絡結構對應的 stride 一般會比較大(如 32),而圖像中的小物體甚至會小於 stride 的大小,造成的結果就是小物體的檢測性能急劇下降。傳統解決這個問題的思路包括:

  1. 圖像金字塔(image pyramid),即多尺度訓練和測試。但該方法計算量大,耗時較久。
  2. 特徵分層,即每層分別預測對應的scale分辨率的檢測結果,如SSD算法。該方法強行讓不同層學習同樣的語義信息,但實際上不同深度對應於不同層次的語義特徵,淺層網絡分辨率高,學到更多是細節特徵,深層網絡分辨率低,學到更多是語義特徵。

因而,目前多尺度的物體檢測主要面臨的挑戰爲:

  1. 如何學習具有強語義信息的多尺度特徵表示?
  2. 如何設計通用的特徵表示來解決物體檢測中的多個子問題?如 object proposal, box localization, instance segmentation.
  3. 如何高效計算多尺度的特徵表示?

FPN網絡直接在Faster R-CNN單網絡上做修改,每個分辨率的 feature map 引入後一分辨率縮放兩倍的 feature map 做 element-wise 相加的操作。通過這樣的連接,每一層預測所用的 feature map 都融合了不同分辨率、不同語義強度的特徵,融合的不同分辨率的 feature map 分別做對應分辨率大小的物體檢測。這樣保證了每一層都有合適的分辨率以及強語義(rich semantic)特徵。同時,由於此方法只是在原網絡基礎上加上了額外的跨層連接,在實際應用中幾乎不增加額外的時間和計算量。作者接下來實驗了將 FPN 應用在 Faster RCNN 上的性能,在 COCO 上達到了 state-of-the-art 的單模型精度。在RPN上,FPN增加了8.0個點的平均召回率(average recall,AR);在後面目標檢測上,對於COCO數據集,FPN增加了2.3個點的平均精確率(average precision,AP),對於VOC數據集,FPN增加了3.8個點的AP。
在這裏插入圖片描述FPN算法主要由三個模塊組成,分別是:

  1. Bottom-up pathway(自底向上線路)
  2. Lareral connections(橫向鏈接)
  3. Top-down path(自頂向下線路)
    在這裏插入圖片描述Bottom-up pathway

FPN是基於Faster R-CNN進行改進,其backbone是ResNet-101,FPN主要應用在Faster R-CNN中的RPN(用於bouding box proposal generation)和Fast R-CNN(用於object detection)兩個模塊中。

其中 RPN 和 Fast RCNN 分別關注的是召回率(recall)和精確率(precision),在這裏對比的指標分別爲 Average Recall(AR) 和 Average Precision(AP)。

注:Bottom-up可以理解爲自底向上,Top-down可以理解爲自頂向下。這裏的下是指low-level,上是指high-level,分別對應於提取的低級(淺層)特徵和高級語義(高層)特徵。

Bottom-up pathway 是卷積網絡的前向傳播過程。在前向傳播過程中,feature map的大小可以在某些層發生改變。一些尺度(scale)因子爲2,所以後一層feature map的大小是前一層feature map大小的二分之一,根據此關係進而構成了feature pyramid(hierarchy)。

然而還有很多層輸出的feature map是一樣的大小(即不進行縮放的卷積),作者將這些層歸爲同一 stage。對於feature pyramid,作者爲每個stage定義一個pyramid level。

作者將每個stage的最後一層的輸出作爲feature map,然後不同stage進行同一操作,便構成了feature pyramid。

具體來說,對於ResNets-101,作者使用了每個stage的最後一個殘差結構的特徵激活輸出。將這些殘差模塊輸出表示爲{C2, C3, C4, C5},對應於conv2,conv3,conv4和conv5的輸出,並且注意它們相對於輸入圖像具有{4, 8, 16, 32}像素的步長。考慮到內存佔用,沒有將conv1包含在金字塔中。
在這裏插入圖片描述Top-down pathway and lateral connections

Top-town pathway是上採樣(upsampling)過程。而later connection(橫向連接)是將上採樣的結果和bottom-up pathway生成的相同大小的feature map進行融合(merge)。

注:上採樣尺度因子爲2,因爲爲了和之前下采樣卷積的尺度因子=2一樣。上採樣是放大,下采樣是縮小。

具體操作如下圖所示,上採樣(2x up)feature map與相同大小的bottom-up feature map進行逐像素相加融合(element-wise addition),其中bottom-up feature先要經過1x1卷積層,目的是爲了減少通道維度(reduce channel dimensions)。

注:減少通道維度是爲了將bottom-up feature map的通道數量與top-down feature map的通道數量保持一致,又因爲兩者feature map大小一致,所以可以進行對應位置像素的疊加(element-wise addition)。
在這裏插入圖片描述

2.6 Mask R-CNN

Mask R-CNN有哪些創新點?

  1. Backbone:ResNeXt-101+FPN
  2. RoI Align替換RoI Pooling

Mask R-CNN是一個實例分割(Instance segmentation)算法,主要是在目標檢測的基礎上再進行分割。Mask R-CNN算法主要是Faster R-CNN+FCN,更具體一點就是ResNeXt+RPN+RoI Align+Fast R-CNN+FCN。
在這裏插入圖片描述Mask R-CNN算法步驟

  1. 輸入一幅你想處理的圖片,然後進行對應的預處理操作,或者預處理後的圖片;
  2. 將其輸入到一個預訓練好的神經網絡中(ResNeXt等)獲得對應的feature map;
  3. 對這個feature map中的每一點設定預定個的RoI,從而獲得多個候選RoI;
  4. 將這些候選的RoI送入RPN網絡進行二值分類(前景或背景)和BB迴歸,過濾掉一部分候選的RoI;
  5. 對這些剩下的RoI進行RoI Align操作(即先將原圖和feature map的pixel對應起來,然後將feature map和固定的feature對應起來);
  6. 對這些RoI進行分類(N類別分類)、BB迴歸和MASK生成(在每一個RoI裏面進行FCN操作)。

RoI Pooling和RoI Align有哪些不同?

ROI Align 是在Mask-RCNN中提出的一種區域特徵聚集方式,很好地解決了RoI Pooling操作中兩次量化造成的區域不匹配(mis-alignment)的問題。實驗顯示,在檢測測任務中將 RoI Pooling 替換爲 RoI Align 可以提升檢測模型的準確性。

在常見的兩級檢測框架(比如Fast-RCNN,Faster-RCNN,RFCN)中,RoI Pooling 的作用是根據預選框的位置座標在特徵圖中將相應區域池化爲固定尺寸的特徵圖,以便進行後續的分類和包圍框迴歸操作。由於預選框的位置通常是由模型迴歸得到的,一般來講是浮點數,而池化後的特徵圖要求尺寸固定。故RoI Pooling這一操作存在兩次量化的過程。

  • 將候選框邊界量化爲整數點座標值。
  • 將量化後的邊界區域平均分割成 k×kk\times k 個單元(bin),對每一個單元的邊界進行量化。

事實上,經過上述兩次量化,此時的候選框已經和最開始迴歸出來的位置有一定的偏差,這個偏差會影響檢測或者分割的準確度。在論文裏,作者把它總結爲“不匹配問題(misalignment)”。

下面我們用直觀的例子具體分析一下上述區域不匹配問題。如下圖所示,這是一個Faster-RCNN檢測框架。輸入一張800×800800\times 800的圖片,圖片上有一個665×665665\times 665的包圍框(框着一隻狗)。圖片經過主幹網絡提取特徵後,特徵圖縮放步長(stride)爲32。因此,圖像和包圍框的邊長都是輸入時的1/32。800正好可以被32整除變爲25。但665除以32以後得到20.78,帶有小數,於是RoI Pooling 直接將它量化成20。接下來需要把框內的特徵池化7×77\times 7的大小,因此將上述包圍框平均分割成7×77\times 7個矩形區域。顯然,每個矩形區域的邊長爲2.86,又含有小數。於是ROI Pooling 再次把它量化到2。經過這兩次量化,候選區域已經出現了較明顯的偏差(如圖中綠色部分所示)。更重要的是,該層特徵圖上0.1個像素的偏差,縮放到原圖就是3.2個像素。那麼0.8的偏差,在原圖上就是接近30個像素點的差別,這一差別不容小覷。
在這裏插入圖片描述爲了解決RoI Pooling的上述缺點,作者提出了RoI Align這一改進的方法(如下圖)。
在這裏插入圖片描述
RoI Align的思路很簡單:取消量化操作,使用雙線性內插的方法獲得座標爲浮點數的像素點上的圖像數值,從而將整個特徵聚集過程轉化爲一個連續的操作。值得注意的是,在具體的算法操作上,RoI Align並不是簡單地補充出候選區域邊界上的座標點,然後將這些座標點進行池化,而是重新設計了一套比較優雅的流程,如下圖所示:

  1. 遍歷每一個候選區域,保持浮點數邊界不做量化。
  2. 將候選區域分割成k×kk\times k個單元,每個單元的邊界也不做量化。
  3. 在每個單元中計算固定四個座標位置,用雙線性內插的方法計算出這四個位置的值,然後進行最大池化操作。

這裏對上述步驟的第三點作一些說明:這個固定位置是指在每一個矩形單元(bin)中按照固定規則確定的位置。比如,如果採樣點數是1,那麼就是這個單元的中心點。如果採樣點數是4,那麼就是把這個單元平均分割成四個小方塊以後它們分別的中心點。顯然這些採樣點的座標通常是浮點數,所以需要使用插值的方法得到它的像素值。在相關實驗中,作者發現將採樣點設爲4會獲得最佳性能,甚至直接設爲1在性能上也相差無幾。事實上,RoI Align 在遍歷取樣點的數量上沒有RoI Pooling那麼多,但卻可以獲得更好的性能,這主要歸功於解決了mis alignment的問題。值得一提的是,我在實驗時發現,RoI Align在VOC 2007數據集上的提升效果並不如在COCO上明顯。經過分析,造成這種區別的原因是COCO上小目標的數量更多,而小目標受mis alignment問題的影響更大(比如,同樣是0.5個像素點的偏差,對於較大的目標而言顯得微不足道,但是對於小目標,誤差的影響就要高很多)。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章