YOLO系列算法是一類(lèi)典型的one-stage目標(biāo)檢測(cè)算法,其利用anchor box將分類(lèi)與目標(biāo)定位的回歸問(wèn)題結(jié)合起來(lái),從而做到了高效、靈活和泛化性能好,所以在工業(yè)界也十分受歡迎,接下來(lái)我們介紹YOLO 系列算法。 1.yolo算法Yolo算法采用一個(gè)單獨(dú)的CNN模型實(shí)現(xiàn)end-to-end的目標(biāo)檢測(cè),核心思想就是利用整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸 bounding box(邊界框) 的位置及其所屬的類(lèi)別,整個(gè)系統(tǒng)如下圖所示: 首先將輸入圖片resize到448x448,然后送入CNN網(wǎng)絡(luò),最后處理網(wǎng)絡(luò)預(yù)測(cè)結(jié)果得到檢測(cè)的目標(biāo)。相比R-CNN算法,其是一個(gè)統(tǒng)一的框架,其速度更快。 1.1 Yolo算法思想在介紹Yolo算法之前,我們回憶下RCNN模型,RCNN模型提出了候選區(qū)(Region Proposals)的方法,先從圖片中搜索出一些可能存在對(duì)象的候選區(qū)(Selective Search),大概2000個(gè)左右,然后對(duì)每個(gè)候選區(qū)進(jìn)行對(duì)象識(shí)別,但處理速度較慢。 Yolo意思是You Only Look Once,它并沒(méi)有真正的去掉候選區(qū)域,而是創(chuàng)造性的將候選區(qū)和目標(biāo)分類(lèi)合二為一,看一眼圖片就能知道有哪些對(duì)象以及它們的位置。 Yolo模型采用預(yù)定義預(yù)測(cè)區(qū)域的方法來(lái)完成目標(biāo)檢測(cè),具體而言是將原始圖像劃分為 7x7=49 個(gè)網(wǎng)格(grid),每個(gè)網(wǎng)格允許預(yù)測(cè)出2個(gè)邊框(bounding box,包含某個(gè)對(duì)象的矩形框),總共 49x2=98 個(gè)bounding box。我們將其理解為98個(gè)預(yù)測(cè)區(qū),很粗略的覆蓋了圖片的整個(gè)區(qū)域,就在這98個(gè)預(yù)測(cè)區(qū)中進(jìn)行目標(biāo)檢測(cè)。 只要得到這98個(gè)區(qū)域的目標(biāo)分類(lèi)和回歸結(jié)果,再進(jìn)行NMS就可以得到最終的目標(biāo)檢測(cè)結(jié)果。那具體要怎樣實(shí)現(xiàn)呢? 1.2 Yolo的網(wǎng)絡(luò)結(jié)構(gòu)YOLO的結(jié)構(gòu)非常簡(jiǎn)單,就是單純的卷積、池化最后加了兩層全連接,從網(wǎng)絡(luò)結(jié)構(gòu)上看,與前面介紹的CNN分類(lèi)網(wǎng)絡(luò)沒(méi)有本質(zhì)的區(qū)別,最大的差異是輸出層用線性函數(shù)做激活函數(shù),因?yàn)樾枰A(yù)測(cè)bounding box的位置(數(shù)值型),而不僅僅是對(duì)象的概率。所以粗略來(lái)說(shuō),YOLO的整個(gè)結(jié)構(gòu)就是輸入圖片經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)的變換得到一個(gè)輸出的張量,如下圖所示: 網(wǎng)絡(luò)結(jié)構(gòu)比較簡(jiǎn)單,重點(diǎn)是我們要理解網(wǎng)絡(luò)輸入與輸出之間的關(guān)系。 1.2.1 網(wǎng)絡(luò)輸入 網(wǎng)絡(luò)的輸入是原始圖像,唯一的要求是縮放到448x448的大小。主要是因?yàn)閅olo的網(wǎng)絡(luò)中,卷積層最后接了兩個(gè)全連接層,全連接層是要求固定大小的向量作為輸入,所以Yolo的輸入圖像的大小固定為448x448。 1.2.2 網(wǎng)絡(luò)輸出 網(wǎng)絡(luò)的輸出就是一個(gè)7x7x30 的張量(tensor)。那這個(gè)輸出結(jié)果我們要怎么理解那? 1.7X7網(wǎng)格 根據(jù)YOLO的設(shè)計(jì),輸入圖像被劃分為 7x7 的網(wǎng)格(grid),輸出張量中的 7x7 就對(duì)應(yīng)著輸入圖像的 7x7 網(wǎng)格?;蛘呶覀儼?7x7x30 的張量看作 7x7=49個(gè)30維的向量,也就是輸入圖像中的每個(gè)網(wǎng)格對(duì)應(yīng)輸出一個(gè)30維的向量。如下圖所示,比如輸入圖像左上角的網(wǎng)格對(duì)應(yīng)到輸出張量中左上角的向量。 2.30維向量 30維的向量包含:2個(gè)bbox的位置和置信度以及該網(wǎng)格屬于20個(gè)類(lèi)別的概率
Pr(Object)是bounding box內(nèi)存在對(duì)象的概率
Yolo支持識(shí)別20種不同的對(duì)象(人、鳥(niǎo)、貓、汽車(chē)、椅子等),所以這里有20個(gè)值表示該網(wǎng)格位置存在任一種對(duì)象的概率. 1.3Yolo模型的訓(xùn)練在進(jìn)行模型訓(xùn)練時(shí),我們需要構(gòu)造訓(xùn)練樣本和設(shè)計(jì)損失函數(shù),才能利用梯度下降對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。 1.3.1訓(xùn)練樣本的構(gòu)建 將一幅圖片輸入到y(tǒng)olo模型中,對(duì)應(yīng)的輸出是一個(gè)7x7x30張量,構(gòu)建標(biāo)簽label時(shí)對(duì)于原圖像中的每一個(gè)網(wǎng)格grid都需要構(gòu)建一個(gè)30維的向量。對(duì)照下圖我們來(lái)構(gòu)建目標(biāo)向量:
對(duì)于輸入圖像中的每個(gè)對(duì)象,先找到其中心點(diǎn)。比如上圖中自行車(chē),其中心點(diǎn)在黃色圓點(diǎn)位置,中心點(diǎn)落在黃色網(wǎng)格內(nèi),所以這個(gè)黃色網(wǎng)格對(duì)應(yīng)的30維向量中,自行車(chē)的概率是1,其它對(duì)象的概率是0。所有其它48個(gè)網(wǎng)格的30維向量中,該自行車(chē)的概率都是0。這就是所謂的"中心點(diǎn)所在的網(wǎng)格對(duì)預(yù)測(cè)該對(duì)象負(fù)責(zé)"。狗和汽車(chē)的分類(lèi)概率也是同樣的方法填寫(xiě)
訓(xùn)練樣本的bbox位置應(yīng)該填寫(xiě)對(duì)象真實(shí)的位置bbox,但一個(gè)對(duì)象對(duì)應(yīng)了2個(gè)bounding box,該填哪一個(gè)呢?需要根據(jù)網(wǎng)絡(luò)輸出的bbox與對(duì)象實(shí)際bbox的IOU來(lái)選擇,所以要在訓(xùn)練過(guò)程中動(dòng)態(tài)決定到底填哪一個(gè)bbox。
預(yù)測(cè)置信度的公式為: IOUtruthpredIOUpredtruth?利用網(wǎng)絡(luò)輸出的2個(gè)bounding box與對(duì)象真實(shí)bounding box計(jì)算出來(lái)。然后看這2個(gè)bounding box的IOU,哪個(gè)比較大,就由哪個(gè)bounding box來(lái)負(fù)責(zé)預(yù)測(cè)該對(duì)象是否存在,即該bounding box的置信度目標(biāo)值為1,同時(shí)對(duì)象真實(shí)bounding box的位置也就填入該bounding box。另一個(gè)不負(fù)責(zé)預(yù)測(cè)的bounding box的置信度目標(biāo)值為0。 上圖中自行車(chē)所在的grid對(duì)應(yīng)的結(jié)果如下圖所示: 1.3.2 損失函數(shù) 損失就是網(wǎng)絡(luò)實(shí)際輸出值與樣本標(biāo)簽值之間的偏差: yolo給出的損失函數(shù): 注:其中1obji1iobj表示目標(biāo)是否出現(xiàn)在網(wǎng)格單元i中,1objij1ijobj表示單元格i中的第j個(gè)邊界框預(yù)測(cè)器負(fù)責(zé)該預(yù)測(cè),YOLO設(shè)置 λcoord=5λcoord=5 來(lái)調(diào)高位置誤差的權(quán)重, λnoobj=0.5λnoobj=0.5 即調(diào)低不存在對(duì)象的bounding box的置信度誤差的權(quán)重。 1.3.3 模型訓(xùn)練 Yolo先使用ImageNet數(shù)據(jù)集對(duì)前20層卷積網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,然后使用完整的網(wǎng)絡(luò),在PASCAL VOC數(shù)據(jù)集上進(jìn)行對(duì)象識(shí)別和定位的訓(xùn)練。 Yolo的最后一層采用線性激活函數(shù),其它層都是Leaky ReLU。訓(xùn)練中采用了drop out和數(shù)據(jù)增強(qiáng)(data augmentation)來(lái)防止過(guò)擬合. 1.4 模型預(yù)測(cè)將圖片resize成448x448的大小,送入到y(tǒng)olo網(wǎng)絡(luò)中,輸出一個(gè) 7x7x30 的張量(tensor)來(lái)表示圖片中所有網(wǎng)格包含的對(duì)象(概率)以及該對(duì)象可能的2個(gè)位置(bounding box)和可信程度(置信度)。在采用NMS(Non-maximal suppression,非極大值抑制)算法選出最有可能是目標(biāo)的結(jié)果。 1.5 yolo總結(jié)優(yōu)點(diǎn)
缺點(diǎn)
2.yoloV2YOLOv2相對(duì)v1版本,在繼續(xù)保持處理速度的基礎(chǔ)上,從預(yù)測(cè)更準(zhǔn)確(Better),速度更快(Faster),識(shí)別對(duì)象更多(Stronger)這三個(gè)方面進(jìn)行了改進(jìn)。其中識(shí)別更多對(duì)象也就是擴(kuò)展到能夠檢測(cè)9000種不同對(duì)象,稱之為YOLO9000。 下面我們看下yoloV2的都做了哪些改進(jìn)? 2.1 預(yù)測(cè)更準(zhǔn)確(better)2.1.1 batch normalization 批標(biāo)準(zhǔn)化有助于解決反向傳播過(guò)程中的梯度消失和梯度爆炸問(wèn)題,降低對(duì)一些超參數(shù)的敏感性,并且每個(gè)batch分別進(jìn)行歸一化的時(shí)候,起到了一定的正則化效果,從而能夠獲得更好的收斂速度和收斂效果。在yoloV2中卷積后全部加入Batch Normalization,網(wǎng)絡(luò)會(huì)提升2%的mAP。 2.1.2 使用高分辨率圖像微調(diào)分類(lèi)模型 YOLO v1使用ImageNet的圖像分類(lèi)樣本采用 224x224 作為輸入,來(lái)訓(xùn)練CNN卷積層。然后在訓(xùn)練對(duì)象檢測(cè)時(shí),檢測(cè)用的圖像樣本采用更高分辨率的 448x448 的圖像作為輸入。但這樣切換對(duì)模型性能有一定影響。 YOLOV2在采用 224x224 圖像進(jìn)行分類(lèi)模型預(yù)訓(xùn)練后,再采用 448x448 的高分辨率樣本對(duì)分類(lèi)模型進(jìn)行微調(diào)(10個(gè)epoch),使網(wǎng)絡(luò)特征逐漸適應(yīng) 448x448 的分辨率。然后再使用 448x448 的檢測(cè)樣本進(jìn)行訓(xùn)練,緩解了分辨率突然切換造成的影響。 使用該技巧后網(wǎng)絡(luò)的mAP提升了約4%。 2.1.3 采用Anchor Boxes YOLO1并沒(méi)有采用先驗(yàn)框,并且每個(gè)grid只預(yù)測(cè)兩個(gè)bounding box,整個(gè)圖像98個(gè)。YOLO2如果每個(gè)grid采用5個(gè)先驗(yàn)框,總共有13x13x5=845個(gè)先驗(yàn)框。通過(guò)引入anchor boxes,使得預(yù)測(cè)的box數(shù)量更多(13x13xn)。 2.2.4 聚類(lèi)提取anchor尺度 Faster-rcnn選擇的anchor比例都是手動(dòng)指定的,但是不一定完全適合數(shù)據(jù)集。YOLO2嘗試統(tǒng)計(jì)出更符合樣本中對(duì)象尺寸的先驗(yàn)框,這樣就可以減少網(wǎng)絡(luò)微調(diào)先驗(yàn)框到實(shí)際位置的難度。YOLO2的做法是對(duì)訓(xùn)練集中標(biāo)注的邊框進(jìn)行聚類(lèi)分析,以尋找盡可能匹配樣本的邊框尺寸。 YoloV2選擇了聚類(lèi)的五種尺寸最為anchor box。 2.1.5 邊框位置的預(yù)測(cè) Yolov2中將邊框的結(jié)果約束在特定的網(wǎng)格中: 其中, bx,by,bw,bhbx,by,bw,bh是預(yù)測(cè)邊框的中心和寬高。 Pr(object)?IOU(b,object)Pr(object)?IOU(b,object)是預(yù)測(cè)邊框的置信度,YOLO1是直接預(yù)測(cè)置信度的值,這里對(duì)預(yù)測(cè)參數(shù)toto進(jìn)行σ變換后作為置信度的值。 cx,cycx,cy是當(dāng)前網(wǎng)格左上角到圖像左上角的距離,要先將網(wǎng)格大小歸一化,即令一個(gè)網(wǎng)格的寬=1,高=1。 pw,phpw,ph是先驗(yàn)框的寬和高。 σ是sigmoid函數(shù)。 tx,ty,tw,th,totx,ty,tw,th,to是要學(xué)習(xí)的參數(shù),分別用于預(yù)測(cè)邊框的中心和寬高,以及置信度。 如下圖所示: 由于σ函數(shù)將 tx,tytx,ty約束在(0,1)范圍內(nèi),預(yù)測(cè)邊框的藍(lán)色中心點(diǎn)被約束在藍(lán)色背景的網(wǎng)格內(nèi)。約束邊框位置使得模型更容易學(xué)習(xí),且預(yù)測(cè)更為穩(wěn)定。 假設(shè)網(wǎng)絡(luò)預(yù)測(cè)值為: anchor框?yàn)椋?/p> 則目標(biāo)在特征圖中的位置: 在原圖像中的位置: 2.1.6 細(xì)粒度特征融合 圖像中對(duì)象會(huì)有大有小,輸入圖像經(jīng)過(guò)多層網(wǎng)絡(luò)提取特征,最后輸出的特征圖中,較小的對(duì)象可能特征已經(jīng)不明顯甚至被忽略掉了。為了更好的檢測(cè)出一些比較小的對(duì)象,最后輸出的特征圖需要保留一些更細(xì)節(jié)的信息。 YOLO2引入一種稱為passthrough層的方法在特征圖中保留一些細(xì)節(jié)信息。具體來(lái)說(shuō),就是在最后一個(gè)pooling之前,特征圖的大小是26x26x512,將其1拆4,直接傳遞(passthrough)到pooling后(并且又經(jīng)過(guò)一組卷積)的特征圖,兩者疊加到一起作為輸出的特征圖。 具體的拆分方法如下所示: 2.1.7 多尺度訓(xùn)練 YOLO2中沒(méi)有全連接層,可以輸入任何尺寸的圖像。因?yàn)檎麄€(gè)網(wǎng)絡(luò)下采樣倍數(shù)是32,采用了{(lán)320,352,...,608}等10種輸入圖像的尺寸,這些尺寸的輸入圖像對(duì)應(yīng)輸出的特征圖寬和高是{10,11,...19}。訓(xùn)練時(shí)每10個(gè)batch就隨機(jī)更換一種尺寸,使網(wǎng)絡(luò)能夠適應(yīng)各種大小的對(duì)象檢測(cè)。 2.2 速度更快(Faster)yoloV2提出了Darknet-19(有19個(gè)卷積層和5個(gè)MaxPooling層)網(wǎng)絡(luò)結(jié)構(gòu)作為特征提取網(wǎng)絡(luò)。DarkNet-19比VGG-16小一些,精度不弱于VGG-16,但浮點(diǎn)運(yùn)算量減少到約?,以保證更快的運(yùn)算速度。 yoloV2的網(wǎng)絡(luò)中只有卷積+pooling,從416x416x3 變換到 13x13x5x25。增加了batch normalization,增加了一個(gè)passthrough層,去掉了全連接層,以及采用了5個(gè)先驗(yàn)框,網(wǎng)絡(luò)的輸出如下圖所示: 2.3 識(shí)別對(duì)象更多VOC數(shù)據(jù)集可以檢測(cè)20種對(duì)象,但實(shí)際上對(duì)象的種類(lèi)非常多,只是缺少相應(yīng)的用于對(duì)象檢測(cè)的訓(xùn)練樣本。YOLO2嘗試?yán)肐mageNet非常大量的分類(lèi)樣本,聯(lián)合COCO的對(duì)象檢測(cè)數(shù)據(jù)集一起訓(xùn)練,使得YOLO2即使沒(méi)有學(xué)過(guò)很多對(duì)象的檢測(cè)樣本,也能檢測(cè)出這些對(duì)象。 3.yoloV3yoloV3以V1,V2為基礎(chǔ)進(jìn)行的改進(jìn),主要有:利用多尺度特征進(jìn)行目標(biāo)檢測(cè);先驗(yàn)框更豐富;調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu);對(duì)象分類(lèi)使用logistic代替了softmax,更適用于多標(biāo)簽分類(lèi)任務(wù)。 3.1算法簡(jiǎn)介YOLOv3是YOLO (You Only Look Once)系列目標(biāo)檢測(cè)算法中的第三版,相比之前的算法,尤其是針對(duì)小目標(biāo),精度有顯著提升。 yoloV3的流程如下圖所示,對(duì)于每一幅輸入圖像,YOLOv3會(huì)預(yù)測(cè)三個(gè)不同尺度的輸出,目的是檢測(cè)出不同大小的目標(biāo)。 3.2多尺度檢測(cè)通常一幅圖像包含各種不同的物體,并且有大有小。比較理想的是一次就可以將所有大小的物體同時(shí)檢測(cè)出來(lái)。因此,網(wǎng)絡(luò)必須具備能夠“看到”不同大小的物體的能力。因?yàn)榫W(wǎng)絡(luò)越深,特征圖就會(huì)越小,所以網(wǎng)絡(luò)越深小的物體也就越難檢測(cè)出來(lái)。 在實(shí)際的feature map中,隨著網(wǎng)絡(luò)深度的加深,淺層的feature map中主要包含低級(jí)的信息(物體邊緣,顏色,初級(jí)位置信息等),深層的feature map中包含高等信息(例如物體的語(yǔ)義信息:狗,貓,汽車(chē)等等)。因此在不同級(jí)別的feature map對(duì)應(yīng)不同的scale,所以我們可以在不同級(jí)別的特征圖中進(jìn)行目標(biāo)檢測(cè)。如下圖展示了多種scale變換的經(jīng)典方法。 (a) 這種方法首先建立圖像金字塔,不同尺度的金字塔圖像被輸入到對(duì)應(yīng)的網(wǎng)絡(luò)當(dāng)中,用于不同scale物體的檢測(cè)。但這樣做的結(jié)果就是每個(gè)級(jí)別的金字塔都需要進(jìn)行一次處理,速度很慢。 (b) 檢測(cè)只在最后一層feature map階段進(jìn)行,這個(gè)結(jié)構(gòu)無(wú)法檢測(cè)不同大小的物體 ? 對(duì)不同深度的feature map分別進(jìn)行目標(biāo)檢測(cè)。SSD中采用的便是這樣的結(jié)構(gòu)。這樣小的物體會(huì)在淺層的feature map中被檢測(cè)出來(lái),而大的物體會(huì)在深層的feature map被檢測(cè)出來(lái),從而達(dá)到對(duì)應(yīng)不同scale的物體的目的,缺點(diǎn)是每一個(gè)feature map獲得的信息僅來(lái)源于之前的層,之后的層的特征信息無(wú)法獲取并加以利用。 (d) 與?很接近,但不同的是,當(dāng)前層的feature map會(huì)對(duì)未來(lái)層的feature map進(jìn)行上采樣,并加以利用。因?yàn)橛辛诉@樣一個(gè)結(jié)構(gòu),當(dāng)前的feature map就可以獲得“未來(lái)”層的信息,這樣的話低階特征與高階特征就有機(jī)融合起來(lái)了,提升檢測(cè)精度。在YOLOv3中,就是采用這種方式來(lái)實(shí)現(xiàn)目標(biāo)多尺度的變換的。 3.3網(wǎng)絡(luò)模型結(jié)構(gòu)在基本的圖像特征提取方面,YOLO3采用了Darknet-53的網(wǎng)絡(luò)結(jié)構(gòu)(含有53個(gè)卷積層),它借鑒了殘差網(wǎng)絡(luò)ResNet的做法,在層之間設(shè)置了shortcut,來(lái)解決深層網(wǎng)絡(luò)梯度的問(wèn)題,shortcut如下圖所示:包含兩個(gè)卷積層和一個(gè)shortcut connections。 yoloV3的模型結(jié)構(gòu)如下所示:整個(gè)v3結(jié)構(gòu)里面,沒(méi)有池化層和全連接層,網(wǎng)絡(luò)的下采樣是通過(guò)設(shè)置卷積的stride為2來(lái)達(dá)到的,每當(dāng)通過(guò)這個(gè)卷積層之后圖像的尺寸就會(huì)減小到一半。 ![ 下面我們看下網(wǎng)絡(luò)結(jié)構(gòu):
1、CBL:Yolov3網(wǎng)絡(luò)結(jié)構(gòu)中的最小組件,由Conv+Bn+Leaky_relu激活函數(shù)三者組成。 2、Res unit:借鑒Resnet網(wǎng)絡(luò)中的殘差結(jié)構(gòu),讓網(wǎng)絡(luò)可以構(gòu)建的更深。 3、ResX:由一個(gè)CBL和X個(gè)殘差組件構(gòu)成,是Yolov3中的大組件。每個(gè)Res模塊前面的CBL都起到下采樣的作用,因此經(jīng)過(guò)5次Res模塊后,得到的特征圖是416->208->104->52->26->13大小。
1、Concat:張量拼接,會(huì)擴(kuò)充兩個(gè)張量的維度,例如26×26×256和26×26×512兩個(gè)張量拼接,結(jié)果是26×26×768。 2、Add:張量相加,張量直接相加,不會(huì)擴(kuò)充維度,例如104×104×128和104×104×128相加,結(jié)果還是104×104×128。
每個(gè)ResX中包含1+2×X個(gè)卷積層,因此整個(gè)主干網(wǎng)絡(luò)Backbone中一共包含1+(1+2×1)+(1+2×2)+(1+2×8)+(1+2×8)+(1+2×4)=52,再加上一個(gè)FC全連接層,即可以組成一個(gè)Darknet53分類(lèi)網(wǎng)絡(luò)。不過(guò)在目標(biāo)檢測(cè)Yolov3中,去掉FC層,仍然把Yolov3的主干網(wǎng)絡(luò)叫做Darknet53結(jié)構(gòu)。 3.4先驗(yàn)框yoloV3采用K-means聚類(lèi)得到先驗(yàn)框的尺寸,為每種尺度設(shè)定3種先驗(yàn)框,總共聚類(lèi)出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ì)象。較大的(52x52)特征圖上(較小的感受野)應(yīng)用,其中較小的先驗(yàn)框(10x13),(16x30),(33x23),適合檢測(cè)較小的對(duì)象。 直觀上感受9種先驗(yàn)框的尺寸,下圖中藍(lán)色框?yàn)榫垲?lèi)得到的先驗(yàn)框。黃色框式ground truth,紅框是對(duì)象中心點(diǎn)所在的網(wǎng)格。 3.5 logistic回歸預(yù)測(cè)對(duì)象類(lèi)別時(shí)不使用softmax,而是被替換為一個(gè)1x1的卷積層+logistic激活函數(shù)的結(jié)構(gòu)。使用softmax層的時(shí)候其實(shí)已經(jīng)假設(shè)每個(gè)輸出僅對(duì)應(yīng)某一個(gè)單個(gè)的class,但是在某些class存在重疊情況(例如woman和person)的數(shù)據(jù)集中,使用softmax就不能使網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行很好的預(yù)測(cè)。 3.6 yoloV3模型的輸入與輸出YoloV3的輸入輸出形式如下圖所示: 輸入416×416×3的圖像,通過(guò)darknet網(wǎng)絡(luò)得到三種不同尺度的預(yù)測(cè)結(jié)果,每個(gè)尺度都對(duì)應(yīng)N個(gè)通道,包含著預(yù)測(cè)的信息; 每個(gè)網(wǎng)格每個(gè)尺寸的anchors的預(yù)測(cè)結(jié)果。 YOLOv3共有13×13×3 + 26×26×3 + 52×52×3個(gè)預(yù)測(cè) 。每個(gè)預(yù)測(cè)對(duì)應(yīng)85維,分別是4(坐標(biāo)值)、1(置信度分?jǐn)?shù))、80(coco類(lèi)別概率)。 4.yoloV4[了解]YOLO之父在2020年初宣布退出CV界,YOLOv4 的作者并不是YOLO系列 的原作者。YOLO V4是YOLO系列一個(gè)重大的更新,其在COCO數(shù)據(jù)集上的平均精度(AP)和幀率精度(FPS)分別提高了10% 和12%,并得到了Joseph Redmon的官方認(rèn)可,被認(rèn)為是當(dāng)前最強(qiáng)的實(shí)時(shí)對(duì)象檢測(cè)模型之一。 yoloV4總結(jié)了大部分檢測(cè)技巧,然后經(jīng)過(guò)篩選,排列組合,挨個(gè)實(shí)驗(yàn)(ablation study)哪些方法有效,總體來(lái)說(shuō),Yolov4并沒(méi)有創(chuàng)造新的改進(jìn),而是使用了大量的目標(biāo)檢測(cè)的技巧。在這里我們主要給大家看下它的網(wǎng)絡(luò)架構(gòu): Yolov4的結(jié)構(gòu)圖和Yolov3是相似的,不過(guò)使用各種新的算法思想對(duì)各個(gè)子結(jié)構(gòu)都進(jìn)行了改進(jìn)。 先整理下Yolov4的結(jié)構(gòu)組件
注意: 網(wǎng)絡(luò)的輸入大小不是固定的,在yoloV3中輸入默認(rèn)是416×416,在yoloV4中默認(rèn)是608×608,在實(shí)際項(xiàng)目中也可以根據(jù)需要修改,比如320×320,一般是32的倍數(shù)。 輸入圖像的大小和最后的三個(gè)特征圖的大小也是對(duì)應(yīng)的,比如416×416的輸入,最后的三個(gè)特征圖大小是13×13,26×26,52×52, 如果是608×608,最后的三個(gè)特征圖大小則是19×19,38×38,76×76。 |
|
來(lái)自: 行走在理想邊緣 > 《機(jī)器學(xué)習(xí)》