如何自建網(wǎng)站百度識圖識別
文章目錄
- 摘要
- Abstract
- 1. 引言
- 2. 框架
- 2.1 網(wǎng)絡結構
- 2.2 損失函數(shù)
- 2.3 訓練細節(jié)
- 3. 創(chuàng)新點和不足
- 3.1 創(chuàng)新點
- 3.2 不足
- 參考
- 總結
摘要
??與Faster R-CNN相比,SSD是一個真正的單階段多目標檢測模型,同時也是一個全卷積網(wǎng)絡,不僅檢測準確率高,而且檢測速度快。SSD顯著的優(yōu)點是使用卷積從不同尺寸的特征圖上預測不同尺度、橫縱比錨點區(qū)域的類別概率分布和偏移量,如此SSD能利用低層特征圖較小的感受野和高層特征圖較大的感受野來分別檢測小物體和大物體。此外,SSD也消除了對候選區(qū)域的縮放。盡管SSD有這些優(yōu)點,但是它也有一個顯著的問題——相較于大物體,小物體的檢測正確率低。SSD提出了一個解決辦法,把圖片縮放成 512 × 512 512\times512 512×512再進行檢測,如此能提升小物體的檢測準確率,但是仍有改進的空間。
Abstract
??Compared to Faster R-CNN, SSD is a true single-stage multi-object detection model and also a fully convolutional network, which not only achieves high detection accuracy but also fast detection speed. A significant advantage of SSD is its use of convolution to predict the class probability distribution and offset of anchor boxes with different scales and aspect ratios from feature maps of different sizes. This allows SSD to detect small objects using the smaller receptive fields of lower-level feature maps and large objects using the larger receptive fields of higher-level feature maps. Moreover, SSD eliminates the need for scaling candidate regions. Despite these advantages, SSD has a significant issue—its detection accuracy for small objects is lower than for large objects. SSD proposed a solution by resizing images to 512 × 512 512 \times 512 512×512 for detection, which improves the detection accuracy for small objects, but there is still room for improvement.
1. 引言
??以前,先進的目標檢測系統(tǒng)都是下面方法的變種:假設邊界框、重采樣每個框中的像素或特征和應用高質量的分類器。自從選擇性搜索和Faster R-CNN在目標檢測數(shù)據(jù)集上取得領先的效果以來,這個管道一直盛行于目標檢測。盡管檢測正確率很高,但是這些方法的計算量對于嵌入式系統(tǒng)來說還是太大了。即使在高端硬件上,這些方法對于實時檢測來說還是太慢了。為了解決上述的問題,研究人員提出了第一個基于單個神經(jīng)網(wǎng)絡模型的物體檢測器——SSD。它不需要對邊界框內(nèi)的像素或特征進行重采樣,而且達到了和以前方法一樣的檢測準確率。
2. 框架
2.1 網(wǎng)絡結構
??下圖是SSD300的結構。
??
編號 | 類型 | 輸入尺寸(H,W,C) | 卷積核/池化核 | 輸出尺寸(H,W,C) | 激活函數(shù) |
---|---|---|---|---|---|
輸入層 | - | 300 × 300 × 3 300\times300\times3 300×300×3 | - | 300 × 300 × 3 300\times300\times3 300×300×3 | - |
C1 | 卷積層 | 300 × 300 × 3 300\times300\times3 300×300×3 | 64個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 300 × 300 × 64 300\times300\times64 300×300×64 | ReLU |
C2 | 卷積層 | 300 × 300 × 64 300\times300\times64 300×300×64 | 64個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 300 × 300 × 64 300\times300\times64 300×300×64 | ReLU |
S3 | 池化層 | 300 × 300 × 64 300\times300\times64 300×300×64 | 2 × 2 2\times2 2×2最大池化核,步長為2 | 150 × 150 × 64 150\times150\times64 150×150×64 | - |
C4 | 卷積層 | 150 × 150 × 64 150\times150\times64 150×150×64 | 128個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 150 × 150 × 128 150\times150\times128 150×150×128 | ReLU |
C5 | 卷積層 | 150 × 150 × 128 150\times150\times128 150×150×128 | 128個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 150 × 150 × 128 150\times150\times128 150×150×128 | ReLU |
S6 | 池化層 | 150 × 150 × 128 150\times150\times128 150×150×128 | 2 × 2 2\times2 2×2最大池化核,步長為2 | 75 × 75 × 128 75\times75\times128 75×75×128 | - |
C7 | 卷積層 | 75 × 75 × 128 75\times75\times128 75×75×128 | 256個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 75 × 75 × 256 75\times75\times256 75×75×256 | ReLU |
C8 | 卷積層 | 75 × 75 × 256 75\times75\times256 75×75×256 | 256個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 75 × 75 × 256 75\times75\times256 75×75×256 | ReLU |
C9 | 卷積層 | 75 × 75 × 256 75\times75\times256 75×75×256 | 256個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 75 × 75 × 256 75\times75\times256 75×75×256 | ReLU |
S10 | 池化層 | 75 × 75 × 256 75\times75\times256 75×75×256 | 2 × 2 2\times2 2×2最大池化核,步長為2,設置向上取整 | 38 × 38 × 256 38\times38\times256 38×38×256 | - |
C11 | 卷積層 | 38 × 38 × 256 38\times38\times256 38×38×256 | 512個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 38 × 38 × 512 38\times38\times512 38×38×512 | ReLU |
C12 | 卷積層 | 38 × 38 × 512 38\times38\times512 38×38×512 | 512個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 38 × 38 × 512 38\times38\times512 38×38×512 | ReLU |
C13 | 卷積層 | 38 × 38 × 512 38\times38\times512 38×38×512 | 512個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 38 × 38 × 512 38\times38\times512 38×38×512 | ReLU |
S14 | 池化層 | 38 × 38 × 512 38\times38\times512 38×38×512 | 2 × 2 2\times2 2×2最大池化核,步長為2 | 19 × 19 × 512 19\times19\times512 19×19×512 | - |
C15 | 卷積層 | 19 × 19 × 512 19\times19\times512 19×19×512 | 512個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 19 × 19 × 512 19\times19\times512 19×19×512 | ReLU |
C16 | 卷積層 | 19 × 19 × 512 19\times19\times512 19×19×512 | 512個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 19 × 19 × 512 19\times19\times512 19×19×512 | ReLU |
C17 | 卷積層 | 19 × 19 × 512 19\times19\times512 19×19×512 | 512個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 19 × 19 × 512 19\times19\times512 19×19×512 | ReLU |
S18 | 池化層 | 19 × 19 × 512 19\times19\times512 19×19×512 | 3 × 3 3\times3 3×3最大池化,步長為1,填充為1 | 19 × 19 × 512 19\times19\times512 19×19×512 | - |
C19 | 卷積層 | 19 × 19 × 512 19\times19\times512 19×19×512 | 1024個 3 × 3 3\times3 3×3卷積核,步長和填充都為1 | 19 × 19 × 1024 19\times19\times1024 19×19×1024 | ReLU |
C20 | 卷積層 | 19 × 19 × 1024 19\times19\times1024 19×19×1024 | 1024個 1 × 1 1\times1 1×1卷積核,步長為1 | 19 × 19 × 1024 19\times19\times1024 19×19×1024 | ReLU |
C21 | 卷積層 | 19 × 19 × 1024 19\times19\times1024 19×19×1024 | 256個 1 × 1 1\times1 1×1卷積核,步長為1 | 19 × 19 × 256 19\times19\times256 19×19×256 | ReLU |
C22 | 卷積層 | 19 × 19 × 256 19\times19\times256 19×19×256 | 512個 3 × 3 3\times3 3×3卷積核,步長為2,填充為1 | 10 × 10 × 512 10\times10\times512 10×10×512 | ReLU |
C23 | 卷積層 | 10 × 10 × 512 10\times10\times512 10×10×512 | 128個 1 × 1 1\times1 1×1卷積核,步長為1 | 10 × 10 × 128 10\times10\times128 10×10×128 | ReLU |
C24 | 卷積層 | 10 × 10 × 128 10\times10\times128 10×10×128 | 256個 3 × 3 3\times3 3×3卷積核,步長為2,填充為1 | 5 × 5 × 256 5\times5\times256 5×5×256 | ReLU |
C25 | 卷積層 | 5 × 5 × 256 5\times5\times256 5×5×256 | 128個 1 × 1 1\times1 1×1卷積核,步長為1 | 5 × 5 × 128 5\times5\times128 5×5×128 | ReLU |
C26 | 卷積層 | 5 × 5 × 128 5\times5\times128 5×5×128 | 256個 3 × 3 3\times3 3×3卷積核,步長為1 | 3 × 3 × 256 3\times3\times256 3×3×256 | ReLU |
C27 | 卷積層 | 3 × 3 × 256 3\times3\times256 3×3×256 | 128個 1 × 1 1\times1 1×1卷積核,步長為1 | 3 × 3 × 128 3\times3\times128 3×3×128 | ReLU |
C28 | 卷積層 | 3 × 3 × 128 3\times3\times128 3×3×128 | 256個 3 × 3 3\times3 3×3卷積核,步長為1 | 1 × 1 × 256 1\times1\times256 1×1×256 | ReLU |
??SSD在C13、C20、C22、C24、C26、C28應用卷積層來獲取錨點區(qū)域的類別概率分布和偏移量。C20、C22、C24、C26、C28比C13多經(jīng)歷了兩次池化,從而導致C13特征圖中元素值的范圍與其他層不同,因此C13在用卷積層計算類別概率分布和偏移量之前需要進行 L 2 L_2 L2?正則化:在每個顏色通道上計算 L 2 L_2 L2?范數(shù),然后每個顏色通道上的元素除以該通道上的 L 2 L^2 L2范數(shù),最后乘以一個初始值為20、可學習的縮放系數(shù)。
??假設數(shù)據(jù)集中目標類別的個數(shù)為 c c c,C13在上述的 L 2 L_2 L2?正則化后再應用一個卷積核大小為 3 × 3 3\times3 3×3、過濾器個數(shù)為 4 × ( c + 4 ) 4\times(c+4) 4×(c+4)的卷積層來獲取概率分布和偏移量;C20、C22和C24分別應用一個卷積核大小為 3 × 3 3\times3 3×3、過濾器個數(shù)為 6 × ( c + 4 ) 6\times(c+4) 6×(c+4)的卷積層來獲取概率分布和偏移量;C26應用一個卷積核大小為 3 × 3 3\times3 3×3、過濾器個數(shù)為 4 × ( c + 4 ) 4\times(c+4) 4×(c+4)的卷積層來獲取概率分布和偏移量;C28應用一個卷積核大小為 1 × 1 1\times1 1×1、過濾器個數(shù)為 4 × ( c + 4 ) 4\times(c+4) 4×(c+4)的卷積層來獲取概率分布和偏移量。
??SSD中用來計算概率分布和偏移量的特征圖擁有不同的尺寸,因此SSD設計了錨點區(qū)域的尺度,使其與特征圖的實際尺寸無關。假設用來計算概率分布和偏移量的特征圖有 m = 6 m=6 m=6個,每個特征圖上錨點區(qū)域的尺度計算公式為:
s k = s m i n + s m a x ? s m i n m ? 1 ( k ? 1 ) , k ∈ [ 1 , m ] . s_k=s_{min}+\frac{s_{max}-s_{min}}{m-1}(k-1), k\in [1, m]. sk?=smin?+m?1smax??smin??(k?1),k∈[1,m].
其中 s m i n = 0.2 s_{min}=0.2 smin?=0.2, s m a x = 0.9 s_{max}=0.9 smax?=0.9。SSD使用了5種不同的橫縱比 a r ∈ { 1 , 2 , 3 , 1 2 , 1 3 } a_r\in\{1, 2, 3, \frac{1}{2}, \frac{1}{3}\} ar?∈{1,2,3,21?,31?},錨點區(qū)域的寬度和高度的計算公式為:
w k a = s k a r , h k a = s k a r . w_k^a=s_k\sqrt{a_r}, h_k^a=\frac{s_k}{\sqrt{a_r}}. wka?=sk?ar??,hka?=ar??sk??.
此外,當橫縱比為1時,額外增加了一種尺度 s k ′ = s k s k + 1 s_k'=\sqrt{s_ks_{k+1}} sk′?=sk?sk+1??。錨點區(qū)域的中心位置的公式為:
x = i + 0.5 ∣ f k ∣ , y = j + 0.5 ∣ f k ∣ . x=\frac{i+0.5}{|f_k|}, y=\frac{j+0.5}{|f_k|}. x=∣fk?∣i+0.5?,y=∣fk?∣j+0.5?.
其中 ∣ f k ∣ |f_k| ∣fk?∣是第 k k k個特征圖的邊長, i , j ∈ [ 0 , ∣ f k ∣ ] i,j\in[0, |f_k|] i,j∈[0,∣fk?∣]。
2.2 損失函數(shù)
??錨點區(qū)域的四元組為錨點區(qū)域中心坐標、寬和高。如果錨點區(qū)域與真實區(qū)域的IOU大于0.5,則錨點區(qū)域為該真實區(qū)域的正例,否則為負例。假設 x i j p = { 1 , 0 } x_{ij}^p=\{1, 0\} xijp?={1,0}為第 i i i個錨點區(qū)域與第 j j j個類別為 p p p的真實區(qū)域的匹配程度,則SSD的損失函數(shù)為:
L ( x , c , l , g ) = 1 N ( L c o n f ( x , c ) + α L l o c ( x , l , g ) ) . L(x, c, l, g)=\frac{1}{N}(L_{conf}(x, c)+\alpha L_{loc}(x, l, g)). L(x,c,l,g)=N1?(Lconf?(x,c)+αLloc?(x,l,g)).
其中 N N N是匹配的錨點區(qū)域的個數(shù)(如果 N = 0 N=0 N=0,則損失為0)。
??定位損失為 L l o c ( x , l , g ) = ∑ i ∈ P o s N ∑ m ∈ { c x , c y , w , h } x i j k s m o o t h L 1 ( l i m ? g ^ j m ) L_{loc}(x, l, g)=\displaystyle\sum_{i\in Pos}^N \sum_{m\in\{cx, cy, w, h\}}x_{ij}^k smooth_{L_1}(l_i^m-\hat{g}_j^m) Lloc?(x,l,g)=i∈Pos∑N?m∈{cx,cy,w,h}∑?xijk?smoothL1??(lim??g^?jm?),其中 g ^ j c x = g j c x ? d i c x d i w \hat{g}_j^{cx}=\displaystyle\frac{g_j^{cx}-d_i^{cx}}{d_i^w} g^?jcx?=diw?gjcx??dicx??, g ^ j c y = g j c y ? d i c y d i h \hat{g}_j^{cy}=\displaystyle\frac{g_j^{cy}-d_i^{cy}}{d_i^h} g^?jcy?=dih?gjcy??dicy??, g ^ j w = l o g ( g j w d i w ) \hat{g}_j^w=log(\displaystyle\frac{g_j^w}{d_i^w}) g^?jw?=log(diw?gjw??), g ^ j h = l o g ( g j h d i h ) \hat{g}_j^h=log(\displaystyle\frac{g_j^h}{d_i^h}) g^?jh?=log(dih?gjh??)。置信損失為 L c o n f ( x , c ) = ? ∑ i ∈ P o s N x i j p l o g ( c ^ i p ) ? ∑ i ∈ N e g l o g ( c ^ i 0 ) L_{conf}(x, c)=\displaystyle-\sum_{i\in Pos}^N x_{ij}^plog(\hat{c}_i^p)-\sum_{i\in Neg}log(\hat{c}_i^0) Lconf?(x,c)=?i∈Pos∑N?xijp?log(c^ip?)?i∈Neg∑?log(c^i0?),其中 c ^ i p = e c i p ∑ p e c i p \hat{c}_i^p=\displaystyle\frac{e^{c_i^p}}{\displaystyle\sum_{p}e^{c_i^p}} c^ip?=p∑?ecip?ecip??。
2.3 訓練細節(jié)
??在訓練過程中,先根據(jù)上面提及的置信損失對所有類別是背景的錨點區(qū)域進行從高到低的排序,然后從中挑選損失最高的錨點區(qū)域,使得負例與正例的樣本個數(shù)之比為 3 : 1 3:1 3:1。每次訓練一輪后重復執(zhí)行上述操作。
??數(shù)據(jù)增強的操作:1. 使用完整的訓練圖片;2. 使用與所有物體的最小IOU為0.1、0.3、0.5、0.7或0.9的區(qū)域;3. 隨機使用一個區(qū)域。上面提到的第2種和第3種區(qū)域的尺度為原訓練圖像的0.1倍到1倍,并且橫縱比為 1 : 2 1:2 1:2和 2 : 1 2:1 2:1。所有采樣后的圖片都被重新縮放到固定尺寸,接著以0.5的概率進行水平翻轉,最后在圖像的對比度、亮度、顏色進行處理。
3. 創(chuàng)新點和不足
3.1 創(chuàng)新點
??與基于R-CNN的目標檢測模型相比,SSD是一個單階段檢測所有物體類別的模型,也消除了對候選區(qū)域的縮放。SSD最顯著的優(yōu)點是使用卷積從不同尺寸的特征圖上預測不同尺度、橫縱比錨點區(qū)域的類別概率分布和偏移量,如此SSD能利用低層特征圖較小的感受野和高層特征圖較大的感受野來分別檢測小物體和大物體。此外,SSD也是一個全卷積網(wǎng)絡,能在運行速度快的同時保證極高的檢測準確率。
3.2 不足
??SSD在檢測小物體時的準確率小于檢測大物體時的準確率。盡管SSD提出了一個解決辦法——把圖片的輸入尺寸縮放成 512 × 512 512\times512 512×512,但是在小物體檢測上仍然具有改進的空間。
參考
Wei Liu, Dragomir Anguelov, Dumitru Erhan, and et al. SSD: Single Shot MultiBox Detector.
總結
??SSD以VGG16的卷積部分為基礎網(wǎng)絡,修改了VGG16卷積部分中最后一層池化層,并在后面添加了幾層卷積層,最后在不同特征圖上進行卷積來獲取錨點區(qū)域的類別概率分布和偏移量。SD最顯著的優(yōu)點是使用卷積從不同尺寸的特征圖上預測不同尺度、橫縱比錨點區(qū)域的類別概率分布和偏移量,如此SSD能利用低層特征圖較小的感受野和高層特征圖較大的感受野來分別檢測小物體和大物體。此外,SSD也是一個全卷積網(wǎng)絡,能在運行速度快的同時保證極高的檢測準確率。