日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SNIP理解

發布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SNIP理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

An Analysis of Scale Invariance in Object Detection – SNIP

出發點

文章分析了小尺度與預訓練模型尺度之間的關系, 并且提出了一個和 Cascade R-CNN 有異曲同工之妙的中心思想: 要讓輸入分布接近模型預訓練的分布(本文主要探討尺度的分布不一致帶來的問題).

之后利用分析的結論, 提出了一個多尺度訓練(MST)的升級版:Scale Normalization for Image Pyramids (SNIP).
用于解決檢測數據集上尺寸極端變化問題。

由于小尺寸與大尺寸對象很難分別在較小和較大的尺寸下識別出來,本文提出了一個新的訓練方案,圖像金字塔的尺寸歸一化(SNIP),有選擇地反向傳播不同尺寸的目標實例的梯度作為圖像尺寸的公式。

作者發現如果將數據集按照圖像中目標的尺寸除以圖像尺寸的比例來排序的話,那么在ImageNet中這個比例的中位數是「0.5444」,而在COCO數據集中,這個比例的中位數是「0.106」 ,如下面的Figure1中兩個「Median」 代表的點所示。

其中橫坐標表示「目標尺寸/圖像尺寸」 的值,而縱坐標則表示比例。我們看到在COCO數據集中大部分目標的面積只有圖像面積的1%以下,這「說明在COCO數據集中小目標占的比例比ImageNet多」。此外,在COCO數據集中,第90%(0.472)的倍數差不多是第10%的倍數(0.106)的20倍,這「說明COCO數據集中目標尺寸變化范圍非常大」。

我們知道在目標檢測算法如Faster RCNN/SSD中常用基于ImageNet數據集預訓練的模型來提取特征,也就是遷移學習,但是我們從Figure1發現ImageNet和COCO數據集在目標的尺寸分布上差異比較大,這樣在做遷移學習時可能會存在一些問題,論文將其稱為域平移「domain-shift」。

研究現狀

為了緩解待檢測目標尺寸變化以及尺寸偏小的問題,有許多方法被提出:

l 將淺層的特征與深層的特征相結合,用于檢測小目標實例。

l 拓展 / 變形的卷積被用來增加檢測對象的感受野,用于檢測大尺寸實例。

l 在不同分辨率網絡層上進行的獨立預測,用于檢測不同尺寸的對象實例。

l 利用上下文信息來進行消歧。

l 在一個大范圍的尺寸內進行訓練。

l 在一個多尺寸的圖片金字塔上進行推斷,并且結合非極大值抑值進行預測。

創新點

  • 「為了減少第二節提到的Domain-Shift,在梯度回傳的時候只將和預訓練模型所基于的訓練數據尺寸相對應的ROI的梯度進行回傳。」

  • 借鑒多尺度訓練的思想,引入圖像金字塔來處理數據集中不同尺寸的數據。」

  • 分辨率、尺寸與圖片大小的關系?

    很多人說分辨率越高的圖片越清晰、越大,這是半錯誤的看法,分辨率其實是密度,是1英寸里有多少像素,所以,文件大小(重量)=面積×密度。舉個簡單例子:比如現在有一小堆沙子,文件大小是重量,像素是一顆沙,不管你怎么裝這堆沙子,它的重量和數量都一樣,就算你在1cm地方放幾萬顆沙子,跟你在1cm的地方只放1顆沙子的都一樣的,因為沙子(像素)總量不變,只是密度變了而導致面積變了而已。圖片的大小由像素的多少決定,分辨率是單位密度,同量像素圖片的分辨率越高,面積越小。

    核心實驗

    實驗一:

    針對創新點一,給出實驗解釋。在ImageNet數據集上做的關于分辨率變化的實驗,也就是「去驗證第二節提到的Domain-Shift對模型效果的影響。如下三個模型:

    l CNN-B」。分類模型基于ImageNet數據集常規的分辨率來訓練(其中分辨率為224*224),但是驗證數據集進行了尺度變化,即先將驗證數據圖片縮小到48,64,80和128,然后再將這些圖片上采樣到與訓練數據相同尺寸作為模型的輸入,這樣上采樣后的圖像分辨率較低。訓練集與驗證集尺寸相同,分辨率不同。「因此這個實驗模擬的就是訓練數據的分辨率和驗證數據的分辨率不一致的時候對模型效果的影響。

    l 「CNN-S」。 這個實驗中,訓練數據的分辨率和驗證數據的分辨率保持一致,這里主要針對的是48和96的分辨率,且尺寸相同。并且對網絡結構的第一層做了修改。例如對于分辨率48的數據進行訓練,將卷積核大小為77的卷積層改成卷積核大小為33,滑動步長為1的卷積層。而基于分辨率96的數據訓練時,將卷積核大小為77的卷積層變成卷積核尺寸為55,步長為2的卷積層。訓練集與驗證集尺寸相同,分辨率相同。「這個實驗模擬的是訓練數據和驗證數據的分辨率一致的效果。

    l 「CNN-B_FT」。這個實驗中,先在224*224常規分辨率上進行預訓練,然后再在上采樣的低分辨率圖片上進行微調,且以上采樣的低分辨率圖片作為驗證。訓練集與驗證集尺寸相同,分辨率一部分相同。「可以看出這個實驗驗證的是基于高分辨率圖像進行訓練的模型是否可以有效提取低分辨率圖像的特征。

    結果如下:

    下圖(a)中可以看出如果驗證集數據的分辨率和訓練數據的分辨率差別越大,則實驗效果越差,這說明CNN對數據的尺度變化的魯棒性還不夠好。從(b),?的結果我們可以看出當訓練數據的分辨率和驗證數據的分辨率相同時,模型的效果會好很多,并且CNN-B-FT的效果更好,而二者的差別僅僅是模型是否在放大的低分辨率圖像上做fine-tune,因此可以得出下面的結論:「基于高分辨率圖像訓練的模型也可以有效提取放大的低分辨率圖像的特征。」

    實驗二:

    對于創新點二,給出實驗解釋。在COCO數據集上關于「特定尺度檢測器」
    和 「多尺度檢測器」 的實驗

    結果如下圖:

    l 和分別代表檢測器基于將原始圖片640480放大到8001400和1400*2000兩種尺寸的圖像進行訓練,從兩者的mAP結果對比可以看出的效果稍好。提升非常小,猜測原因是雖然基于放大圖像訓練的模型在訓練過程中可以提高對小目標物體的檢測,但是由于訓練數據中尺寸中等或較大的目標的尺寸太大所以難以訓練,這就影響了模型最終的效果」

    l 表示訓練數據尺寸是14002000,但是訓練過程中忽略中等尺寸和大尺寸的目標,其中中等和大尺寸的標準是在原始圖像中目標寬高的像素大于80,這就是前面提到的「特定尺度檢測器」,即基于單一尺度的輸入進行訓練,這樣就可以減少Domain-Shift。所以,這個實驗的目的是驗證上面那個實驗的猜想,即:「基于14002000大小的圖像訓練時由于訓練數據中尺寸中等及較大的目標對模型訓練有負作用,因此這里直接在訓練過程中忽略這樣的數據。」 但是從實驗結果看出,這個模型的效果更差了,猜測原因是因為忽略這些訓練數據(大概占比30%)所帶來的的數據損失(降低數據豐富性)對模型的影響更大。

    l MST」 表示訓練一個檢測器時采用不同尺度的圖像進行訓練,即前面說的「多尺度檢測器」。按道理來說這個實驗的效果應該會比前面2個實驗好,可是結果卻不是這樣,這是為什么呢?「主要原因是訓練數據中的那些尺寸非常大或者非常小的目標會影響訓練效果」。

    l SNIP: 「本文在引入MST思想的同時限定了不同尺寸的目標在訓練過程中的梯度回傳,這就是SNIP的核心思想」。

    SNIP算法

    SNIP借鑒了多尺度訓練的思想,在多尺度訓練方法中,由于訓練數據中尺寸極大或極小的目標會影響實驗結果,「因此SNIP的做法就是只對尺寸在指定范圍內的目標回傳損失(該范圍需接近預訓練模型的訓練數據尺寸),這樣就可以減少Domain-Shift的影響。又因為訓練過程中采用了類似多尺度訓練的方法,所以每個目標在訓練時都會有幾個不同的尺寸,那么總有一個尺寸在指定的尺寸范圍內。」還需要注意的一點是在SNIP中,對目標的尺寸限制是在訓練過程,而不是預先對訓練數據進行過濾,訓練數據仍然是基于所有的數據進行的。

    可以看到整個流程還是基于Faster RCNN的,不管是訓練ROI Head還是訓練RPN網絡,都是基于所有Ground Truth來定義候選框和Anchor的標簽。具體來說就是某個ROI在某次訓練中是否進行梯度回傳是和預訓練模型的數據尺寸有關的,也就是說當某個ROI的面積在指定范圍內時,該ROI就是「valid」,否則就是「invalid」(如上圖的紫色框所示)。這些「invalid」 的ROI所對應的「invalid ground truth」 會用來決定RPN網絡中Anchor的有效性。具體來說,「invalid Anchor」 就是和「invalid ground truth」的IOU大于0.3的Anchor,如上圖左邊的黑色框所示。

    關于RPN網絡中不同標簽的anchor比例作者也做了分析,我們知道在RPN網絡中,一個anchor的標簽是根據該anchor和ground truth的IOU來決定的,只有兩種情況下才會認為某個anchor的標簽是正樣本(標簽為1):1、假如該anchor和某個ground truth的IOU超過某個閾值(閾值默認采用是0.7),那么該ancho就是正樣本。2、假如一個ground
    truth和所有anchor的IOU都沒超過該閾值,那么和該ground truth的IOU最大的那個anchor就是正樣本。同樣,作者將conv4的輸出作為RPN網絡的輸入,然后設置了15種anchor(5 scales,3 aspect ratios),接下來就有意思了,作者發現在COCO數據集上(圖像大小為800*1200),只有30%的ground truth滿足前面第一種情況!即便將閾值調整為0.5,也只有58%的ground
    truth滿足第一種情況!這說明什么?說明即便閾值等于0.5,仍有40%的正樣本anchor和ground
    truth的IOU小于0.5(這些anchor是因為滿足前面的情況2才被定義為正樣本)!顯然,這樣的正樣本質量不算很高。而這篇文章因為引入多種分辨率的圖像作為輸入,所以在一定程度上緩解了這種現象。另外,作者也嘗試將conv4和conv5的特征做融合并預測,不過這部分文章只是一筆帶過,還需要看源碼才能知道具體是怎么做的。

    其中圖片尺寸和有效ROI尺寸分別為:14002000-1080、8001200-40160、480800-120無窮。

    RPN階段

  • 對于每一個錨點,分配15個anchors,其中有5種scale,每種scale有3中比例

  • 用所有的GroundTruth給Anchors分配好+/-標簽,即該anchor屬于前景或背景

  • 根據GroundTruth在特征圖上的ROI是否落在[si,ei]范圍內分為Valid/Invalid GT

  • 去除無效的anchors。「invalid Anchor」 就是和「invalid ground truth」的IOU大于0.3的Anchor

  • 實驗結果

    第二行的multi-scale test顯然比第一行的single scale效果要好。第三行,在multi-scale test的基礎上加入multi-scale train的時候,會發現在大尺寸目標(APL)的檢測效果上要比只有multi-scale test的時候差。這個原因我們在前面也介紹過了,主要是因為訓練數據中那些尺寸極大和極小的object對訓練產生了負作用。

    總結

    以上是生活随笔為你收集整理的SNIP理解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。