999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SSD算法推理過程的探析

2018-04-26 01:46:43郭葉軍汪敬華吉明明
現代計算機 2018年5期
關鍵詞:檢測模型

郭葉軍,汪敬華,吉明明

(1.英特爾亞太研發有限公司,上海 200241;2.上海工程技術大學,上海 201620)

0 引言

SSD(Single Shot Multibox Detector)算法[1]是端到端的圖像目標檢測方法,和Faster RCNN[2]相比,最主要的不同是不再需要RPN(Region Proposal Network)來生成候選區域ROIs,因此,SSD算法從輸入圖像開始,到最后的輸出結果,一氣呵成,很好地改善了檢測速度,從而更能滿足目標檢測的實時性要求。

SSD有多種網絡模型,例如SSD300和SSD500等,分別表示支持的待檢測圖像的大小是300×300和500×500。本文根據SSD作者的基于Caffe[3]的SSD實現項目[4]中的示例代碼[5-6],用SSD300的網絡模型deploy.prototxt[7],分析了SSD對圖片fish-bike.jpg[8]的推理過程(inference)。

1 算法探析

1.1 SSD算法的網絡模型和多尺度特征提取

SSD算法在訓練(train)時,固定輸入圖像的大小,因此,待檢測圖像首先要縮放到固定大小,在SSD300中,其圖像大小為300×300,即圖像的高和寬都是300像素。如圖1所示,待檢測圖像輸出為1×3×300×300,它是由Caffe定義的在層之間傳遞的基礎數據結構[3],表示1幅彩色圖像,包括紅綠藍這3個通道,圖像大小是 300×300。

SSD網絡一開始部分基于VGG16模型[4,9]來提取圖像特征,為獲取更多大尺度下的特征信息,VGG網絡模型被分成part1和part2兩部分,其中,part1輸出的feature map的尺度是 38×38(圖中的 1×512×38×38表示 batch size為 1,有 512個 feature map,每個 feature map的大小是38×38),經過規格化層后,保持尺度不變,傳遞至SSD特有網絡,記為變量conv4_3_norm;part2輸出變量 fc7,feature map的尺度是 19×19,傳遞至SSD特有網絡。為獲取更多小尺度下的圖像特征信息,在VGG網絡之后,又依次增加了卷積網絡6、卷積網絡7、卷積網絡8、卷積網絡9,這里每個網絡包括兩個卷積層和兩個RELU層。其輸出的feature map的尺度分別為 10×10、5×5、3×3和 1×1,也都傳遞至 SSD 特有網絡。補充說明:這里規格化層的引入,是為了使不同尺度下的數據具有可比性[10]。

在SSD特有網絡中,有三個生成網絡:mbox_priorbox生成網絡、mbox_loc生成網絡和mbox_conf_flattern生成網絡,它們都分別接受以上6個尺度下的特征信息,然后生成 mbox_priorbox,mbox_loc和 mbox_conf_flattern,再一起傳遞給結果整合層,由結果整合層輸出最后結果,即目標所在的位置、目標所屬的類別和置信度等信息,將在后面詳述。特別指出的是,mbox_priorbox生成網絡,除了接受6個尺度下的特征信息外,還需要將待檢測圖像的大小(即300×300)作為輸入。

1.2 目標位置(Bounding Box)

目標檢測,需要確定圖像中目標所在的位置,因此神經網絡的輸出應包含目標的位置信息,被稱為Bounding Box。在SSD算法中,最終的Bounding Box是由Prior Box和Box Location組合而成,可將Prior Box理解為一個粗略的預定義矩形,可根據已確定的網絡模型參數計算得到;而Box Location則是對預定義矩形Prior Box的坐標調整參數,是網絡經過訓練后的輸出。兩者組合,即得到最終的目標位置結果,根據參數不同,有多種組合算法,詳細代碼實現可參考文獻[11]。下面先重點解析SSD特有網絡中的三個生成網絡。

1.3 mbox_priorbox生成網絡

mbox_priorbox生成網絡的功能是得到prior box的坐標數據,本質上可事先根據已確定的網絡模型參數計算得到,為了更好地描述網絡模型,這里采用了PriorBox層進行計算得到,如圖2所示。PriorBox層分別獨立處理輸入的每個尺度,最后在mbox_priorbox層匯總輸出,當然PriorBox層的參數會有所區別。

圖2 mbox_priorbox生成網絡的方框圖

PriorBox層有兩個輸入,分別是圖像特征信息和待檢測圖像,實際上,它并不會用到輸入的具體數值,只是用到了圖像特征的尺度和原始圖像的大小。以圖中最左側的PriorBox層為例,它只是用到了1×512×38×38中的尺度 38×38,和 1×3×300×300中的圖像大小300×300。PriorBox層還有諸如min_size和aspect_ratio等參數,根據這些參數可以計算出num_priors_,此值代表每個特征點會生成的prior box的數量,具體的生成方法,是從特征點回溯到原圖相應區域,并經過縮放等操作得到多個區域,這樣得到的多個區域就是prior box的坐標。需要注意的是,prior box的坐標會除以相應的原圖寬高進行規格化,這樣,待檢測圖像無論在事前還是事后進行何種等比例縮放,在每個縮放級別,都可以直接使用檢測結果。

仍以圖中最左側的PriorBox層為例,尺度是38×38,num_priors_是 4,就會生成 38×38×4=5776個 prior box,每個box需4個坐標,則共生成5776×4=23104個數據,因此在圖2中,該層輸出的數據維度就是1×2×23104。其中,前23104個數據是生成的所有prior box的坐標數據,后23104個數據則是相應縮放系數[12],在目前的代碼實現中縮放系數是固定值,在最后根據prior box和box location計算得到最終的bounding box時被用作縮放因子。其他5個尺度的輸入也用同樣的方法處理。

在mbox_priorbox層中,將輸入的6組數據進行簡單的維度組合,輸出的數據維度為1×2×34928,這是因為23104+8664+2400+600+144+16=34928,對應著一共34928/4=8732個prior box的坐標和縮放因子。這樣的維度組合,將輸入的多個變量表示為一個變量的形式,主要是為了后面計算bounding box時易于編程處理。

1.4 mbox_loc生成網絡

mbox_loc生成網絡的功能是得到prior box的坐標調整參數,即box location。每個尺度的數據分別經過相同的處理,最后在mbox_loc進行簡單的維度合并,如圖3所示。為圖示簡潔,只畫出了三個尺度(即38×38、10×10和 1×1)的詳細過程,另三個尺度(即 19×19、5×5和3×3)的處理過程用一個方框略之。

以圖3中最左側的輸入conv4_3_norm為例,其數據維度是1×512×38×38,首先經過卷積層 conv4_3_norm_mbox_loc,因為卷積參數 kernel size是 3,pad是1,stride是1,所以輸出的feature map大小還是38×38;而卷積參數num_output是16,因此,這個卷積層的輸出的數據維度是 1×16×38×38。16個 feature map,分別依次對應著4個prior box的調整參數,而每個prior box需要4個調整參數。這里和mbox_priorbox生成網絡中Prior Box層的參數num_priors_是一一對應的。例如,處理conv6_2的卷積層的num_output參數是24,對應著相應Prior Box層中值為6的num_priors。在卷積過程中,feature map的大小并沒有發生變化,因此,實現了box location和prior box的一一對應關系。

仍以圖3中最左側的輸入conv4_3_norm為例,經過卷積層后,還要依次經過層conv4_3_norm_mbox_loc_perm和conv4_3_norm_mbox_loc_flat,這兩層也是為了后面計算bounding box時便于編程處理而引入的。其中,conv4_3_norm_mbox_loc_perm層重排了數據的內存布局,使得數據從頭排列依次為第一個prior box的4個調整參數,第二個prior box的4個調整參數,直到最后一個prior box的4個調整參數。而conv4_3_norm_mbox_loc_flat層則只是換了一個視角來看待數據,不涉及任何內存拷貝,這種新視角便于后續編程處理。

在mbox_loc層中,將輸入的6組數據進行簡單的維度組合,輸出的數據維度為1×34928,這是因為23104+8664+2400+600+144+16=34928。這里將輸入的多個變量表示為一個變量的形式,主要也是為了后面計算bounding box時方便編程處理。

1.5 mbox_conf_flattern生成網絡

mbox_conf_flattern生成網絡的方框圖如圖4所示,為圖示簡潔,同樣也只畫出了三個尺度的詳細過程,另三個尺度的處理過程用一個方框略之。mbox_conf_flattern生成網絡的功能是得到最終的bounding box屬于某個類別的可能性,即置信度(confidence)。本網絡模型基于20個類別訓練而成,再加上背景,一共有21個分類。所以,最終得到的是每個bounding box分別屬于21個分類的可能性得分。

mbox_conf_flattern生成網絡的前面思路和mbox_loc生成網絡非常類似,六個尺度的數據分別獨立處理后在mbox_conf進行簡單的維度合并。唯一不同的是,對每個box,需要生成21個數據,代表屬于21個分類的可能性得分,而不是表示調整參數的4個數據。因此,卷積層的num_output參數值是相應的Prior-Box層的num_priors_的21倍,而不是4倍。

圖3 mbox_loc生成網絡的方框圖

圖4 mbox_conf_flattern生成網絡的方框圖

考慮到屬于21個分類的可能性得分的總和應該是1,所以增加了mbox_conf_softmax層做歸一化處理,而mbox_conf_reshape層則是調整看待數據的視角,以滿足mbox_conf_softmax層的要求。

最后,mbox_conf_flattern層重新恢復了看待數據的視角,方便后續結果整合層的編程處理。mbox_conf_flattern層的輸出維度是1×183372,這是因為8732×21=183372,即對應著8732個box的屬于21個分類的得分,這與前面的mbox_priorbox生成網絡和mbox_loc生成網絡的輸出實現了對應。

1.6 結果整合層

本層首先根據輸入的prior box和box location計算得到8732個bounding box的準確位置,然后使用NMS(non-max suppress)算法,根據得分概率mbox_conf和bounding box的重疊情況,最終給出本圖像中的目標位置和目標類別。其輸出維度是1×1×N×7,其中N就是最終輸出的bounding box的個數,每個bounding box對應7個數據,分別是:image_id(SSD算法可同時處理多個圖像)、label(所屬類別的標號)、confidence(置信度,介于0和1之間),以及bounding box的4個坐標值(即左上和右下坐標xmin、ymin、xmax和ymax,它們在PriorBox層就已做規格化處理,介于0和1之間)。

2 結語

本文從SSD圖像目標檢測算法的網絡模型出發,介紹了SSD算法整體的網絡模型及其特有三個生成網絡層,重點闡明網絡層之間的輸入輸出數據維度的變化和對應關系,以及它們的主要參數和功能,以此來探析SSD算法不同于其他算法的關鍵,也為后續深入研究提供了一種新視角。

參考文獻:

[1]Wei Liu.Dragomir Anguelov,Dumitru Erhan,Christian Szegedy,Scott Reed,Cheng-Yang Fu,Alexander C.Berg.SSD:Single Shot MultiBox Detector.[EB/OL][2016-12-29/2017-9-20].URL:https://arxiv.org/pdf/1512.02325.pdf.

[2]Shaoqing Ren,Kaiming He,Ross Girshick and Jian Sun.Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,39(6):1137-1149.

[3]Y.Jia,E.Shelhamer,J.Donahue,S.Karayev,J.Long,R.Girshick,S.Guadarrama,and T.Darrell.Caffe:Convolutional Architecture for Fast Feature Embedding[J].Proceedings of the 22nd ACM International Conference on Multimedia,2014:675-678.

[4]K.Simonyan,A.Zisserman.Very Deep Convolutional Networks for Large-Scale Image Recognition[C].International Conference on Learning Representations,2015.

[5]Wei Liu.SSD.[EB/OL][2017-5-28/2017-11-15].URL:https://github.com/weiliu89/caffe/tree/ssd.

[6]Wei Liu.ssd_detect[CP/OL][2016-7-11/2017-10-15].URL:https://github.com/weiliu89/caffe/blob/ssd/examples/ssd_detect.ipynb.

[7]models_VGGNet_VOC0712_SSD_300x300.tar.gz[EB/OL][2017-10-4].URL:https://drive.google.com/file/d/0BzKzrI_SkD1_WVVTSmQxU0dVRzA/view

[8]Wei Liu.Fish Bike Example Image.[EB/OL][2014-6-9/2017-9-24].URL:https://github.com/weiliu89/caffe/blob/ssd/examples/images/fish-bike.jpg

[9]Wei Liu,Dragomir Anguelov,Alexander C.Berg.ParseNet:Looking Wider to See Better[C].International Conference on Learning Representations,2016.

[10]Wei Liu.Why normalization Performed Only for conv4_3?[EB/OL][2016-10-24/2017-10-16].URL:https://github.com/weiliu89/caffe/issues/241

[11]Wei Liu.bbox_util.[CP/OL][2016-11-26/2017-10-18].URL:https://github.com/weiliu89/caffe/blob/ssd/src/caffe/util/bbox_util.cpp#L355

[12]Wei Liu.Variance in Priorbox Layer.[EB/OL][2016-8-30/2017-10-12].URL:https://github.com/weiliu89/caffe/issues/155.

猜你喜歡
檢測模型
一半模型
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 这里只有精品免费视频| 久久99这里精品8国产| 久久精品波多野结衣| 久久99精品久久久大学生| 亚洲一区网站| 午夜成人在线视频| 黄色网址手机国内免费在线观看| 日本福利视频网站| 国产一区免费在线观看| 综合色区亚洲熟妇在线| 人人91人人澡人人妻人人爽| 美女扒开下面流白浆在线试听| 四虎国产永久在线观看| 久久国产高潮流白浆免费观看| 26uuu国产精品视频| 亚洲狼网站狼狼鲁亚洲下载| 香蕉蕉亚亚洲aav综合| 色AV色 综合网站| 欧亚日韩Av| 99久久性生片| 色婷婷久久| 久久精品无码中文字幕| a级毛片毛片免费观看久潮| 久久国产精品麻豆系列| 亚洲精品成人7777在线观看| 久久综合色88| 国产精品片在线观看手机版| 色婷婷电影网| 日韩第九页| 中国国产高清免费AV片| 国产高清又黄又嫩的免费视频网站| 欧美一级一级做性视频| 成人a免费α片在线视频网站| 天堂av高清一区二区三区| 一本一道波多野结衣av黑人在线| 在线亚洲小视频| 五月婷婷综合在线视频| 欧美激情一区二区三区成人| 嫩草在线视频| 免费高清a毛片| 福利小视频在线播放| 国产精品视频999| 亚洲人在线| 无码专区国产精品第一页| 欧美国产日韩在线观看| 国产性生大片免费观看性欧美| 五月婷婷综合色| 日本道综合一本久久久88| 国产成人精品优优av| 色视频国产| 亚洲va视频| 国产SUV精品一区二区6| 日本一本在线视频| 免费A级毛片无码免费视频| 超碰91免费人妻| 国产精品久久久久鬼色| 免费亚洲成人| 91精品啪在线观看国产| 一本大道视频精品人妻 | 毛片最新网址| 一级一级特黄女人精品毛片| 国产丝袜丝视频在线观看| 国产白浆一区二区三区视频在线| 国产啪在线91| 久久青草视频| 国产一区二区丝袜高跟鞋| 自慰网址在线观看| 欧美性精品| 亚洲精品无码在线播放网站| 手机永久AV在线播放| 久久国产香蕉| 国产jizzjizz视频| 国产主播在线一区| 精品伊人久久久久7777人| 蜜桃臀无码内射一区二区三区| 久草视频精品| 国产激情无码一区二区三区免费| 国产女人18毛片水真多1| 成人欧美日韩| 免费av一区二区三区在线| 欧美亚洲欧美区| 免费一级无码在线网站|