網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOV3主要改進(jìn):
調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu)键闺;利用多尺度特征進(jìn)行對(duì)象檢測(cè);對(duì)象分類用Logistic取代了softmax
1.新的網(wǎng)絡(luò)結(jié)構(gòu)Darknet-53
darknet-53借用了resnet的思想,在網(wǎng)絡(luò)中加入了殘差模塊模暗,這樣有利于解決深層次網(wǎng)絡(luò)的梯度問(wèn)題斑粱,每個(gè)殘差模塊由兩個(gè)卷積層和一個(gè)shortcut connections,
(1,2,8,8,4)代表有幾個(gè)重復(fù)的殘差模塊,整個(gè)v3結(jié)構(gòu)里面鼓择,沒(méi)有池化層和全連接層三幻,網(wǎng)絡(luò)的下采樣是通過(guò)設(shè)置卷積的stride為2來(lái)達(dá)到的,每當(dāng)通過(guò)這個(gè)卷積層之后
圖像的尺寸就會(huì)減小到一半呐能。而每個(gè)卷積層的實(shí)現(xiàn)又是包含 卷積+BN+Leaky relu念搬,每個(gè)殘差模塊之后又要加上一個(gè)zero padding抑堡,如下圖
整體來(lái)看YOLOV3的輸入與輸出形式如下:
輸入416x416的圖像,通過(guò)darknet網(wǎng)絡(luò)得到三種不同尺度的預(yù)測(cè)結(jié)果朗徊,每個(gè)尺度都對(duì)應(yīng)N個(gè)通道首妖,包含著預(yù)測(cè)的信息;
每個(gè)網(wǎng)格每個(gè)尺寸的anchors的預(yù)測(cè)結(jié)果爷恳。
對(duì)比下yolov1有缆,有7X7X2個(gè)預(yù)測(cè);
對(duì)比下yolov2温亲,有13x13x5個(gè)預(yù)測(cè)棚壁;
yolov3共有13x13x3+26x26x3+52x52x3個(gè)預(yù)測(cè)。
每個(gè)預(yù)測(cè)對(duì)應(yīng)85維栈虚,分別是4(坐標(biāo)值)袖外,1(置信度分?jǐn)?shù)),80(coco類別數(shù))
多尺度檢測(cè):
對(duì)于多尺度檢測(cè)來(lái)說(shuō)魂务,采用多個(gè)尺度進(jìn)行預(yù)測(cè)曼验,具體形式是在網(wǎng)絡(luò)預(yù)測(cè)的最后某些層進(jìn)行上采樣拼接的操作來(lái)達(dá)到;對(duì)于分辨率對(duì)預(yù)測(cè)的影響如下解釋:
分辨率信息直接反映的就是構(gòu)成object的像素的數(shù)量头镊。一個(gè)object蚣驼,像素?cái)?shù)量越多,它對(duì)object的細(xì)節(jié)表現(xiàn)就越豐富越具體相艇,也就是說(shuō)分辨率信息越豐富颖杏。這也就是為什么大尺度f(wàn)eature map提供的是分辨率信息了。語(yǔ)義信息在目標(biāo)檢測(cè)中指的是讓object區(qū)分于背景的信息坛芽,即語(yǔ)義信息是讓你知道這個(gè)是object留储,其余是背景。在不同類別中語(yǔ)義信息并不需要很多細(xì)節(jié)信息咙轩,分辨率信息大获讳,反而會(huì)降低語(yǔ)義信息,因此小尺度f(wàn)eature map在提供必要的分辨率信息下語(yǔ)義信息會(huì)提供的更好活喊。(而對(duì)于小目標(biāo)丐膝,小尺度f(wàn)eature map無(wú)法提供必要的分辨率信息,所以還需結(jié)合大尺度的feature map)
YOLO3更進(jìn)一步采用了3個(gè)不同尺度的特征圖來(lái)進(jìn)行對(duì)象檢測(cè)钾菊。能夠檢測(cè)的到更加細(xì)粒度的特征帅矗。
對(duì)于這三種檢測(cè)的結(jié)果并不是同樣的東西,這里的粗略理解是不同給的尺度檢測(cè)不同大小的物體煞烫。
網(wǎng)絡(luò)的最終輸出有3個(gè)尺度分別為1/32, 1/16, 1/8;
在第79層之后經(jīng)過(guò)幾個(gè)卷積操作得到的是1/32 (13*13) 的預(yù)測(cè)結(jié)果浑此,下采樣倍數(shù)高,這里特征圖的感受野比較大滞详,因此適合檢測(cè)圖像中尺寸比較大的對(duì)象凛俱。
然后這個(gè)結(jié)果通過(guò)上采樣與第61層的結(jié)果進(jìn)行concat,再經(jīng)過(guò)幾個(gè)卷積操作得到1/16的預(yù)測(cè)結(jié)果紊馏;它具有中等尺度的感受野,適合檢測(cè)中等尺度的對(duì)象蒲犬。
91層的結(jié)果經(jīng)過(guò)上采樣之后在于第36層的結(jié)果進(jìn)行concat朱监,經(jīng)過(guò)幾個(gè)卷積操作之后得到的是1/8的結(jié)果,它的感受野最小暖哨,適合檢測(cè)小尺寸的對(duì)象赌朋。
concat:張量拼接。將darknet中間層和后面的某一層的上采樣進(jìn)行拼接篇裁。拼接的操作和殘差層add的操作是不一樣的沛慢,拼接會(huì)擴(kuò)充張量的維度,而add只是直接相加不會(huì)導(dǎo)致張量維度的改變达布。
使用Kmeans聚類的方法來(lái)決定anchors的尺寸大型偶住:
YOLO2已經(jīng)開(kāi)始采用K-means聚類得到先驗(yàn)框的尺寸,YOLO3延續(xù)了這種方法黍聂,為每種下采樣尺度設(shè)定3種先驗(yàn)框躺苦,總共聚類出9種尺寸的先驗(yàn)框。
在COCO數(shù)據(jù)集這9個(gè)先驗(yàn)框是:(10x13)产还,(16x30)匹厘,(33x23),(30x61)脐区,(62x45)愈诚,(59x119),(116x90)牛隅,(156x198)炕柔,(373x326)。
分配上媒佣,在最小的13x13特征圖上(有最大的感受野)應(yīng)用較大的先驗(yàn)框(116x90)匕累,(156x198),(373x326)默伍,適合檢測(cè)較大的對(duì)象欢嘿。中等的26x26
特征圖上(中等感受野)應(yīng)用中等的先驗(yàn)框(30x61),(62x45)也糊,(59x119)炼蹦,適合檢測(cè)中等大小的對(duì)象。較大的5252特征圖上(較小的感受野)應(yīng)用
較小的先驗(yàn)框(10x13)显设,(16x30)框弛,(33x23)辛辨,適合檢測(cè)較小的對(duì)象捕捂。
yolo v3對(duì)bbox進(jìn)行預(yù)測(cè)的時(shí)候瑟枫,采用了logistic regression。yolo v3每次對(duì)b-box進(jìn)行predict時(shí)指攒,輸出和v2一樣都是(tx,ty,tw,th,to)? ,然后通過(guò)公式1計(jì)算出絕對(duì)的(x, y, w, h, c)慷妙。
簡(jiǎn)單講就是下面這個(gè)截圖的公式,tx允悦、ty膝擂、tw、th就是模型的預(yù)測(cè)輸出隙弛。cx和cy表示grid cell的坐標(biāo)架馋,比如某層的feature map大小是1313,那么grid cell就有13*13個(gè)全闷,第0行第1列的grid cell(網(wǎng)格單元)的坐標(biāo)cx就是0叉寂,cy就是1。pw和ph表示預(yù)測(cè)前bounding box的size总珠。bx屏鳍、by。bw和bh就是預(yù)測(cè)得到的bounding box的中心的坐標(biāo)和size局服。坐標(biāo)的損失采用的是平方誤差損失钓瞭。
logistic回歸用于對(duì)anchor包圍的部分進(jìn)行一個(gè)目標(biāo)性評(píng)分(objectness score),(用于NMS)淫奔,即這塊位置是目標(biāo)的可能性有多大山涡。
yolo_v3只會(huì)對(duì)1個(gè)prior進(jìn)行操作,也就是那個(gè)最佳prior搏讶。而logistic回歸就是用來(lái)從9個(gè)anchor priors中找到objectness score(目標(biāo)存在可能性得分)最高的那一個(gè)佳鳖。
對(duì)象分類softmax改成logistic
預(yù)測(cè)對(duì)象類別時(shí)不使用softmax,改成使用logistic的輸出進(jìn)行預(yù)測(cè)媒惕。這樣能夠支持多標(biāo)簽對(duì)象(比如一個(gè)人有Woman 和 Person兩個(gè)標(biāo)簽)系吩。