丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給AI科技評論
發(fā)送

0

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

本文作者: AI科技評論 編輯:汪思穎 2019-02-28 11:33
導(dǎo)語:COCO Challenge 2018 檢測任務(wù)中所用到的方法~

雷鋒網(wǎng) AI 科技評論按,本文作者陳愷,該文首發(fā)于知乎,雷鋒網(wǎng) AI 科技評論獲其授權(quán)轉(zhuǎn)載。

前言

進(jìn)入圖片物體檢測這個坑也有一年出頭了,而且至少短期內(nèi)還將繼續(xù)待在坑里而且還拉了同伙入坑。值此新(ji)春(xu)佳(ban)節(jié)(zhuan)之際,打算介紹一些做過的工作,寫一下對這個領(lǐng)域的理解,另外有空的話也會講講 mmdetection 的設(shè)計和一些實現(xiàn)。

作為開篇,就講一下啟動最早的一個項目,"Region Proposal by Guided Anchoring"。這篇 paper 的方法用在了 COCO Challenge 2018 檢測任務(wù)的冠軍方法中,在極高的 baseline 上漲了 1 個點。最近公開在 ArXiv 上,歡迎大家提出意見。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

概述

我們提出了一種新的 anchor 生成方法 —— Guided Anchoring,即通過圖像特征來指導(dǎo) anchor 的生成。通過預(yù)測 anchor 的位置和形狀,來生成稀疏而且形狀任意的 anchor,并且設(shè)計了 Feature Adaption 模塊來修正特征圖使之與 anchor 形狀更加匹配。在使用 ResNet-50-FPN 作為 backbone 的情況下,Guided Anchoring 將 RPN 的 recall(AR@1000) 提高了 9.1 個點,將其用于不同的物體檢測器上,可以提高 mAP 1.2 到 2.7 個點不等。

下圖是我們的方法和傳統(tǒng) RPN 的性能和速度對比,可以看到要顯著優(yōu)于傳統(tǒng) RPN。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

下面是應(yīng)用在不同檢測方法上的結(jié)果,backbone 均為 ResNet-50-FPN。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

背景

Anchor 是物體檢測中的一個重要概念,通常是人為設(shè)計的一組框,作為分類(classification)和框回歸(bounding box regression)的基準(zhǔn)框。無論是單階段(single-stage)檢測器還是兩階段(two-stage)檢測器,都廣泛地使用了 anchor。例如,兩階段檢測器的第一階段通常采用 RPN 生成 proposal,是對 anchor 進(jìn)行分類和回歸的過程,即 anchor -> proposal -> detection bbox;大部分單階段檢測器是直接對 anchor 進(jìn)行分類和回歸,也就是 anchor -> detection bbox。

常見的生成 anchor 的方式是滑窗(sliding window),也就是首先定義 k 個特定尺度(scale)和長寬比(aspect ratio)的 anchor,然后在全圖上以一定的步長滑動。這種方式在 Faster R-CNN,SSD,RetinaNet 等經(jīng)典檢測方法中被廣泛使用。

Motivation

通過 sliding window 生成 anchor 的辦法簡單可行,但也不是完美的,不然就不會有要講的這篇 paper 了。首先,anchor 的尺度和長寬比需要預(yù)先定義,這是一個對性能影響比較大的超參,而且對于不同數(shù)據(jù)集和方法需要單獨調(diào)整。如果尺度和長寬比設(shè)置不合適,可能會導(dǎo)致 recall 不夠高,或者 anchor 過多影響分類性能和速度。一方面,大部分的 anchor 都分布在背景區(qū)域,對 proposal 或者檢測不會有任何正面作用;另一方面,預(yù)先定義好的 anchor 形狀不一定能滿足極端大小或者長寬比懸殊的物體。所以我們期待的是稀疏,形狀根據(jù)位置可變的 anchor。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

Formulation

首先我們思考 anchor 是如何生成的。我們通常使用 4 個數(shù) (x, y, w, h) 來描述一個 anchor,即中心點坐標(biāo)和寬高。我們將 anchor 的分布 formulate 成如下公式。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

Anchor 的概率分布被分解為兩個條件概率分布,也就是給定圖像特征之后 anchor 中心點的概率分布,和給定圖像特征和中心點之后的形狀概率分布,這也是論文標(biāo)題中 Guided Anchoring 的由來。Sliding window 可以看成是Guided Anchoring: 物體檢測器也能自己學(xué) Anchor是均勻分布而Guided Anchoring: 物體檢測器也能自己學(xué) Anchor是沖激函數(shù)的一個特例。

根據(jù)上面的公式,anchor 的生成過程可以分解為兩個步驟,anchor 位置預(yù)測和形狀預(yù)測。在這個看起來很簡單的 formulation 上,我們走過一些彎路,討論過一些奇奇怪怪的方法,最后發(fā)現(xiàn)大道至簡。

方法

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

如圖所示,在原始 RPN 的特征圖基礎(chǔ)上,我們采用兩個分支分別預(yù)測 anchor 位置和形狀,然后結(jié)合在一起得到 anchor。之后采用一個 Feature Adaption 模塊進(jìn)行 anchor 特征的調(diào)整,得到新的特征圖供之后的預(yù)測(anchor 的分類和回歸)使用。整個方法可以 end-to-end training,而且相比之前只是增加了 3 個 1x1 conv 和一個 3x3 deformable conv,帶來的模型參數(shù)量的變化很小。

位置預(yù)測

位置預(yù)測分支的目標(biāo)是預(yù)測哪些區(qū)域應(yīng)該作為中心點來生成 anchor,是一個二分類問題。不同于 RPN 或者 segmentation 的分類,這里我們并不是預(yù)測每個點是前景還是背景,而是預(yù)測是不是物體的中心。

我們將整個 feature map 的區(qū)域分為物體中心區(qū)域,外圍區(qū)域和忽略區(qū)域,大概思路就是將 ground truth 框的中心一小塊對應(yīng)在 feature map 上的區(qū)域標(biāo)為物體中心區(qū)域,在訓(xùn)練的時候作為正樣本,其余區(qū)域按照離中心的距離標(biāo)為忽略或者負(fù)樣本,具體設(shè)計在 paper 里講得比較清楚。通過位置預(yù)測,我們可以篩選出一小部分區(qū)域作為 anchor 的候選中心點位置,使得 anchor 數(shù)量大大降低。在 inference 的時候,預(yù)測完位置之后,我們可以采用 masked conv 替代普通的 conv,只在有 anchor 的地方進(jìn)行計算,可以進(jìn)行加速。

形狀預(yù)測

形狀預(yù)測分支的目標(biāo)是給定 anchor 中心點,預(yù)測最佳的長和寬,這是一個回歸問題。按照往常做法,當(dāng)然是先算出 target,也就是該中心點的 anchor 最優(yōu)的 w 和 h,然后用 L1/L2/Smooth L1 這類 loss 來監(jiān)督。然而這玩意的 target 并不好計算,而且實現(xiàn)起來也會比較困難,所以我們直接使用 IoU 作為監(jiān)督,來學(xué)習(xí) w 和 h。既然我們算不出來最優(yōu)的 w 和 h,而計算 IoU 又是可導(dǎo)的操作,那就讓網(wǎng)絡(luò)自己去優(yōu)化使得 IoU 最大吧。后來改用了 bounded IoU Loss,但原理是一樣的。

這里面還有個問題,就是對于某個 anchor,應(yīng)該優(yōu)化和哪個 ground truth 的 IoU,也就是說應(yīng)該把這個 anchor 分配給哪個 ground truth。對于以前常規(guī)的 anchor,我們可以直接計算它和所有 ground truth 的 IoU,然后將它分配給 IoU 最大的那個 gt。但是很不幸現(xiàn)在的 anchor 的 w 和 h 是不確定的,是一個需要預(yù)測的變量。我們將這個 anchor 和某個 gt 的 IoU 表示為

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

當(dāng)然我們不可能真的把所有可能的 w 和 h 遍歷一遍然后求 IoU 的最大值,所以采用了近似的方法,也就是 sample 一些可能的 w 和 h。理論上 sample 得越多,近似效果越好,但出于效率的考慮,我們 sample 了常見的 9 組 w 和 h。我們通過實驗發(fā)現(xiàn),最終結(jié)果對 sample 的組數(shù)這個超參并不敏感,也就是說不管 sample 多少組,近似效果已經(jīng)足夠。

生成 anchor

在得到 anchor 位置和中心點的預(yù)測之后,我們便可以生成 anchor 了,如下圖所示。這時的 anchor 是稀疏而且每個位置不一樣的。采用生成的 anchor 取代 sliding window,AR (Average Recall) 已經(jīng)可以超過普通 RPN 4 個點了,代價僅僅是增加兩個 1x1 conv。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

Feature Adaption

故事本可以就此結(jié)束,我們用生成的 anchor 和之前的特征圖來進(jìn)行 anchor 的分類和回歸,漲點美滋滋。但是我們發(fā)現(xiàn)一個不合理的地方,大家都是同一層 conv 的特征,憑啥我就可以比別人優(yōu)秀一些,代表一個又長又大的 anchor,你就只能代表一個小小的 anchor。

不合理的原因一方面在于,在同一層 conv 的不同位置,feature 的 receiptive field 是相同的,在原來的 RPN 里面,大家都表示相同形狀的 anchor,所以相安無事,但是現(xiàn)在每個 anchor 都有自己獨特的形狀大小,和 feature 就不是特別好地 match。另一方面,對原本的特征圖來說,它并不知道形狀預(yù)測分支預(yù)測的 anchor 形狀,但是接下來的分類和回歸卻是基于預(yù)測出的 anchor 來做的,可能會比較懵逼。

我們增加了一個 Feature Adaption 模塊來解決這種問題。思路很簡單,就是把 anchor 的形狀信息直接融入到特征圖中,這樣新得到的特征圖就可以去適應(yīng)每個位置 anchor 的形狀。我們利用一個 3x3 的 deformable convolution 來修正原始的特征圖,而 deformable convolution 的 offset 是通過 anchor 的 w 和 h 經(jīng)過一個 1x1 conv 得到的。(此處應(yīng)該劃重點,如果是像正常的 deformable convolution 一樣,用特征圖來預(yù)測 offset,則提升有限,因為沒有起到根據(jù) anchor 形狀來 adapt 的效果)

通過這樣的操作,達(dá)到了讓 feature 的有效范圍和 anchor 形狀更加接近的目的,同一個 conv 的不同位置也可以代表不同形狀大小的 anchor 了。從表格可以看到,F(xiàn)eature Adaption 還是很給力的,帶來了接近 5 個點的提升。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

高質(zhì)量 proposal 的正確打開方式

故事到這里其實也可以結(jié)束了,但是我們遇到了和之前一些改進(jìn) proposal 的 paper 里相同的問題,那就是 proposal 質(zhì)量提升很多(如下圖),但是在 detector 上性能提升比較有限。在不同的檢測模型上,使用 Guided Anchoring 可以提升 1 個點左右。明明有很好的 proposal,但是 mAP 卻沒有漲很多,讓人十分難受。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

經(jīng)過一番探究,我們發(fā)現(xiàn)了以下兩點:1. 減少 proposal 數(shù)量,2. 增大訓(xùn)練時正樣本的 IoU 閾值(這個更重要)。既然在 top300 里面已經(jīng)有了很多高 IoU 的 proposal,那么何必用 1000 個框來訓(xùn)練和測試,既然 proposal 們都這么優(yōu)秀,那么讓 IoU 標(biāo)準(zhǔn)嚴(yán)格一些也未嘗不可。

這個正確的打開方式基本是 Jiaqi 獨立調(diào)出來的,讓 performance 一下好看了很多。通過這兩個改進(jìn),在 Faster R-CNN 上的漲點瞬間提升到了 2.7 個點(沒有加任何 trick),其他方法上也有大幅提升。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

談?wù)?anchor 設(shè)計準(zhǔn)則

我們在 paper 里提到了 anchor 設(shè)計的兩個準(zhǔn)則,alignment(中心對齊) 和 consistency(特征一致)。其中 alignment 是指 anchor 的中心點要和 feature 的位置對齊,consistency 是指 anchor 的特征要和形狀匹配。

  • Alignment

由于每個 anchor 都是由 feature map 上的一個點表示,那么這個 anchor 最好是以這個點為中心,否則位置偏了的話,這個點的 feature 和這個 anchor 就不是非常好地對應(yīng)起來,用該 feature 來預(yù)測 anchor 的分類和回歸會有問題。我們設(shè)計了類似 cascade/iterative RPN 的實驗來證明這一點,對 anchor 進(jìn)行兩次回歸,第一次回歸采用常規(guī)做法,即中心點和長寬都進(jìn)行回歸,這樣第一次回歸之后,anchor 中心點和 feature map 每一個像素的中心就不再完全對齊。我們發(fā)現(xiàn)這樣的兩次 regress 提升十分有限。所以我們在形狀預(yù)測分支只對 w 和 h 做預(yù)測,而不回歸中心點位置。

  • Consistency

這條準(zhǔn)則是我們設(shè)計 feature adaption 的初衷,由于每個位置 anchor 形狀不同而破壞了特征的一致性,我們需要通過 feature adaption 來進(jìn)行修正。這條準(zhǔn)則本質(zhì)上是對于如何準(zhǔn)確提取 anchor 特征的討論。對于兩階段檢測器的第二階段,我們可以通過 RoI Pooling 或者 RoI Align 來精確地提取 RoI 的特征。但是對于 RPN 或者單階段檢測器的 anchor 來說,由于數(shù)量巨大,我們不可能通過這種 heavy 的方法來實現(xiàn)特征和框的精確 match,還是只能用特征圖上一個點,也就是 512x1x1 的向量來表示。那么 Feature Adaption 起到了一個讓特征和 anchor 對應(yīng)更加精確的作用,這種設(shè)計在其他地方也有可以借鑒之處。

總結(jié)

  1. 在 anchor 設(shè)計中,alignment 和 consistency 這兩個準(zhǔn)則十分重要。

  2. 采用兩個 branch 分別預(yù)測 anchor 的位置和形狀,不需要預(yù)先定義。

  3. 利用 anchor 形狀來 adapt 特征圖。

  4. 高質(zhì)量 proposal 可以使用更少的數(shù)量和更高的 IoU 進(jìn)行訓(xùn)練。

  5. 即插即用,無縫替換。

關(guān)于 code

預(yù)計在三月底或者四月的某個時候 release 在 mmdetection (https://github.com/open-mmlab/mmdetection) 里,歡迎 watch。

Arxiv 鏈接

https://arxiv.org/abs/1901.03278

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

Guided Anchoring: 物體檢測器也能自己學(xué) Anchor

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說