免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
一文講解圖解目標(biāo)檢測(cè)算法 YOLO

YOLO v3 是目標(biāo)檢測(cè)各類算法中非常經(jīng)典的一款,本文試著圖解它的網(wǎng)絡(luò)架構(gòu)和基本流程,給想快速了解它的童鞋提供一些參考。

1引 言

近年來(lái),由于在海量數(shù)據(jù)與計(jì)算力的加持下,深度學(xué)習(xí)對(duì)圖像數(shù)據(jù)表現(xiàn)出強(qiáng)大的表示能力,成為了機(jī)器視覺(jué)的熱點(diǎn)研究方向。圖像的表示學(xué)習(xí),或者讓計(jì)算機(jī)理解圖像是機(jī)器視覺(jué)的中心問(wèn)題。

具體來(lái)說(shuō),圖像理解包括分類、定位、檢測(cè)與分割等單個(gè)或組合任務(wù),如下圖所示。

本篇關(guān)注目標(biāo)檢測(cè),它可以認(rèn)為是一個(gè)將分類和回歸相結(jié)合的任務(wù)。

目標(biāo)檢測(cè)的核心問(wèn)題可以簡(jiǎn)述為圖像中什么位置有什么物體

  • 1)定位問(wèn)題:目標(biāo)出現(xiàn)在圖像中哪個(gè)位置(區(qū)域)。

  • 2)分類問(wèn)題:圖像的某個(gè)區(qū)域里的目標(biāo)屬于什么類別。

當(dāng)然,目標(biāo)(物體)在圖像中還存在其他問(wèn)題,如尺寸問(wèn)題,即物體具有不同大??;還有形狀問(wèn)題,即物體在各種角度下可以呈現(xiàn)各種形狀。

基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法目前主要分為兩類:Two-stageOne-stage

  • Tow-stage

先生成區(qū)域(region proposal,簡(jiǎn)稱 RP),即一個(gè)可能包含待檢物體的預(yù)選框,再通過(guò)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類。

任務(wù)流程:特征提取 --> 生成 RP --> 分類/定位回歸。

常見(jiàn) Two-stage 目標(biāo)檢測(cè)算法有:R-CNN、Fast R-CNN、Faster R-CNN、SPP-Net 和 R-FCN 等。

  • One-stage

直接用網(wǎng)絡(luò)提取圖像特征來(lái)預(yù)測(cè)物體位置和分類,因此不需要 RP。

任務(wù)流程:特征提取–> 分類/定位回歸。

常見(jiàn)的 One-stage 目標(biāo)檢測(cè)算法有:YOLO 系列、SSD 和 RetinaNet 等。不過(guò),為了得到最終目標(biāo)的定位和分類,往往需要后處理。

本篇主要來(lái)看 YOLO 系列中的 v3 版本。

2基本原理

首先,我們先從整體上來(lái)看一下 YOLO v3 是如何工作的。YOLO v3 算法通過(guò)將圖像劃分為 個(gè)網(wǎng)格(grid)單元來(lái)工作,每個(gè)網(wǎng)格單元具有相同大小的區(qū)域。這 個(gè)網(wǎng)格單元中的每一個(gè)都負(fù)責(zé)對(duì)包含該網(wǎng)格的目標(biāo)的檢測(cè)和定位。

相應(yīng)地,這些網(wǎng)格預(yù)測(cè) 個(gè)相對(duì)于它們所在單元格的包圍盒相對(duì)坐標(biāo),以及目標(biāo)標(biāo)簽和目標(biāo)出現(xiàn)在單元格中的概率。

由于網(wǎng)格的分辨率比起原圖來(lái)說(shuō)已經(jīng)大大降低,而檢測(cè)和識(shí)別步驟都是針對(duì)網(wǎng)格單元來(lái)處理的,因此這個(gè)方案大大降低了計(jì)算量。但是,由于多個(gè)單元格用不同的包圍盒來(lái)預(yù)測(cè)同一個(gè)對(duì)象,因此會(huì)帶來(lái)了很多重復(fù)的預(yù)測(cè)框。YOLO v3 使用非最大值抑制Non-Maximum Suppression,NMS來(lái)處理這個(gè)問(wèn)題。

下圖給出了一個(gè)例子,展示了當(dāng) 時(shí)的 個(gè)網(wǎng)格以及由此檢測(cè)圖中目標(biāo)的大致流程。會(huì)涉及很多個(gè)包圍盒,最后選出三個(gè)包圍盒來(lái)定位和識(shí)別目標(biāo)。

另外,為了兼顧圖像中各種尺度的目標(biāo),可以使用多個(gè)不同分辨率的 個(gè)網(wǎng)格。很快將會(huì)看到,YOLO v3 中使用了 3 個(gè)尺度。

3總體架構(gòu)

先看一下網(wǎng)絡(luò)架構(gòu),注意它有三個(gè)不同分辨率的輸出分支。

從 Yolo v3 的流程圖可以看到,總共有 106 層,實(shí)現(xiàn)了對(duì)每張圖像在大、中、小三個(gè)尺度上檢測(cè)目標(biāo)。這個(gè)網(wǎng)格有三個(gè)出口,分別是 82 層、94 層、106 層。

下面看一下更加詳細(xì)的網(wǎng)絡(luò)架構(gòu)圖,注意有三個(gè)檢測(cè)結(jié)果(Detection Result)。

上圖左邊是 DarkNet-53,是一個(gè)深度為 53 層的卷積神經(jīng)網(wǎng)絡(luò),具體的殘差塊和卷積層如下圖所示。

輸入圖像通過(guò) Darknet 得到三個(gè)尺度的特征圖,從上往下為 (52×52×256), (26×26×512), (13×13×1024),也就是在三種尺度上進(jìn)行以便檢測(cè)到不同大小的目標(biāo)。也可以結(jié)合下面這個(gè)更加精煉圖來(lái)理解。

4關(guān)鍵步驟

目標(biāo)檢測(cè)也可以看作是對(duì)圖像中的背景和前景作某種理解分析,即從圖像背景中分離出感興趣的目標(biāo),得到對(duì)于目標(biāo)的描述<位置,類別>。

由于可能有多個(gè)目標(biāo)存在,模型輸出是一個(gè)列表,包含目標(biāo)的位置以及目標(biāo)的類別。目標(biāo)位置一般用矩形檢測(cè)框(包圍盒)的中心和寬高來(lái)表示。

?模型輸出值

分辨率最低的輸出分支對(duì)應(yīng)的結(jié)果是 ,下圖展示了在 特征圖上的檢測(cè)結(jié)果,特征圖上的一個(gè)像素對(duì)應(yīng)一個(gè)網(wǎng)格,每個(gè)網(wǎng)格會(huì)有 3 個(gè)預(yù)測(cè)框,每個(gè)預(yù)測(cè)框具有(5 + C)個(gè)值,其中前 5 個(gè)數(shù)對(duì)應(yīng)包圍盒的位置以及屬于目標(biāo)的可能性,C 表示類別數(shù)。

具體來(lái)看,最后輸出的結(jié)果為:每個(gè)網(wǎng)格單元對(duì)應(yīng)一個(gè)  維向量, 表示一個(gè)網(wǎng)格可以預(yù)測(cè)包圍盒的數(shù)目, 上面已經(jīng)說(shuō)了, 個(gè)數(shù)值中的前 個(gè)對(duì)應(yīng)包圍盒的中心位子和寬高值 個(gè)目標(biāo)置信度 。

這個(gè)結(jié)果的含義大致清楚了,但是還有個(gè)小問(wèn)題,就是這個(gè)輸出是根據(jù)什么信息計(jì)算而來(lái)呢?

如下圖所示,在前一層得到的特征圖上再接一個(gè)核大小為 的卷積層得到最終的輸出,即由每個(gè)網(wǎng)點(diǎn)的特征向量(1024 維)轉(zhuǎn)化為我們需要的輸出,即包圍盒、目標(biāo)置信度以及類別信息。

上面說(shuō)了,在這個(gè)尺度上會(huì)檢測(cè) 3 個(gè)預(yù)測(cè)框,把它們拼接在一起,得到完整的結(jié)果示意圖如下。

另外兩個(gè)尺度上類似,它們對(duì)應(yīng)的分支輸出如下兩個(gè)圖所示。

網(wǎng)絡(luò)會(huì)在 3 個(gè)尺度上分別檢測(cè),每個(gè)尺度上每個(gè)網(wǎng)格點(diǎn)都預(yù)設(shè) 3 個(gè)包圍盒,所以整個(gè)網(wǎng)絡(luò)共檢測(cè)到 13×13×3 + 26×26×3 + 52×52×3 = 10647 個(gè)包圍盒。

那么這里的 3 個(gè)預(yù)設(shè)包圍盒又是怎么回事呢?

其實(shí)每個(gè)網(wǎng)格單元可以對(duì)目標(biāo)的包圍盒進(jìn)行一定數(shù)量的猜測(cè),比如下圖中的示例,黃色網(wǎng)格單元進(jìn)行兩次包圍盒(藍(lán)色框)預(yù)測(cè)以定位人的位置。

而 YOLO v3 中采用 3 個(gè)預(yù)設(shè)包圍盒,但值得注意的是這里限定只能檢測(cè)同一個(gè)目標(biāo)。

?先驗(yàn)包圍盒

還有一個(gè)問(wèn)題,每個(gè)網(wǎng)格對(duì)應(yīng)的包圍盒怎么取呢?理論上,包圍盒可以各種各樣,但是這樣的話就需要大量計(jì)算。

為了節(jié)省計(jì)算,不妨預(yù)先了解一下在圖像中出現(xiàn)的目標(biāo)一般具有怎么樣的包圍盒??梢酝ㄟ^(guò)在數(shù)據(jù)集 VOC 和 COCO 上使用聚類法尋找一般目標(biāo)的包圍盒尺寸。

在包圍盒的維度上運(yùn)行 k-means 聚類,以獲得良好先驗(yàn)。左圖顯示了我們?cè)谶x擇 時(shí)得到的平均 IOU。在 YOLO v2 中,作者選擇 ,此時(shí)在模型的召回率與復(fù)雜性之間具有較好的平衡。右圖顯示了 VOC 和 COCO 的相對(duì)質(zhì)心。兩組先驗(yàn)都傾向于更薄、更高的盒子,而 COCO 的尺寸變化比 VOC 更大。

而在 YOLO v3 中,通過(guò)聚類選出了 個(gè)先驗(yàn)包圍盒: (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)。

?包圍盒預(yù)測(cè)

有了預(yù)設(shè)的先驗(yàn)包圍盒,怎么來(lái)計(jì)算實(shí)際包圍盒呢?總不能直接套到每個(gè)網(wǎng)格單元處就完事了吧。

YOLO v3 引入一個(gè)機(jī)制,可以適當(dāng)調(diào)整預(yù)設(shè)包圍盒來(lái)生成實(shí)際的包圍盒。下圖中的公式將網(wǎng)絡(luò)輸出值 轉(zhuǎn)換得到實(shí)際的包圍盒信息 。

或者參考下圖,
預(yù)測(cè)出包圍盒中心點(diǎn)相對(duì)于網(wǎng)格單元左上角的相對(duì)坐標(biāo)。通過(guò) 可以將包圍盒中心點(diǎn)限制于網(wǎng)格單元內(nèi)。另外,為了得到訓(xùn)練數(shù)據(jù)的 值,只需要反算即可。

?包圍盒后處理

YOLO v3 模型的輸出并沒(méi)有直接給出包含目標(biāo)的包圍盒,而是包含所有網(wǎng)格單元對(duì)應(yīng)結(jié)果的張量,因此需要一些后處理步驟來(lái)獲得結(jié)果。

首先,需要根據(jù)閾值和模型輸出的目標(biāo)置信度來(lái)淘汰一大批包圍盒。而剩下的包圍盒中很可能有好幾個(gè)圍繞著同一個(gè)目標(biāo),因此還需要繼續(xù)淘汰。這時(shí)候就要用到非極大值抑制(Non-Maximum Suppression,NMS),顧名思義就是抑制不是極大值的元素,可以認(rèn)為求局部最優(yōu)解。用在此處的基本思路就是選擇目標(biāo)置信度最大的包圍盒,然后排除掉與之 IoU 大于某個(gè)閾值的附近包圍盒。

而兩個(gè)包圍盒的 IoU 計(jì)算如下,

?損失函數(shù)

由于網(wǎng)絡(luò)的輸出值比較多,因此損失函數(shù)也具有很多項(xiàng),但總體還是清晰的,這里不作展開(kāi)。

5實(shí) 驗(yàn)

網(wǎng)上基于 PyTorch[1] 或者 TF[2] 等庫(kù)的 YOLO v3 實(shí)現(xiàn)版本很多,可以直接拿來(lái)把玩。下面是網(wǎng)上隨手下載的幾個(gè)圖像的測(cè)試結(jié)果,看著效果是不是還可以呢。

6小 結(jié)

先回顧下面這個(gè)圖,看看是否了解每個(gè)步驟的含義。

然后再用一個(gè)圖來(lái)總結(jié)一下流程,

接下來(lái)根據(jù)輸出的目標(biāo)置信度淘汰一大批包圍盒,在使用非極大值抑制繼續(xù)淘汰一批,最后剩下檢測(cè)到的目標(biāo),下圖是這些步驟的簡(jiǎn)化版本演示圖。

參考代碼

[1]

PyTorch 實(shí)現(xiàn): https://github.com/eriklindernoren/PyTorch-YOLOv3

[2]

TensorFlow 實(shí)現(xiàn): https://machinelearningmastery.com/how-to-perform-object-detection-with-yolov3-in-keras/

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
yolo算法
深入理解one-stage目標(biāo)檢測(cè)算法(上篇)
R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度學(xué)習(xí)檢測(cè)方法梳理
【計(jì)算機(jī)視覺(jué)】檢測(cè)與分割詳解
【目標(biāo)檢測(cè)算法解讀】yolo系列算法一
使用 YOLO 進(jìn)行目標(biāo)檢測(cè)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服