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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN

發布時間:2024/9/21 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/linolzhang/article/details/74159463

一. 源起于Faster

? ? ? ?深度學習于目標檢測的里程碑成果,來自于這篇論文:

? ? ? ?Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Systems. 2015.

? ? ? ?也可以參考:【論文翻譯】

? ? ? ?雖然該文章前面已經講過,但只給出了很小的篇幅,并沒有作為獨立的一篇展開,這里我們詳細展開并討論其 網絡結構、應用領域 及 后續改進。

? ? ? ?前面文章參考:【目標檢測-RCNN系列】

?

二. 網絡結構

? ? ? ?Faster RCNN的網絡結構圖如下:

? ? ? ??

? ? ? ?用的還是之前的圖,其實對于這張圖只需要記住一點:RPN網絡,這是本文的核心貢獻,RPN通過深度網絡實現了 Proposal 功能,相較于之前的 SS(Selective Search)方法 和 EdgeBoxes 方法有很大提升。

? ? ? ?RPN 我們來看原論文的圖:

? ? ? ??

? ? ? ?這張圖雖然經典,但描述的并不太清楚,有些人可能看不明白,有幾個關鍵點需要說明:

1)RPN 連接在 Conv5 之后

? ? ?參考網絡結構圖,先理解 Conv5,Conv5是前面經過4次conv和pooling。

? ? ?對于原圖800*600的輸入,Feature尺寸?變為[800/16,600/16] = [50,37.5],

? ? ?Conv5的輸出維度為 256,Feature維度?為 256。

2)Anchor 生成與排序

? ? ?特征圖采用滑窗方式遍歷,每個特征像素點 對應K個 Anchor(即不同的Scale和Size),上述input對應的Anchor Count為 50*38*k(9) = 17100。

? ? ?對應如此多的 Anchor,需要通過置信度剔除大多數Candidate,通常保留100-300個就足夠了。

? ? ?訓練過程中通過IOU進行正負樣本的選擇,測試過程中置信度較低的被丟棄。

3)RPN 輸出

? ? ?如上圖所示,輸出分為兩部分,2K Scores + 4K Reg,基于 256d 的 intermediate 層,通過兩個網絡,同時進行 分類 + 回歸,Scores提供了作為前景、背景目標的概率(2位),Reg提供了4個坐標值,標識Box位置。

? ? ?參考如下Caffe結構圖,先通過3*3 的卷積核進行處理,然后1*1的卷積核進行降維,在?k=9 的情況下,每個像素對應生成 2*k?= 18個 Scores 參數 和 4*k = 36個 Reg參數。

? ? ?整體上 1*1 卷積生成的特征是 ? ?分類W*H*18 ? &? ?回歸W*H*36,其中 ReShape 是方便 Softmax 用的,可以忽略掉。

? ? ?Proposal層 根據 Softmax 輸出(丟棄背景),結合對應?Anchor和Stride進行映射,將Box映射到原圖,作為下一步 ROI Pooling 的輸入。

? ? ? ??

4)RPN 結合方式

? ? ?RPN 網絡相對獨立于卷積層,原文中通過 ImageNet 數據集進行預訓練。

? ? ?微調時,分別固定 RPN參數 和 卷積網絡參數,對另外的網絡部分進行微調,也就是說,雖然 Faster實現了端到端的處理,但并未實現全局的 Fine Turning。

?

5)ROI Pooling

? ? ?提取到的 Proposal 作為輸入送到 ROI Pooling 層,與 Conv5 特征圖結合,即在特征圖上標識出了 Proposal 的位置。

? ? > Smooth L1 Loss

? ? ? ? 針對邊框回歸,可以描述為一種映射,即通過 變換函數 f,將原 Box?A=(Ax, Ay, Aw, Ah) 變換為:

? ? ? ? ? ? ? ?f(Ax, Ay, Aw, Ah) = (G'x, G'y, G'w, G'h) ,如下圖所示:

? ? ? ? ? ? ? ??

? ? ? ? t 表示與Ground Truth之間的差異系數(ln 是為了減少w,h的誤差比),公式描述為(其中紅色框內 σ 為一般形式,=1 時與 Fast 一致):

? ? ? ?

? ? ? ?ωin 和?ωout 作為開關控制當前項是否起作用。

?

三. 應用領域

? ? ? ?對于目標檢測的研究分為兩個方向,精度和效率,一方面以 Faster R-CNN為代表的RPN的方法在精度上不斷刷新 mAP;另一方面,以SSD 和 YOLO v2 為代表的回歸方法則是強調效率(或者說性價比),這兩個方向在領域內都有著很大的應用場景。

? ? ? ?Faster RCNN的代表特征是Region Proposal,通過 RPN 將檢測分成兩步,提供 Proposal 和 Location+Class,Proposal 越準確,后面的復合Loss里 Class所占比例就越大,分類自然就更加準確。而回歸方法沒有 Proposal過程,通過 Location+Class直接回歸+分類,反向傳播誤差在Location上面大范圍回歸,降低了分類占比,因此分類準確度不好保證,特別是對于小目標,檢測精度比較差。

? ? ? ?檢測精度是算法最核心的價值,即使是以效率為主的 回歸方法 也會強調準確性,Faster 方法目前所實現的效率通常是 每秒3-5幀(GPU版本),這在非實時系統里面實際上也是足夠使用的,比如在 農業上對于病蟲害的檢測,在醫療領域對于圖像的后處理等等。

? ? ? ?實時系統的應用是更為廣闊的市場,這也是為什么說目前有相當多的人持續投入研究,比如 ADAS、機器人、無人機等,這些領域對于 實時性、準確性、成本控制的要求 帶來了不斷刷新紀錄的研究成果。

? ? ??

四. 后續改進

? ? ? ?關于 Faster RCNN 的改進比較多,我們將隨時關注,保持更新。

? ? ? ?可以參考數據集排名:【KITTI】?【PASCAL VOC 2012】【COCO】

? ? ? ?Faster R-CNN 的三個組成部分思路包括:

1)基礎特征提取網絡

? ? ? ResNet,IncRes V2,ResNeXt 都是顯著超越 VGG 的特征網絡,當然網絡的改進帶來的是計算量的增加。

2)RPN

? ? ? 通過更準確地 ?RPN 方法,減少 Proposal 個數,提高準確度。

3)改進分類回歸層

? ? ? 分類回歸層的改進,包括 通過多層來提取特征 和 判別。

?

?

@改進1:ION

? ? ? ?論文:Inside outside net: Detecting objects in context with skip pooling and recurrent neural networks?? 【點擊下載】

? ? ? ?提出了兩個方面的貢獻:

1)Inside Net

? ? ? 所謂 Inside 是指在 ROI 區域之內,通過連接不同?Scale 下的 Feature Map,實現多尺度特征融合。

? ? ? 這里采用的是 Skip-Pooling,從 conv3-4-5-context 分別提取特征,后面會講到。

? ? ? 多尺度特征 能夠提升對小目標的檢測精度。

2)Outside Net

? ? ? 所謂 Outside 是指 ROI 區域之外,也就是目標周圍的 上下文(Contextual)信息。

? ? ? 作者通過添加了兩個 RNN 層(修改后的 IRNN)實現上下文特征提取。

? ? ? 上下文信息 對于目標遮擋有比較好的適應。

? ? ? ?來看結構圖:

? ? ? ??

? > 多尺度特征

? ? ? ?本文不考慮?Region Proposal 的環節,只在 ROI 之后,從上圖可以看到,分別從 3、4、5 層提取特征,然后再和 context得到的特征做一個連接(concat),這樣做的依據是什么呢?作者給出了實驗驗證結果:

? ? ? ??

? ? ? ?可以看到 Conv2 是用不到的,和我們理解的一致(尺度太大),而特征提取是 通過 L2 Norm + Scale + 1x1 Conv 得到,因為不同 Feature 之間的尺度不一致,Norm 是必須的,通過 歸一化 和 Scale 進行特征提取后,送到 FC全連接層進行 分類和回歸,如上圖所示。

? > Contextual 上下文

? ? ? ?和前面的多尺度的思路一樣,上下文也不是一個新的概念,生成上下文信息有很多種方法,來看下對比示意:

? ? ? ??

? ? ? ?文中用的是 多維的概念,上圖(d)(4-dir),如下圖所示:

? ? ? ??

? ? ? ?與傳統的雙向 RNN 不同,文中 通過上下左右四個方向,并且通過兩次 IRNN 來增加非線性,更加有效的結合全局信息,看實驗效果:

? ? ? ??

?

@改進2:多尺度之 HyperNet

? ? ? ?論文:Hypernet: Towards accurate region proposal generation and joint object detection ? 【點擊下載】

? ? ? ?基于 Region Proposal 的方法,通過多尺度的特征提取來提高對小目標的檢測能力,來看網絡框圖:

? ??

? ? ? ?分為?三個主要特征?來介紹(對應上面網絡拓撲圖的 三個紅色框):

1)Hyper Feature Extraction (特征提取)

? ? ? 多尺度特征提取是本文的核心點,作者的方法稍微有所不同,他是以中間的 Feature 尺度為參考,前面的層通過 Max Pooling 到對應大小,后面的層則是通過 反卷積(Deconv)進行放大。

? ? ? 多尺度 Feature ConCat 的時候,作者使用了 LRN進行歸一化(類似于 ION 的 L2 Norm)。

? ? ? 拋開具體方法不表,對小目標檢測來講,這種多尺度的特征提取已經算是標配,下圖證明采用 1、3、5 的效果要更優(層間隔大,關聯性小)。

? ? ??

2)Region Proposal Generation(建議框生成)

? ? ? 作者設計了一個輕量級的 ConvNet,與 RPN 的區別不大(為寫論文強創新^_^)。

? ? ? ?一個 ROI Pooling層,一個 Conv 層,還有一個 FC 層。每個 Position 通過 ROI Pooling 得到一個 13*13 的 bin,通過 Conv(3*3*4)層得到一個?13*13*4 的 Cube,再通過 FC 層得到一個 256d 的向量。

? ? ? 后面的 Score+ BBox_Reg 與 Faster并無區別,用于目標得分 和 Location OffSet。

? ? ? 考慮到建議框的 Overlap,作者用了?Greedy NMS 去重,文中將 IOU參考設為 0.7,每個 Image 保留 1k?個 Region,并選擇其中 Top-200 做 Detetcion。

? ? ? 通過對比,要優于基于 Edge Box 重排序的 Deep Box,從多尺度上考慮比 Deep Proposal 效果更好。

3)Object Detection(目標檢測)

? ? ? 與 Fast RCNN基本一致,在原來的檢測網絡基礎上做了兩點改進:

? ? ? ?a)在 FC 層之前添加了一個 卷積層(3*3*63),對特征有效降維;

? ? ? ?b)將 DropOut 從 0.5 降到 0.25;

? ? ? 另外,與 Proposal一樣采用了 NMS 進行 Box抑制,但由于之前已經做了,這一步的意義不大。

?

?

? > 訓練過程

? ? ? ?采用了 聯合訓練(joint training)的方法,首先對 Proposal 和 Detection 分別訓練,固定一個訓練另一個,然后 joint 訓練,即共享前面的卷積層訓練一遍,具體可以參考原文給出的訓練流程(這里不再贅述)。

? > 效率改進

? ? ? ?算法整體上和 Faster 運行效率相當,因為加入了多尺度的過程,理論上要比 Faster要慢,作者提出了提高效率的改進方法,將 Conv 層放在 ROI Pooling 層之前,如下圖所示:

? ? ? ??

?

? > 實驗效果對比

? ? ? ?通過對比可以看到 mAP 比 Faster 提高了 1%,主要是多尺度的功勞,其他可以忽略,這一點需要正視。

? ? ? ??

?

@改進3:多尺度之 MSCNN

? ? ? ?論文:A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection ? ?【點擊下載】

? ? ? ?Caffe代碼:【Github】

? ? ? ?論文首先給出了不同的多尺度方法(參考下圖講解):

? ? ? ??

a)原圖縮放,多個Scale的原圖對應不同Scale的Feature;

? ? ? 該方法計算多次Scale,每個Scale提取一次Feature,計算量巨大。

b)一幅輸入圖像對應多個分類器;

? ? ? 不需要重復提取特征圖,但對分類器要求很高,一般很難得到理想的結果。

c)原圖縮放,少量Scale原圖->少量特征圖->多個Model模板;

? ? ? 相當于對 a)和 b)的 Trade-Off。

d)原圖縮放,少量Scale原圖->少量特征圖->特征圖插值->1個Model;

e)RCNN方法,Proposal直接給到CNN;

? ? ? 和 a)全圖計算不同,只針對Patch計算。

f)RPN方法,特征圖是通過CNN卷積層得到;

? ? ? 和 b)類似,不過采用的是同尺度的不同模板,容易導致尺度不一致問題。

g)上套路,提出我們自己的方法,多尺度特征圖;

? ? ? 每個尺度特征圖對應一個 輸出模板,每個尺度cover一個目標尺寸范圍。

? > 拓撲圖

? ? ? ?套路先拋到一邊,原理很簡單,結合拓撲圖(基于VGG的網絡)來看:

? ? ? ??

? ? ? ?上面是提供 多尺度 Proposal 的子圖,黑色 Cube 是網絡輸出,其中 h*w 表示 filter尺寸,c是分類類別,b是Box坐標。

? ? ? ?通過在不同的 Conv Layer 進行輸出(conv4-3,conv5-3,conv6),對應不同尺度的 det 檢測器,得到4個Branch Output。

? ? ? ? ? ?PS:作者提到,conv4-3 Branch比價靠近Bottom,梯度影響會比后面的 Branch要大,因此多加入了一個緩沖層。

? > Loss函數

? ? ? ?再來看 Loss 函數,對于 訓練樣本 Si =(Xi,Yi),其中 Xi 表示輸入圖像,Yi={yi,bi}表示 類別標簽+Box位置,M代表不同的Branch,訓練樣本S按照尺度劃分到不同的Brach,每個Branch權值不同,用a來表示。

? ? ? ?來看下面的公式:

? ? ? ??

? ? ? ? ??

? ? ? ? ?

? ? ? ?后面兩個公式為最上面公式 子項的展開,公式2 中l(X,Y|W) 對應 分類Loss 和 Loc Loss的加權求和,公式3 Loc Loss 同樣采用 Smooth L1 Loss,與Faster方法大致上沒什么區別,此處不再展開。

? > Sampling

? ? ? ?樣本的選擇對于訓練結果非常重要,本文采用多尺度訓練,樣本先劃分到對應 Layer m,在對應Layer上 根據 IOU?劃分為正負樣本,S = {S+,S-},公式:

? ? ? ?

? ? ? ?對應每個Ground Truth (S gt),計算與每個 Anchor Box 的 IOU,結果 o*>0.5?表示正樣本,o*<0.2 歸類為負樣本,其余丟棄。為了保證正負樣本的比例,作者提出三種方法 對負樣本進行篩選:1)隨機采樣; ?2)按Score排序,保留 Top n個強負樣本(Hard Negative); ?3)一般隨機采樣,另一半Score排序;

? ? ? ?同樣由于每個 Scale單獨訓練,可能會出現某個特定的 Scale 正樣本不足,無法滿足比例條件,即?S-/S+?>> λ,作者采用如下方法處理:

? ? ? ??

? ? ? ?通過一個加權的 Cross Entropy 來進行比例調節,思路比較好理解。

? > Training

? ? ? ?作者 Argue?了多尺度訓練的必要性,強調針對 KITTI 這種 Scale 差異比較大的數據集,有比較大的意義。引入了一個 Two-Stage 的訓練過程,通過不同的參數來達到好的訓練效果(具體參數和迭代次數可以參考原文章)。

? > 檢測網絡

? ? ? ?與 RPN 網絡對應的是檢測網絡,檢測網絡與上面的 RPN網絡共享一個 主干網絡(trunk CNN layers),如下圖所示:

? ? ? ??

? ? ? ?這上面有兩點要說明:

1)通過在 conv4-3 后面添加一個 反卷積(Deconvolution),增加特征圖的分辨率,提高了對小目標的檢測精度;

2)加入 Object 的上下文(context)描述,對應上圖的 藍色 Cube,是對應Object(綠色cube)尺寸的1.5倍大小;

? ? ? ?特征圖 通過全連接層后,輸出為一個分類(class probability)加一個位置(bounding box)。

? > 結果評估

? ? ? ?不同尺度上對目標 Recall 的影響:

? ? ? ??

? ? ? ?Input size 對 Proposal Recall 的影響:

? ? ? ??

? ? ? ?比較 state-of-the-art 的 Detection 結果(看來是不錯):

? ? ? ??

--------------------- 本文來自 linolzhang 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/linolzhang/article/details/74159463?utm_source=copy

總結

以上是生活随笔為你收集整理的Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN的全部內容,希望文章能夠幫你解決所遇到的問題。

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