多尺度目标检测 Multiscale Object Detection
多尺度目標(biāo)檢測 Multiscale Object Detection
我們在輸入圖像的每個像素上生成多個錨框。這些定位框用于對輸入圖像的不同區(qū)域進(jìn)行采樣。但是,如果錨定框是以圖像的每個像素為中心生成的,很快就會有太多的錨框供我們計算。例如,我們假設(shè)輸入圖像的高度和寬度分別為561和728像素。如果以每個像素為中心生成五個不同形狀的錨框,則超過兩百萬個錨框(561×728×5)需要在圖像上進(jìn)行預(yù)測和標(biāo)記。
減少錨箱數(shù)量并不困難。一種簡單的方法是對輸入圖像中的一小部分像素進(jìn)行均勻采樣,并生成以采樣像素為中心的錨框。此外,我們可以在多個尺度上生成不同數(shù)量和尺寸的錨箱。請注意,較小的對象比較大的對象更有可能定位在圖像上。這里,我們將使用一個簡單的示例:
具有1×1, 1×2,和2×2在具有形狀的圖像上可能有4、2和1可能的位置2×2。 因此,當(dāng)使用較小的錨定框來檢測較小的對象時,我們可以采樣更多的區(qū)域;當(dāng)使用較大的錨框檢測較大的對象時,我們可以采樣較少的區(qū)域。
為了演示如何在多個比例上生成錨框,讓我們先讀一個圖像。它的高度和寬度561×728像素。
%matplotlib inline
from d2l import mxnet as d2l
from mxnet import image, np, npx
npx.set_np()
img = image.imread(’…/img/catdog.jpg’)
h, w = img.shape[0:2]
h, w
(561, 728)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)的二維陣列輸出稱為特征映射。通過定義特征映射的形狀,可以確定任意圖像上均勻采樣的錨盒的中點。
函數(shù)display_anchors定義如下。我們將在特征地圖fmap上的每個單元(像素)上生成錨定框。因為坐標(biāo)軸x和y在錨定框中,錨定被特征地圖fmap的寬度和高度分割,0到1之間的值可以用來表示錨定框在特征地圖中的相對位置。由于錨框錨定點的中點與特征地圖fmap上的所有單元重疊,因此錨定點在任何圖像上的相對空間位置必須具有均勻的分布。具體來說,當(dāng)特征圖的寬度和高度分別設(shè)置為fmap_w和fmap_h時,該函數(shù)將對fmap_h行和fmap_w列進(jìn)行統(tǒng)一采樣,并將它們作為中點生成大小為s(我們假設(shè)列表s的長度為1)和不同縱橫比(比率)的錨框。
def display_anchors(fmap_w, fmap_h, s):
d2l.set_figsize((3.5, 2.5))# The values from the first two dimensions will not affect the outputfmap = np.zeros((1, 10, fmap_w, fmap_h))anchors = npx.multibox_prior(fmap, sizes=s, ratios=[1, 2, 0.5])bbox_scale = np.array((w, h, w, h))d2l.show_bboxes(d2l.plt.imshow(img.asnumpy()).axes,anchors[0] * bbox_scale)
我們首先將重點放在小物體的探測上。為了便于在顯示時進(jìn)行區(qū)分,此處具有不同中點的錨定框不重疊。我們假設(shè)錨框的大小為0.15,特征映射的高度和寬度為4。我們可以看到圖片上4行4列的錨框中點分布均勻。
display_anchors(fmap_w=4, fmap_h=4, s=[0.15])
把特征地圖的高度和寬度減少一半,并使用一個更大的定位框來檢測更大的物體。當(dāng)“大小”設(shè)置為0.4時,某些錨框的區(qū)域之間將發(fā)生重疊。
display_anchors(fmap_w=2, fmap_h=2, s=[0.4])
最后,我們將把特征圖的高度和寬度減少一半,并將錨框大小增加到0.8。現(xiàn)在錨框的中點就是圖像的中心。
display_anchors(fmap_w=1, fmap_h=1, s=[0.8])
由于我們已經(jīng)在多個尺度上生成了不同大小的錨盒,因此我們將使用它們來檢測不同尺度下不同大小的對象。現(xiàn)在我們將介紹一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNNs)的方法。
在一定的范圍內(nèi),假設(shè)我們產(chǎn)生高×寬具有不同中點的錨定框集基于ci,帶形狀的特征地圖高×寬,每組錨箱數(shù)量為a。
例如,對于第一個比例的實驗,我們基于10個(通道數(shù))特征映射生成16組具有不同中點的錨盒,形狀為4×4個,每套含3個錨箱。
根據(jù)地面真實邊界框的分類和位置,為每個錨框標(biāo)記一個類別和偏移量。在當(dāng)前尺度下,目標(biāo)檢測模型需要預(yù)測目標(biāo)的類別和偏移量高×寬,基于輸入圖像具有不同中點的定位框集。
我們假設(shè)ci特征圖是CNN基于輸入圖像的中間輸出。因為每個特征地圖都有高×寬不同的空間位置,相同的位置會有ci單位。根據(jù)感受野的定義,ci同一空間位置的特征圖單元在輸入圖像上具有相同的感受野。因此,它們表示輸入圖像在同一感受野中的信息。
因此,我們可以改變ci,在同一空間位置的要素映射單位生成一個定位框。不難看出,本質(zhì)上,我們利用輸入圖像在某個接收野的信息來預(yù)測輸入圖像上靠近場的錨盒的種類和偏移量。
當(dāng)不同層次的特征映射在輸入圖像上有不同大小的接收野時,它們被用來檢測不同大小的目標(biāo)。例如,我們可以在一個更大的圖像接收層設(shè)計一個更大的圖像接收層。
Summary
We can generate anchor boxes with different numbers and sizes on
multiple scales to detect objects of different sizes on multiple
scales.
The shape of the feature map can be used to determine the midpoint of the anchor boxes that uniformly sample any image.
We use the information for the input image from a certain receptive
field to predict the category and offset of the anchor boxes close to
that field on the image.
總結(jié)
以上是生活随笔為你收集整理的多尺度目标检测 Multiscale Object Detection的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转置卷积Transposed Convo
- 下一篇: 目标检测数据集The Object De