更新時間:2022年12月07日11時38分 來源:傳智教育 瀏覽次數(shù):
Yolo算法采用一個單獨(dú)的CNN模型實(shí)現(xiàn)end-to-end的目標(biāo)檢測,核心思想就是利用整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸 bounding box(邊界框) 的位置及其所屬的類別,整個系統(tǒng)如下圖所示:
首先將輸入圖片resize到448x448,然后送入CNN網(wǎng)絡(luò),最后處理網(wǎng)絡(luò)預(yù)測結(jié)果得到檢測的目標(biāo)。相比R-CNN算法,其是一個統(tǒng)一的框架,其速度更快。
在介紹Yolo算法之前,我們回憶下RCNN模型,RCNN模型提出了候選區(qū)(Region Proposals)的方法,先從圖片中搜索出一些可能存在對象的候選區(qū)(Selective Search),大概2000個左右,然后對每個候選區(qū)進(jìn)行對象識別,但處理速度較慢。
Yolo意思是You Only Look Once,它并沒有真正的去掉候選區(qū)域,而是創(chuàng)造性的將候選區(qū)和目標(biāo)分類合二為一,看一眼圖片就能知道有哪些對象以及它們的位置。
Yolo模型采用預(yù)定義預(yù)測區(qū)域的方法來完成目標(biāo)檢測,具體而言是將原始圖像劃分為 7x7=49 個網(wǎng)格(grid),每個網(wǎng)格允許預(yù)測出2個邊框(bounding box,包含某個對象的矩形框),總共 49x2=98 個bounding box。我們將其理解為98個預(yù)測區(qū),很粗略的覆蓋了圖片的整個區(qū)域,就在這98個預(yù)測區(qū)中進(jìn)行目標(biāo)檢測。
只要得到這98個區(qū)域的目標(biāo)分類和回歸結(jié)果,再進(jìn)行NMS就可以得到最終的目標(biāo)檢測結(jié)果。那具體要怎樣實(shí)現(xiàn)呢?
YOLO的結(jié)構(gòu)非常簡單,就是單純的卷積、池化最后加了兩層全連接,從網(wǎng)絡(luò)結(jié)構(gòu)上看,與前面介紹的CNN分類網(wǎng)絡(luò)沒有本質(zhì)的區(qū)別,最大的差異是輸出層用線性函數(shù)做激活函數(shù),因為需要預(yù)測bounding box的位置(數(shù)值型),而不僅僅是對象的概率。所以粗略來說,YOLO的整個結(jié)構(gòu)就是輸入圖片經(jīng)過神經(jīng)網(wǎng)絡(luò)的變換得到一個輸出的張量,如下圖所示:
網(wǎng)絡(luò)結(jié)構(gòu)比較簡單,重點(diǎn)是我們要理解網(wǎng)絡(luò)輸入與輸出之間的關(guān)系。
網(wǎng)絡(luò)輸入
網(wǎng)絡(luò)的輸入是原始圖像,唯一的要求是縮放到448x448的大小。主要是因為Yolo的網(wǎng)絡(luò)中,卷積層最后接了兩個全連接層,全連接層是要求固定大小的向量作為輸入,所以Yolo的輸入圖像的大小固定為448x448。
網(wǎng)絡(luò)輸出
網(wǎng)絡(luò)的輸出就是一個7x7x30 的張量(tensor)。那這個輸出結(jié)果我們要怎么理解那?
1.7X7網(wǎng)格
根據(jù)YOLO的設(shè)計,輸入圖像被劃分為 7x7 的網(wǎng)格(grid),輸出張量中的 7x7 就對應(yīng)著輸入圖像的 7x7 網(wǎng)格?;蛘呶覀儼?7x7x30 的張量看作 7x7=49個30維的向量,也就是輸入圖像中的每個網(wǎng)格對應(yīng)輸出一個30維的向量。如下圖所示,比如輸入圖像左上角的網(wǎng)格對應(yīng)到輸出張量中左上角的向量。
2.30維向量
30維的向量包含:2個bbox的位置和置信度以及該網(wǎng)格屬于20個類別的概率。
2個bounding box的位置 每個bounding box需要4個數(shù)值來表示其位置,(Center_x,Center_y,width,height),即(bounding box的中心點(diǎn)的x坐標(biāo),y坐標(biāo),bounding box的寬度,高度),2個bounding box共需要8個數(shù)值來表示其位置。
2個bounding box的置信度 bounding box的置信度 = 該bounding box內(nèi)存在對象的概率 * 該bounding box與該對象實(shí)際bounding box的IOU,用公式表示就是:
Pr(Object)是bounding box內(nèi)存在對象的概率
20個對象分類的概率
Yolo支持識別20種不同的對象(人、鳥、貓、汽車、椅子等),所以這里有20個值表示該網(wǎng)格位置存在任一種對象的概率