亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        SSD算法推理過程的探析

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

        郭葉軍,汪敬華,吉明明

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

        0 引言

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

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

        1 算法探析

        1.1 SSD算法的網(wǎng)絡(luò)模型和多尺度特征提取

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

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

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

        1.2 目標(biāo)位置(Bounding Box)

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

        1.3 mbox_priorbox生成網(wǎng)絡(luò)

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

        圖2 mbox_priorbox生成網(wǎng)絡(luò)的方框圖

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

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

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

        1.4 mbox_loc生成網(wǎng)絡(luò)

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

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

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

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

        1.5 mbox_conf_flattern生成網(wǎng)絡(luò)

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

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

        圖3 mbox_loc生成網(wǎng)絡(luò)的方框圖

        圖4 mbox_conf_flattern生成網(wǎng)絡(luò)的方框圖

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

        最后,mbox_conf_flattern層重新恢復(fù)了看待數(shù)據(jù)的視角,方便后續(xù)結(jié)果整合層的編程處理。mbox_conf_flattern層的輸出維度是1×183372,這是因為8732×21=183372,即對應(yīng)著8732個box的屬于21個分類的得分,這與前面的mbox_priorbox生成網(wǎng)絡(luò)和mbox_loc生成網(wǎng)絡(luò)的輸出實現(xiàn)了對應(yīng)。

        1.6 結(jié)果整合層

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

        2 結(jié)語

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

        參考文獻(xiàn):

        [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.

        猜你喜歡
        檢測模型
        一半模型
        “不等式”檢測題
        “一元一次不等式”檢測題
        “一元一次不等式組”檢測題
        “幾何圖形”檢測題
        “角”檢測題
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        3D打印中的模型分割與打包
        小波變換在PCB缺陷檢測中的應(yīng)用
        人成综合视频在线播放| 69精品免费视频| 在线亚洲AV不卡一区二区| 日韩精品极品视频在线观看蜜桃| 日本精品啪啪一区二区| 日本一区二区不卡在线| 亚洲中文字幕人妻久久| 99热在线观看| 人妻被黑人粗大的猛烈进出| 亚州精品无码久久aV字幕| 乱人伦人妻中文字幕不卡| 久久无人码人妻一区二区三区| 国产精品亚洲综合久久| 蜜桃视频在线看一区二区三区| 高清偷自拍亚洲精品三区 | 欧洲熟妇乱xxxxx大屁股7| 日韩熟妇精品视频一区二区| 一区二区三区午夜视频在线观看 | 久久亚洲AV无码精品色午夜| 日本韩国黄色三级三级| 少妇太爽高潮在线播放| 变态另类手机版av天堂看网| 国产免费无遮挡吸奶头视频| 乌克兰少妇xxxx做受野外| 亚洲av色无码乱码在线观看| 98精品国产综合久久| 亚洲一码二码在线观看| 亚洲中文字幕一区二区三区多人| 国产一区二区三区在线观看完整版| 国产片精品av在线观看夜色| 国产福利酱国产一区二区| 试看男女炮交视频一区二区三区| 国产成人AV乱码免费观看| 国产av一区二区网站| 新婚少妇无套内谢国语播放| 97精品一区二区视频在线观看| 少妇激情av一区二区| 国产精品系列亚洲第一| 美腿丝袜网址亚洲av| 亚洲精品国产精品乱码视色| 久久久久久久综合综合狠狠|