您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

10 facebook權重算法(騰訊算法高級研究員陳松堅:智能問答技術及其應用)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-23 16:11:50【】6人已围观

简介興趣的特征子圖proposal。卷積層提取原始圖像信息,得到了256個featuremap,經過RPN層的3x3卷積后,仍然為256個featuremap。但是每個點融合了周圍3x3的空間信息。對每個

興趣的特征子圖proposal。

卷積層提取原始圖像信息,得到了256個feature map,經過RPN層的3x3卷積后,仍然為256個feature map。但是每個點融合了周圍3x3的空間信息。對每個feature map上的一個點,生成k個anchor(k默認為9)。anchor分為前景和背景兩類(我們先不去管它具體是飛機還是汽車,只用區分它是前景還是背景即可)。anchor有[x,y,w,h]四個坐標偏移量,x,y表示中心點坐標,w和h表示寬度和高度。這樣,對于feature map上的每個點,就得到了k個大小形狀各不相同的選區region。

對于生成的anchors,我們首先要判斷它是前景還是背景。由于感興趣的物體位于前景中,故經過這一步之后,我們就可以舍棄背景anchors了。大部分的anchors都是屬于背景,故這一步可以篩選掉很多無用的anchor,從而減少全連接層的計算量。

對于經過了3x3的卷積后得到的256個feature map,先經過1x1的卷積,變換為18個feature map。然后reshape為一維向量,經過softmax判斷是前景還是背景。此處reshape的唯一作用就是讓數據可以進行softmax計算。然后輸出識別得到的前景anchors。

另一路用來確定候選框的位置,也就是anchors的[x,y,w,h]坐標值。如下圖所示,紅色代表我們當前的選區,綠色代表真實的選區。雖然我們當前的選取能夠大概框選出飛機,但離綠色的真實位置和形狀還是有很大差別,故需要對生成的anchors進行調整。這個過程我們稱為bounding box regression。

假設紅色框的坐標為[x,y,w,h], 綠色框,也就是目標框的坐標為[Gx, Gy,Gw,Gh], 我們要建立一個變換,使得[x,y,w,h]能夠變為[Gx, Gy,Gw,Gh]。最簡單的思路是,先做平移,使得中心點接近,然后進行縮放,使得w和h接近。如下:

我們要學習的就是dx dy dw dh這四個變換。由于是線性變換,我們可以用線性回歸來建模。設定loss和優化方法后,就可以利用深度學習進行訓練,并得到模型了。對于空間位置loss,我們一般采用均方差算法,而不是交叉熵(交叉熵使用在分類預測中)。優化方法可以采用自適應梯度下降算法Adam。

得到了前景anchors,并確定了他們的位置和形狀后,我們就可以輸出前景的特征子圖proposal了。步驟如下:

1,得到前景anchors和他們的[x y w h]坐標。

2,按照anchors為前景的不同概率,從大到小排序,選取前pre_nms_topN個anchors,比如前6000個

3,剔除非常小的anchors。

4,通過NMS非極大值抑制,從anchors中找出置信度較高的。這個主要是為了解決選取交疊問題。首先計算每一個選區面積,然后根據他們在softmax中的s買粉絲re(也就是是否為前景的概率)進行排序,將s買粉絲re最大的選區放入隊列中。接下來,計算其余選區與當前最大s買粉絲re選區的IOU(IOU為兩box交集面積除以兩box并集面積,它衡量了兩個box之間重疊程度)。去除IOU大于設定閾值的選區。這樣就解決了選區重疊問題。

5,選取前post_nms_topN個結果作為最終選區proposal進行輸出,比如300個。

經過這一步之后,物體定位應該就基本結束了,剩下的就是物體識別了。

和fast R-CNN中類似,這一層主要解決之前得到的proposal大小形狀各不相同,導致沒法做全連接。全連接計算只能對確定的shape進行運算,故必須使proposal大小形狀變為相同。通過裁剪和縮放的手段,可以解決這個問題,但會帶來信息丟失和圖片形變問題。我們使用ROI pooling可以有效的解決這個問題。

ROI pooling中,如果目標輸出為MxN,則在水平和豎直方向上,將輸入proposal劃分為MxN份,每一份取最大值,從而得到MxN的輸出特征圖。

ROI Pooling層后的特征圖,通過全連接層與softmax,就可以計算屬于哪個具體類別,比如人,狗,飛機,并可以得到cls_prob概率向量。同時再次利用bounding box regression精細調整proposal位置,得到bbox_pred,用于回歸更加精確的目標檢測框。

這樣就完成了faster R-CNN的整個過程了。算法還是相當復雜的,對于每個細節需要反復理解。faster R-CNN使用resNet101模型作為卷積層,在voc2012數據集上可以達到83.8%的準確率,超過yolo ssd和yoloV2。其最大的問題是速度偏慢,每秒只能處理5幀,達不到實時性要求。

針對于two-stage目標檢測算法普遍存在的運算速度慢的缺點, yolo創造性的提出了one-stage。也就是將物體分類和物體定位在一個步驟中完成。 yolo直接在輸出層回歸bounding box的位置和bounding box所屬類別,從而實現one-stage。通過這種方式, yolo可實現45幀每秒的運算速度,完全能滿足實時性要求 (達到24幀每秒,人眼就認為是連續的)。它的網絡結構如下圖:

主要分為三個部分:卷積層,目標檢測層,NMS篩選層。

采用Google inceptionV1網絡,對應到上圖中的第一個階段,共20層。這一層主要是進行特征提取,從而提高模型泛化能力。但作者對inceptionV1進行了改造,他沒有使用inception mole結構,而是用一個1x1的卷積,并聯一個3x3的卷積來替代。(可以認為只使用了inception mole中的一個分支,應該是為了簡化網絡結構)

先經過4個卷積層和2個全連接層,最后生成7x7x30的輸出。先經過4個卷積層的目的是為了提高模型泛化能力。yolo將一副448x448的原圖分割成了7x7個網格,每個網格要預測兩個bounding box的坐標(x,y,w,h)和box內包含物體的置信度買粉絲nfidence,以及物體屬于20類別中每一類的概率(yolo的訓練數據為voc2012,它是一個20分類的數據集)。所以一個網格對應的參數為(4x2+2+20) = 30。如下圖

其中前一項表示有無人工標記的物體落入了網格內,如果有則為1,否則為0。第二項代表bounding box和真實標記的box之間的重合度。它等于兩個box面積交集,除以面積并集。值越大則box越接近真實位置。

分類信息: yolo的目標訓練集為voc2012,它是一個20分類的目標檢測數據集 。常用目標檢測數據集如下表:

| Name | # Images (trainval) | # Classes | Last updated |

| --------------- | ------------------- | --------- | ------------ |

| ImageNet | 450k | 200 | 2015 |

| COCO | 120K | 90 | 2014 |

| Pascal VOC | 12k | 20 | 2012 |

| Oxford-IIIT Pet | 7K | 37 | 2012 |

| KITTI Vision | 7K | 3 | |

每個網格還需要預測它屬于20分類中每一個類別的概率。分類信息是針對每個網格的,而不是bounding box。故只需要20個,而不是40個。而買粉絲nfidence則是針對bounding box的,它只表示box內是否有物體,而不需要預測物體是20分類中的哪一個,故只需要2個參數。雖然分類信息和買粉絲nfidence都是概率,但表達含義完全不同。

篩選層是為了在多個結果中(多個bounding box)篩選出最合適的幾個,這個方法和faster R-CNN 中基本相同。都是先過濾掉s買粉絲re低于閾值的box,對剩下的box進行NMS非極大值抑制,去除掉重疊度比較高的box(NMS具體算法可以回顧上面faster R-CNN小節)。這樣就得到了最終的最合適的幾個box和他們的類別。

yolo的損失函數包含三部分,位置誤差,買粉絲nfidence誤差,分類誤差。具體公式如下:

誤差均采用了均方差算法,其實我認為,位置誤差應該采用均方差算法,而分類誤差應該采用交叉熵。由于物體位置只有4個參數,而類別有20個參數,他們的累加和不同。如果賦予相同的權重,顯然不合理。故yolo中位置誤差權重為5,類別誤差權重為1。由于我們不是特別關心不包含物體的bounding box,故賦予不包含物體的box的置信度買粉絲nfidence誤差的權重為0.5,包含物體的權重則為1。

Faster R-CNN準確率mAP較高,漏檢率recall較低,但速度較慢。而yolo則相反,速度快,但準確率和漏檢率不盡人意。SSD綜合了他們的優缺點,對輸入300x300的圖像,在voc2007數據集上test,能夠達到58 幀每秒( Titan X 的 GPU ),72.1%的mAP。

SSD網絡結構如下圖:

和yolo一樣,也分為三部分:卷積層,目標檢測層和NMS篩選層

SSD論文采用了VGG16的基礎網絡,其實這也是幾乎所有目標檢測神經網絡的慣用方法。先用一個CNN網絡來提取特征,然后再進行后續的目標定位和目標分類識別。

這一層由5個卷積層和一個平均池化層組成。去掉了最后的全連接層。SSD認為目標檢測中的物體,只與周圍信息相關,它的感受野不是全局的,故沒必要也不應該做全連接。SSD的特點如下。

每一個卷積層,都會輸出不同大小感受野的feature map。在這些不同尺度的feature map上,進行目標位置和類別的訓練和預測,從而達到 多尺度檢測 的目的,可以克服yolo對于寬高比不常見的物體,識別準確率較低的問題。而yolo中,只在最后一個卷積層上做目標位置和類別的訓練和預測。這是SSD相對于yolo能提高準確率的一個關鍵所在。

如上所示,在每個卷積層上都會進行目標檢測和分類,最后由NMS進行篩選,輸出最終的結果。多尺度feature map上做目標檢測,就相當于多了很多寬高比例的bounding box,可以大大提高泛化能力。

和faster R-CNN相似,SSD也提出了anchor的概念。卷積輸出的feature map,每個點對應為原圖的一個區域的中心點。以這個點為中心,構造出6個寬高比例不同,大小不同的anchor(SSD中稱為default box)。每個anchor對應4個位置參數(x,y,w,h)和21個類別概率(voc訓練集為20分類問題,在加上anchor是否為背景,共21分類)。如下圖所示:

另外,在訓練階段,SSD將正負樣本比例定位1:3。訓練集給定了輸入圖像以及每個物體的真實區域(ground true box),將default box和真實box最接近的選為正樣本。然后在剩下的default box中選擇任意一個與真實box IOU大于0.5的,作為正樣

很赞哦!(39952)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:湖南衡阳石鼓区

工作室:小组

Email:[email protected]