時間:2023-03-05 17:14:15 來源: 機器之心
The following article is from 機器之心SOTA模型 Author 機器之心SOTA模型
(相關(guān)資料圖)
機器之心專欄
本專欄將逐一盤點自然語言處理、計算機視覺等領(lǐng)域下的常見任務(wù),并對在這些任務(wù)上取得過 SOTA 的經(jīng)典模型逐一詳解。前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現(xiàn)代碼、預(yù)訓(xùn)練模型及 API 等資源。
本文將分 3 期進行連載,共介紹 17個在目標(biāo)檢測任務(wù)上曾取得 SOTA 的經(jīng)典模型。
第 1 期:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、OHEM
第 2 期:R-FCN、Mask RCNN、YoLo、SSD、FPN、RetinaNet
第 3 期:RRC detection、CornerNet、M2Det、FOCS、ObjectBox
您正在閱讀的是其中的第 2 期。前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現(xiàn)代碼、預(yù)訓(xùn)練模型及 API 等資源。
第 1 期回顧:
本期收錄模型速覽
模型 | SOTA!模型資源站收錄情況 | 模型來源論文 |
---|---|---|
R-FCN | https://sota.jiqizhixin.com/project/rfcn 收錄實現(xiàn)數(shù)量:47 支持框架:PyTorch,TensorFlow等 | R-FCN: Object Detection via Region-based Fully Convolutional Networks |
Mask RCNN | https://sota.jiqizhixin.com/project/mask-r-cnn 收錄實現(xiàn)數(shù)量:13 | Mask R-CNN |
YoLo | https://sota.jiqizhixin.com/project/yolo-2017 收錄實現(xiàn)數(shù)量:3 支持框架:PaddlePaddle、TensorFlow等 | You Only Look Once: Unified, Real-Time Object Detection |
SSD | https://sota.jiqizhixin.com/project/ssd-4 收錄實現(xiàn)數(shù)量:27 | SSD: Single Shot Multibox Detector |
FPN | https://sota.jiqizhixin.com/project/fpn-4 收錄實現(xiàn)數(shù)量:4 支持框架:PaddlePaddle,TensorFlow等 | Feature Pyramid Networks for Object Detection |
RetinaNet | https://sota.jiqizhixin.com/project/retinanet-2021 收錄實現(xiàn)數(shù)量:210 | Focal Loss for Dense Object Detection |
目標(biāo)檢測作為計算機視覺的基本問題之一,是許多其他計算機視覺任務(wù)的基礎(chǔ),如實例分割、圖像字幕、對象跟蹤等。簡單來說,目標(biāo)檢測就是對圖片中物體正確分類,同時找到物體的具體位置,具體是指識別圖片中有哪些物體以及物體的位置(坐標(biāo)位置)的技術(shù)。在互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等技術(shù)的發(fā)展浪潮下,目標(biāo)檢測展現(xiàn)出巨大的應(yīng)用價值,受到工業(yè)界、學(xué)術(shù)界越來越多的關(guān)注。
目標(biāo)檢測的發(fā)展大致經(jīng)歷了兩個歷史時期:" 傳統(tǒng)的目標(biāo)檢測時期 " ( 2014年以前 ) 和 " 深度學(xué)習(xí)的目標(biāo)檢測時期 " ( 2014年以后 )。本文重點回顧深度學(xué)習(xí)時代的經(jīng)典模型。在深度學(xué)習(xí)時代,目標(biāo)檢測可以分為兩類:" two-stage detection " 和 " one-stage detection ",前者將檢測框定為一個 " 從粗到細(xì) " 的過程,而后者將其定義為 " 一步完成 "。我們在介紹過程中,將分兩類進行分析。兩階段模型(two-stage detection)因其對圖片的兩階段處理得名,也稱為基于區(qū)域(Region-based)的方法,R-CNN系列工作就是這一類型的代表。單階段模型(one-stage detection)沒有中間的區(qū)域檢出過程,直接從圖片獲得預(yù)測結(jié)果,也被稱為Region-free方法。
本文回顧目標(biāo)檢測中必備的TOP模型,包括one-stage模型和two-stage模型。
一、two-stage模型
1、 R-FCN
前文描述的 R-CNN,SPPNET,F(xiàn)ast R-CNN,F(xiàn)aster R-CNN 的目標(biāo)檢測都是基于全卷積網(wǎng)絡(luò)彼此共同分享以及 ROI 相關(guān)的彼此不共同分享的計算的子網(wǎng)絡(luò),R-FCN算法使用的這兩個子網(wǎng)絡(luò)是位置比較敏感的卷積網(wǎng)絡(luò),而舍棄了之前算法所使用的最后的全連接層,目的是讓所有的計算都可以共享。因此,R-FCN的出發(fā)點就是為了減少重復(fù)計算,盡可能地共享網(wǎng)絡(luò)。為了將 translation variance 引入到全卷積網(wǎng)絡(luò)中,本文設(shè)計了一種特殊的卷積層作為全卷積網(wǎng)絡(luò)的輸出,該卷積層輸出 position-sensitive 的 score map,每個 score map 引入了位置信息。在網(wǎng)絡(luò)的最后一層,再接一個 position-sensitive RoI pooling 層,完成對物體的檢測。在整個網(wǎng)絡(luò)框架中,所有可學(xué)習(xí)的層都是卷積層,同時把空間位置信息引入特征學(xué)習(xí)中,使得整個網(wǎng)絡(luò)可以進行端到端的學(xué)習(xí)。
R-FCN 算法進行目標(biāo)檢測的步驟如下:(1)候選區(qū)域:使用的是 RPN(Region Proposal Network)候選區(qū)域網(wǎng)絡(luò),同時 RPN 網(wǎng)絡(luò)結(jié)構(gòu)是全卷積的網(wǎng)絡(luò);(2)分類和回歸:采用的是 RPN 特征共享的性質(zhì)來進行目標(biāo)的分類。在進行 bbox 回歸的時候,通常將 C 選取為 4。
R-FCN采用 ResNet 101 的卷積層作為基礎(chǔ)的卷積網(wǎng)絡(luò)結(jié)構(gòu),再接一個卷積層用于降維,最后接一個產(chǎn)生 k^2(C+1)個 score map 的 position-sensitive 的卷積層,然后接一個 position-sensitive RoI pooling 層,最后使用 Softmax 判斷 RoI 的類別。此外,還可以接一個產(chǎn)生 4k^2個 map 用于回歸 Bounding box 的位置,同樣應(yīng)用 position-sensitive RoI pooling 層,最后得到一個回歸的位置。具體結(jié)構(gòu)如圖1所示。
圖1. R-FCN的整體架構(gòu)。使用區(qū)域建議網(wǎng)絡(luò)(RPN)提出候選RoI,然后將其應(yīng)用于score map。所有可學(xué)習(xí)的權(quán)重層都是卷積的,并且是在整個圖像上計算的;每個RoI的計算成本可以忽略不計
對于position-sensitive 卷積層,為了將位置信息引入到 position-sensitive 的 feature map 中,對于每個 RoI,將其分割成 k*k 個 bins,每個 bin 的大小約等于 w/kh/k。最后一個卷積層為每個類別生成 k^2 個 score map。在第 (i,j)個 bin (0≤i,j≤k1)上的 position RoI pooling 操作定義為:
每個類別上都可以得到 k 個 position-sensitive 的 score,文章直接對這些值求平均值,得到最終的 score,因為分母都相同,均為 k,因此這個 score 就可以寫成 r_c(Θ)=∑_i.j r_c(i,j∣Θ),在對這個 RoI 分類時,采用 Softmax 的方式在每個類別上的響應(yīng)可以寫成 :
在訓(xùn)練過程中采用交叉熵的方式進行訓(xùn)練。圖8給出了position-sensitive 卷積層的詳細(xì)
展示
圖2. R-FCN的關(guān)鍵思想。圖中有一個全卷積網(wǎng)絡(luò)產(chǎn)生的k×k=3×3的位置敏感分?jǐn)?shù)圖。對于一個RoI中的每一個k×k bins,只對k^2個map中的一個進行匯集(用不同的顏色標(biāo)記)
R-FCN是 Faster R-CNN 的改進版本,其 loss function 定義基本上是一致的:
在該網(wǎng)絡(luò)框架下,所有可學(xué)習(xí)的層都是卷積層,使用 Online Hard Example Mining (OHEM) ,幾乎不會增加訓(xùn)練時間。
當(dāng)前 SOTA!平臺收錄 R-FCN 共 47 個模型實現(xiàn)資源。
項目SOTA!平臺項目詳情頁R-FCN前往 SOTA!模型平臺獲取實現(xiàn)資源:https://sota.jiqizhixin.com/project/rfcn
2、 Mask-RCNN
Mask R-CNN是一個兩階段的框架,第一個階段掃描圖像并生成建議區(qū)域(proposals,即有可能包含一個目標(biāo)的區(qū)域),第二階段分類提議并生成邊界框和掩碼。Mask R-CNN是在Faster R-CNN的基礎(chǔ)上添加了一個預(yù)測分割mask的分支,即在目標(biāo)檢測的基礎(chǔ)上再進行分割。Mask R-CNN算法主要是Faster R-CNN+FCN,更具體一點就是ResNeXt+RPN+RoI Align+Fast R-CNN+FCN,如下圖所示:
圖3. Mask R-CNN 結(jié)構(gòu)圖
Mask R-CNN算法步驟如下:(1)輸入一張圖片,進行數(shù)據(jù)預(yù)處理(尺寸,歸一化等等);(2)將處理好的圖片傳入預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)中(例如,ResNet)以獲得相應(yīng)的feature map;(3)通過feature map中的每一點設(shè)定ROI,獲得多個ROI候選框;(4)對這些多個ROI候選框送到RPN中進行二值分類(前景或后景)和BB回歸(Bounding-box regression),過濾掉一部分候選的ROI;(5)對剩下的ROI進行ROI Align操作(即先將原圖和feature map的pixel對應(yīng)起來,然后將feature map和固定的feature對應(yīng)起來);(6)對這些ROI進行分類(N類別分類),BB回歸和Mask生成(在每一個ROI里面進行FCN操作)。
首先,Mask R-CNN采用ResNet-50或者ResNet-101作為特征提取器提取特征,然后采用FPN(特征金字塔網(wǎng)絡(luò))的結(jié)構(gòu)來進行特征融合。FPN可以同時利用低層特征圖的空間信息和高層特征圖的語義信息,其原理就是把分辨率較小的高層特征首先通過1×1卷積降維(減少計算量),然后上采樣至前一個特征圖的相同尺寸,再進行逐元素相加,就能得到融合后的特征。在得到增強后的特征后,利用RPN(Region Proposal Network)幫助網(wǎng)絡(luò)推薦感興趣的區(qū)域(ROI區(qū)域)。
接下來,需要把所有的ROI都pooling成相同大小的feature map后,才能將它reshape 成一個一維的向量,從而完成后面的分類與回歸任務(wù)。與Faster RCNN中的ROI pooling不同,使用ROI pooling會造成較大的量化誤差,這對于分割任務(wù)來說會造成較大的誤差,因此Mask R-CNN中對ROI pooling進行了改進,提出了ROI Align。RoI Align的思路很簡單:取消量化操作,使用雙線性內(nèi)插的方法獲得坐標(biāo)為浮點數(shù)的像素點上的圖像數(shù)值,從而將整個特征聚集過程轉(zhuǎn)化為一個連續(xù)的操作。值得注意的是,在具體的算法操作上,RoI Align并不是簡單地補充候選區(qū)域邊界上的坐標(biāo)點,然后將這些坐標(biāo)點進行池化,而是重新設(shè)計了一套流程:(1)遍歷每一個候選區(qū)域,保持浮點數(shù)邊界不做量化。(2)將候選區(qū)域分割成 × 個單元,每個單元的邊界也不做量化。(3)在每個單元中計算固定四個坐標(biāo)位置,用雙線性內(nèi)插的方法計算出這四個位置的值,然后進行最大池化操作。
圖4. RoIAlign: 虛線代表一個特征圖,實線代表一個RoI (在本例中為2×2 bins)。RoIAlign通過對特征圖上附近的網(wǎng)格點進行雙線性插值來計算每個采樣點的值。在RoI、bins或采樣點中涉及的任何坐標(biāo)都不進行量化處理
根據(jù)論文所述,我們通過ROI Align可以把RPN生成并篩選后的框所對應(yīng)的區(qū)域全部變成我們需要大的特征圖。而最后的任務(wù)就是對這些特征圖來做進一步的分類、定位、分割。分類和定位和RPN里面的分類定位原理相同,對于分割,如圖11右側(cè)所示,在得到ROI Align處理過的特征后,由于前面進行了多次卷積和池化,減小了對應(yīng)的分辨率,mask分支開始利用反卷積進行分辨率的提升,同時減少通道的個數(shù),maskrcnn使用到了FPN網(wǎng)絡(luò),通過輸入單一尺度的圖片,最后可以對應(yīng)的特征金字塔,首先將ROI變化為14x14x256的feature,然后進行了5次相同的卷積操作,然后進行反卷積操作,最后輸出28x28x80的mask,即輸出了更大的mask。
圖5. 網(wǎng)絡(luò)頭結(jié)構(gòu)
最后,整個Mask RCNN網(wǎng)絡(luò)結(jié)構(gòu)包含兩部分,一部分是backbone用來提取特征(上文提到的采用ResNet-50或者ResNet-101作為特征提取器提取特征),另一部分是head用來對每一個ROI進行分類、框回歸和mask預(yù)測。為了產(chǎn)生對應(yīng)的Mask,文中提出了兩種架構(gòu),即左邊的Faster R-CNN/ResNet和右邊的Faster R-CNN/FPN,如圖11所示。
當(dāng)前 SOTA!平臺收錄 Mask RCNN 共 13 個模型實現(xiàn)資源。
項目SOTA!平臺項目詳情頁Mask RCNN前往 SOTA!模型平臺獲取實現(xiàn)資源:https://sota.jiqizhixin.com/project/mask-r-cnn
二、one-stage模型
1、 YOLO
YOLO是one-stage方法的開山之作。它將檢測任務(wù)表述成一個統(tǒng)一的、端到端的回歸問題,并且以只處理一次圖片同時得到位置和分類而得名。YOLO 是基于回歸方法的,不需要區(qū)域選擇操作,替換成了回歸操作來完成目標(biāo)檢測和目標(biāo)分類。YOLO架構(gòu)如圖12所示。相比Faster RCNN,YOLO結(jié)構(gòu)簡單,網(wǎng)絡(luò)中只包含conv,relu,pooling和全連接層,以及最后用來綜合信息的detect層。其中使用了1x1卷積用于多通道信息融合。
圖6. 檢測網(wǎng)絡(luò)有24個卷積層,然后是2個全連接層。交替出現(xiàn)的1×1卷積層減少了前幾層的特征空間。在ImageNet分類任務(wù)中以一半的分辨率(224×224輸入圖像)對卷積層進行預(yù)訓(xùn)練,然后以兩倍的分辨率進行檢測
YOLO的工作步驟如下:第一步:輸入一張需要檢測的圖片,將這張圖片分割為 7×7 的網(wǎng)絡(luò)結(jié)構(gòu)(即圖13中的S=7);第二步:對于 7×7 網(wǎng)格中的每一個網(wǎng)絡(luò),都提供 2 個預(yù)測的邊框,這兩個邊框包含了每個邊框的目標(biāo)的置信信息和每一個邊框區(qū)域在不同類別上的可能性;第三步:將第二步中預(yù)測出的 7×7×2 個目標(biāo)網(wǎng)絡(luò)的性能進行排列,設(shè)定合適的閾值進行篩選,依據(jù)設(shè)定的閾值將目標(biāo)所在可能性比較低的網(wǎng)絡(luò)窗口剔除,留下可能性比較高的網(wǎng)絡(luò)窗口,同時用 NMS 將冗余窗口去除即可。
圖7. 模型。YOLO將檢測建模為一個回歸問題。它將圖像劃分為一個S×S的網(wǎng)格,并為每個網(wǎng)格單元預(yù)測B的邊界框、這些框的置信度和C類概率。這些預(yù)測被編碼為一個S×S×(B5+C)張量
YOLO 前半部分的網(wǎng)絡(luò)結(jié)構(gòu)和GoogleNet 的結(jié)構(gòu)模型比較相似,YOLO 網(wǎng)絡(luò)結(jié)構(gòu)的特點主要在后面兩層結(jié)構(gòu)上,是在卷積層操作之后連接了一個全連接層,同時這個全連接層是 4096維度的,然后在這個全連接層之后又連接了一個 7×7×30 維度的向量。這個 7×7 就是上文中的將圖片分割成的 7×7 的網(wǎng)絡(luò)結(jié)構(gòu),之后就需要在每一個網(wǎng)絡(luò)上預(yù)測目標(biāo)可能會出現(xiàn)的兩個可能的位置,同時預(yù)測這個目標(biāo)出現(xiàn)的位置在圖片目標(biāo)上的置信信息和類別,也就是說需要預(yù)測兩個目標(biāo)在每一個網(wǎng)格中,每一個目標(biāo)都是有中心點坐標(biāo)和長寬這 4 個維度的信息,1 個目標(biāo)的置信信息,還有 20 個目標(biāo)的類別數(shù),使用 VOC上面的 20 個類別,就會有(4+1)×2+20=30維度,因此后面連接了一個 7×7×30 維度的向量。所以,就可以使用前文的 4096 維度的全連接層在每一個網(wǎng)格上直接回歸出目標(biāo)所需要的置信信息和類別數(shù)。
YOLO訓(xùn)練過程中最終優(yōu)化的目標(biāo)函數(shù)為Loss = λ_coord權(quán)重* 坐標(biāo)預(yù)測誤差 + (含object的box confidence預(yù)測誤差 + λ——noobj* 不含object的box confidence預(yù)測誤差) + 類別預(yù)測誤差:
當(dāng)前 SOTA!平臺收錄 YOLO 共 3 個模型實現(xiàn)資源。
項目SOTA!平臺項目詳情頁
YOLO
前往 SOTA!模型平臺獲取實現(xiàn)資源:https://sota.jiqizhixin.com/project/yolo-20172、 SSD
YOLO 算法中的 7x7 網(wǎng)絡(luò)結(jié)構(gòu)讓目標(biāo)的定位不是很準(zhǔn)確,讓檢測的精確度不是很高,SSD (Single Shot MultiBox Detector)算法結(jié)構(gòu)模型就是將 YOLO 的回歸方法和 Faster R-CNN 的 anchor box思想結(jié)合起來,并對整個圖片的不同位置的不同尺度的區(qū)域特征進行回歸操作,這樣既可以保持 YOLO回歸方法的快速檢測的優(yōu)勢,又使用 Faster R-CNN 中的 anchor 機制保證窗口預(yù)測的準(zhǔn)確度。
SSD網(wǎng)絡(luò)主體設(shè)計的思想是特征分層提取,并依次進行BB邊框回歸和分類。因為不同層次的特征圖能代表不同層次的語義信息,低層次的特征圖能代表低層語義信息(含有更多的細(xì)節(jié)),能提高語義分割質(zhì)量,適合小尺度目標(biāo)的學(xué)習(xí)。高層次的特征圖能代表高層語義信息,能光滑分割結(jié)果,適合對大尺度的目標(biāo)進行深入學(xué)習(xí)。所以作者提出的SSD的網(wǎng)絡(luò)理論上能適合不同尺度的目標(biāo)檢測。SSD網(wǎng)絡(luò)中分為了6個stage,每個stage能學(xué)習(xí)到一個特征圖,然后進行邊框回歸和分類。SSD網(wǎng)絡(luò)以VGG16的前5層卷積網(wǎng)絡(luò)作為第1個stage,然后將VGG16中的fc6和fc7兩個全連接層轉(zhuǎn)化為兩個卷積層Conv6和Conv7作為網(wǎng)絡(luò)的第2、第3個stage。接著在此基礎(chǔ)上,繼續(xù)增加了Conv8、Conv9、Conv10和Conv11四層網(wǎng)絡(luò),用來提取更高層次的語義信息。如圖8為SSD的網(wǎng)絡(luò)結(jié)構(gòu)。在每個stage操作中,網(wǎng)絡(luò)包含了多個卷積層操作,每個卷積層操作基本上都是小卷積。
圖8. 兩個檢測模型的比較,SSD和YOLO。SSD模型在基礎(chǔ)網(wǎng)絡(luò)的末端增加了幾個特征層,預(yù)測不同比例和長寬比的默認(rèn)框的偏移量以及它們的相關(guān)置信度。在VOC2007測試中,輸入尺寸為300×300的SSD在準(zhǔn)確性上明顯優(yōu)于其448×448的YOLO對應(yīng)模型,同時也提高了速度
在SSD中,作者充分的吸取了Faster R-CNN中的Anchor機制,在每個Stage中根據(jù)Feature Map的大小,按照固定的Scale和Radio生成Default Boxes。在每張?zhí)卣鲌D上得到許多Default Box后還需要生成相應(yīng)的特征向量,用來進行邊框回歸和分類。對于分類,SSD網(wǎng)絡(luò)采取為每個類別進行打分的策略,也就是說對于每個Default Box,SSD網(wǎng)絡(luò)會計算出相應(yīng)的每個類別的分?jǐn)?shù)。假設(shè)數(shù)據(jù)集類別數(shù)為c,加上背景,那么總的類別數(shù)就是c+1類。SSD網(wǎng)絡(luò)采用了c+1維向量來分別代表該Default Box對于每個類別所得到的分?jǐn)?shù)。
SSD網(wǎng)絡(luò)對于每個stage輸出的特征圖都進行邊框回歸和分類處理,SSD的損失包括類別損失和定位損失,其中,類別損失L_conf又分為正樣本和負(fù)樣本類別損失,聯(lián)合損失函數(shù)如下:
為了提高檢測準(zhǔn)確度,作者還引入了四種輔助方法:
匹配策略:即ground truth和Default box的匹配。首先,根據(jù)最大的overlap將ground truth和default box進行匹配(根據(jù)ground truth找到default box中IOU最大的作為正樣本);然后,將default boxes與overlap大于某個閾值(目標(biāo)檢測中通常選取0.5)的ground truth進行匹配。
Default boxes生成器:來自網(wǎng)絡(luò)內(nèi)不同層次的特征圖具有不同的(經(jīng)驗)感受野大小。在SSD框架內(nèi),Default box不一定要對應(yīng)于每一層的實際感受區(qū),可以令特定的特征圖學(xué)會對物體的特定比例作出反應(yīng)。假設(shè)我們想使用m個特征圖進行預(yù)測。每個特征圖的default box的比例計算為:
Hard Negative Mining:經(jīng)過匹配策略會得到大量的負(fù)樣本,只有少量的正樣本。這樣導(dǎo)致了正負(fù)樣本不平衡,作者經(jīng)過試驗表明,正負(fù)樣本的不均衡是導(dǎo)致檢測正確率低下的一個重要原因。所以,作者在訓(xùn)練過程中采用了Hard Negative Mining的策略,根據(jù)Confidence Loss對所有的box進行排序,使得正負(fù)樣本的比例控制在1:3之內(nèi)。
數(shù)據(jù)增強:這一步驟的目的是使得模型更加魯棒。作者在文中具體采用的增強手段包括使用整張圖像作為輸入;使用IOU和目標(biāo)物體為0.1、0.3、0.5、0.7和0.9的patch,這些patch在原圖大小的[0.1, 1]之間,相應(yīng)的寬高比在[1/2, 2]之間;隨機采取一個patch;使用光學(xué)增強。
當(dāng)前 SOTA!平臺收錄 SSD 共 27 個模型實現(xiàn)資源。
項目SOTA!平臺項目詳情頁SSD前往 SOTA!模型平臺獲取實現(xiàn)資源:https://sota.jiqizhixin.com/project/ssd-4
3、 FPN
特征金字塔(Feature pyramids)是多尺度目標(biāo)檢測系統(tǒng)中一個重要組成部分,近年來,由于特征金字塔存在影響模型計算速度、占用內(nèi)存等問題,大多數(shù)深度網(wǎng)絡(luò)避免使用這個結(jié)構(gòu)。在此之前,SSD模型提出了一個"內(nèi)置的"特征金字塔解決了上面問題。但是SSD網(wǎng)絡(luò)只采用自底向上的路徑不夠完美,此外,SSD舍棄了高分辨率的底層網(wǎng)絡(luò)層,對小目標(biāo)的檢測效果不夠理想。本文作者提出了基于Bottom-up pathway、Top-down pathway and lateral connections策略的Feature Pyramid Network (FPN)結(jié)構(gòu),在目標(biāo)檢測任務(wù)中取得了不錯的效果。
Bottom-up pathway:自底向上的路徑就是網(wǎng)絡(luò)的前向計算過程,特征圖經(jīng)過卷積層化層一般會越來越小,也有一些特征層的輸出和輸入大小一樣。作者將大小不變的feature map層稱為stage,每次抽取的特征都是每個stage最后一個層的輸出。最后一層具有最強的語義特征,眾多層一起構(gòu)成了特征金字塔。對于ResNet網(wǎng)絡(luò),作者使用每個stage的最后一個殘差結(jié)構(gòu)的特征激活輸出。將這些輸出表示為{C2, C3, C4, C5},對應(yīng)于conv2,conv3,conv4和conv5的輸出,相對于輸入圖像則具有{4, 8, 16, 32}像素的步長。考慮到內(nèi)存占用問題,作者沒有將conv1包含在金字塔中。
Top-down pathway and lateral connections:自頂向下的路徑是通過對網(wǎng)絡(luò)上采樣(upsampling)進行的,橫向連接則是將上采樣的結(jié)果和自底向上生成的相同大小的feature map進行融合。在融合之后為了消除上采樣的混疊效應(yīng)(aliasing effect),采用3*3的卷積核對每個融合結(jié)果進行卷積,并假設(shè)生成的融合特征層為{P2, P3, P4, P5}和原來自底向上的卷積結(jié)果{C2, C3, C4, C5}對應(yīng)。
圖9. 頂部:一個自上而下的結(jié)構(gòu),包含skip connections,預(yù)測是在最細(xì)的層次上進行的。底部:本文模型有一個類似的結(jié)構(gòu),但利用它作為一個特征金字塔,在所有層次上獨立進行預(yù)測
圖10. 一個說明側(cè)向連接和自上而下途徑的構(gòu)件,通過添加而合并
圖10給出了構(gòu)建自上而下特征圖的構(gòu)件。對于一個較粗分辨率的特征圖,將空間分辨率提高2倍(為簡單起見,使用最近的鄰居提高取樣)。然后,通過元素相加的方式將上層map與相應(yīng)的下層map(經(jīng)過1×1卷積層以減少通道尺寸)合并。這個過程反復(fù)進行,直到生成最精細(xì)的分辨率map。為了開始迭代,只需在C5上附加一個1×1卷積層以產(chǎn)生最粗分辨率的map。采用3*3的卷積核對每個融合結(jié)果進行卷積,并假設(shè)生成的融合特征層為{P2, P3, P4, P5}和原來自底向上的卷積結(jié)果{C2, C3, C4, C5}對應(yīng)。
當(dāng)前 SOTA!平臺收錄 FPN 共 4 個模型實現(xiàn)資源。
項目SOTA!平臺項目詳情頁FPN前往 SOTA!模型平臺獲取實現(xiàn)資源:https://sota.jiqizhixin.com/project/fpn-4
4、 RetinaNet
在one-stage檢測器中,檢測器須處理約100K的樣本,其中大多數(shù)都是容易分類的負(fù)樣本,正樣本很少,即使采用困難樣本挖掘等啟發(fā)式抽樣,其訓(xùn)練過程還是主要由容易分類背景負(fù)樣本主導(dǎo)。本文提出了Focal Loss,能夠根據(jù)檢測結(jié)果的置信度動態(tài)調(diào)整其對損失函數(shù)的貢獻。樣本對損失函數(shù)的貢獻會隨著置信度的提高而降低,因此,盡管one-stage檢測存在海量容易分類的背景樣本,但是由于其置信度高,所以其對損失函數(shù)的占比小,因此不會主導(dǎo)訓(xùn)練過程,從而解決了one-stage檢測器正負(fù)樣本不均衡的問題。
首先從二分類的交叉熵?fù)p失函數(shù)出發(fā)分析:
p表示模型預(yù)測當(dāng)前樣本標(biāo)簽為1的概率。為了描述方便,定義p_t 為:
進一步,解決正負(fù)樣本不均衡的方法是在交叉熵?fù)p失函數(shù)中加入加權(quán)因子α,交叉熵?fù)p失函數(shù)改寫為:
通過調(diào)節(jié)加權(quán)因子可以平衡類別間的不均衡。在實際應(yīng)用中,可以將α 設(shè)為類別頻率的相反數(shù),即頻率高的就將α 調(diào)低;或者將α 作為超參數(shù)調(diào)參。但是盡管α 可以調(diào)整正負(fù)樣本的均衡,卻不能調(diào)整難易樣本的均衡,而one-stage檢測器的主要問題在于大量容易負(fù)樣本構(gòu)成了大部分的損失,并主導(dǎo)了梯度,主導(dǎo)了訓(xùn)練過程,因此作者在交叉熵中引入了與預(yù)測置信度相關(guān)的調(diào)節(jié)因子,如下式所示:
對于容易樣本,其預(yù)測的置信度必然相對較高,即預(yù)測的p_t 值較大,那么(1pt) 就可以降低損失的權(quán)重。另外還有一個調(diào)節(jié)懲罰力度的超參數(shù)γ ,γ∈[1,5] 。為了能夠?qū)φ?fù)樣本和難易樣本都取得一個較好的均衡,作者采用以下形式的損失函數(shù):
在二分類的任務(wù)中,默認(rèn)的初始化往往會選擇使得預(yù)測正類和負(fù)類的概率都為0.5。在這樣的初始化下,在類別不平衡的情況下,頻繁出現(xiàn)的類別所造成的損失會支配總的損失,導(dǎo)致早期訓(xùn)練的不穩(wěn)定。為了解決這個問題,作者引入了 "先驗 "的概念,即在訓(xùn)練開始時由模型對稀有類(前景)估計的p值。用π表示先驗,并將其設(shè)置為:模型對稀有類別樣本的估計P很低,例如0.01。作者分析這是對模型初始化的改變,而不是損失函數(shù)的改變。作者發(fā)現(xiàn),在類別嚴(yán)重失衡的情況下,這可以提高交叉熵和焦點損失的訓(xùn)練穩(wěn)定性。
為了驗證Focal Loss的有效性,作者設(shè)計了一個簡單的one-stage目標(biāo)檢測器——RetinaNet,如下圖所示:
圖11. RetinaNet網(wǎng)絡(luò)架構(gòu)在前饋ResNet架構(gòu)之上使用了一個特征金字塔網(wǎng)絡(luò)(FPN)backbone(a),以產(chǎn)生一個豐富的、多尺度的卷積特征金字塔(b)。在這個backbone網(wǎng)絡(luò)上,RetinaNet附加了兩個子網(wǎng)絡(luò),一個用于分類anchor box(c),一個用于從anchor box回歸到ground-truth object box(d)
RetinaNet的網(wǎng)絡(luò)結(jié)構(gòu)是在FPN的每個特征層后面接兩個子網(wǎng)絡(luò),分別是classification subnet(圖11c) 和 bbox regression subnet(圖11d)。由圖11,F(xiàn)PN通過自上而下的路徑和橫向連接增強了標(biāo)準(zhǔn)卷積網(wǎng)絡(luò),因此該網(wǎng)絡(luò)從單個分辨率輸入圖像有效地構(gòu)建了豐富的多尺度特征金字塔,參見圖11(a)-(b)。Retinanet在resnet 架構(gòu)頭部構(gòu)建FPN結(jié)構(gòu),構(gòu)建了P3~P7的特征金字塔,具有C=256t channels。
當(dāng)前 SOTA!平臺收錄 RetinaNet 共 210個模型實現(xiàn)資源。
項目SOTA!平臺項目詳情頁RetinaNet前往 SOTA!模型平臺獲取實現(xiàn)資源:https://sota.jiqizhixin.com/project/retinanet-2021
前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現(xiàn)代碼、預(yù)訓(xùn)練模型及API等資源。
網(wǎng)頁端訪問:在瀏覽器地址欄輸入新版站點地址sota.jiqizhixin.com,即可前往「SOTA!模型」平臺,查看關(guān)注的模型是否有新資源收錄。
移動端訪問:在微信移動端中搜索服務(wù)號名稱「機器之心SOTA模型」或 ID「sotaai」,關(guān)注 SOTA!模型服務(wù)號,即可通過服務(wù)號底部菜單欄使用平臺功能,更有最新AI技術(shù)、開發(fā)資源及社區(qū)動態(tài)定期推送。
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-05
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-04
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03
頭條 23-03-03