首頁人工智能技術(shù)資訊正文

什么是yolo?Yolo算法的網(wǎng)絡(luò)結(jié)構(gòu)

更新時(shí)間:2022-12-07 來源:黑馬程序員 瀏覽量:

Yolo算法采用一個(gè)單獨(dú)的CNN模型實(shí)現(xiàn)end-to-end的目標(biāo)檢測(cè),核心思想就是利用整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸 bounding box(邊界框) 的位置及其所屬的類別,整個(gè)系統(tǒng)如下圖所示:

yolo算法核心思想

首先將輸入圖片resize到448x448,然后送入CNN網(wǎng)絡(luò),最后處理網(wǎng)絡(luò)預(yù)測(cè)結(jié)果得到檢測(cè)的目標(biāo)。相比R-CNN算法,其是一個(gè)統(tǒng)一的框架,其速度更快。

Yolo算法

在介紹Yolo算法之前,我們回憶下RCNN模型,RCNN模型提出了候選區(qū)(Region Proposals)的方法,先從圖片中搜索出一些可能存在對(duì)象的候選區(qū)(Selective Search),大概2000個(gè)左右,然后對(duì)每個(gè)候選區(qū)進(jìn)行對(duì)象識(shí)別,但處理速度較慢。

Yolo

Yolo意思是You Only Look Once,它并沒有真正的去掉候選區(qū)域,而是創(chuàng)造性的將候選區(qū)和目標(biāo)分類合二為一,看一眼圖片就能知道有哪些對(duì)象以及它們的位置。

Yolo模型采用預(yù)定義預(yù)測(cè)區(qū)域的方法來完成目標(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è)。

Yolo模型

只要得到這98個(gè)區(qū)域的目標(biāo)分類和回歸結(jié)果,再進(jìn)行NMS就可以得到最終的目標(biāo)檢測(cè)結(jié)果。那具體要怎樣實(shí)現(xiàn)呢?

Yolo的網(wǎng)絡(luò)結(jié)構(gòu)

YOLO的結(jié)構(gòu)非常簡(jiǎn)單,就是單純的卷積、池化最后加了兩層全連接,從網(wǎng)絡(luò)結(jié)構(gòu)上看,與前面介紹的CNN分類網(wǎng)絡(luò)沒有本質(zhì)的區(qū)別,最大的差異是輸出層用線性函數(shù)做激活函數(shù),因?yàn)樾枰A(yù)測(cè)bounding box的位置(數(shù)值型),而不僅僅是對(duì)象的概率。所以粗略來說,YOLO的整個(gè)結(jié)構(gòu)就是輸入圖片經(jīng)過神經(jīng)網(wǎng)絡(luò)的變換得到一個(gè)輸出的張量,如下圖所示:

Yolo的網(wǎng)絡(luò)結(jié)構(gòu)

網(wǎng)絡(luò)結(jié)構(gòu)比較簡(jiǎn)單,重點(diǎn)是我們要理解網(wǎng)絡(luò)輸入與輸出之間的關(guān)系。

網(wǎng)絡(luò)輸入

網(wǎng)絡(luò)的輸入是原始圖像,唯一的要求是縮放到448x448的大小。主要是因?yàn)閅olo的網(wǎng)絡(luò)中,卷積層最后接了兩個(gè)全連接層,全連接層是要求固定大小的向量作為輸入,所以Yolo的輸入圖像的大小固定為448x448。

網(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)到輸出張量中左上角的向量。

7x7網(wǎng)格

2.30維向量

30維的向量包含:2個(gè)bbox的位置和置信度以及該網(wǎng)格屬于20個(gè)類別的概率。

30維向量

2個(gè)bounding box的位置 每個(gè)bounding box需要4個(gè)數(shù)值來表示其位置,(Center_x,Center_y,width,height),即(bounding box的中心點(diǎn)的x坐標(biāo),y坐標(biāo),bounding box的寬度,高度),2個(gè)bounding box共需要8個(gè)數(shù)值來表示其位置。

2個(gè)bounding box的置信度 bounding box的置信度 = 該bounding box內(nèi)存在對(duì)象的概率 * 該bounding box與該對(duì)象實(shí)際bounding box的IOU,用公式表示就是:

bounding box的置信度公式

Pr(Object)是bounding box內(nèi)存在對(duì)象的概率

20個(gè)對(duì)象分類的概率

Yolo支持識(shí)別20種不同的對(duì)象(人、鳥、貓、汽車、椅子等),所以這里有20個(gè)值表示該網(wǎng)格位置存在任一種對(duì)象的概率。




分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!