01YOLO發(fā)展史
大家或許知道,首字母縮寫YOLO在英文語境下較為流行的含義,即You Only Live Once,你只能活一次。我們今天要介紹的YOLO卻有著與前者不一樣的含義。在算法的世界中,YOLO寓意You Only Look Once,你只需要看一眼——這不失為一種來自開發(fā)者的羅曼蒂克。
在講解YOLO的算法原理之前,先簡要介紹YOLO的發(fā)展史。YOLO開創(chuàng)了一階段檢測算法的先河。它將目標分類和定位用一個神經(jīng)網(wǎng)絡統(tǒng)一起來,實現(xiàn)了端到端的目標檢測。
YOLO檢測系統(tǒng)
YOLO最初于2016年由華盛頓大學的博士研究生Joseph Redmon提出。Joseph Redmon的這篇提出YOLO的論文You Only Look Once: Unified, Real-Time Object Detection也發(fā)表在了CVPR 2016上,并獲得了CVPR 2016的最佳人氣獎。自此,Joseph Redmon開始不斷推出YOLO的新版本,YOLO也在不斷的迭代中越來越強。
2017年,Joseph Redmon與導師合著發(fā)表了論文YOLO9000: Better, Faster, Stronger,這篇論文也標志著YOLO v2的誕生。該論文獲得了CVPR 2017最佳論文榮譽提名獎。YOLO v2能夠檢測9000中不同的對象,因此也被稱為YOLO9000。
2018年,Joseph Redmon又提出了YOLO新版本YOLO v3,這一版本的YOLO在保持原有算法的速度優(yōu)勢的同時,提升了模型的精度,補齊了小目標檢測以及重疊遮擋目標識別的短板。雖然,Joseph Redmon在2020年出于個人對職業(yè)倫理恪守的原因終止了CV研究,但之后便出現(xiàn)新的YOLO維護者繼續(xù)接手YOLO的進一步研發(fā)項目。
02YOLO算法原理
YOLO的核心理念是:把目標檢測問題轉(zhuǎn)換為直接從圖像中提取邊界框和類別概率的單回歸問題,即一次就可檢測出目標的類別和位置。正因如此,YOLO模型的運行速度非???,從而可以滿足實時性應用要求。
YOLO模型做統(tǒng)一檢測(unified detection)的流程為:
YOLO模型
首先,把輸入圖像分成S×S個小格子。每個格子預測N個邊界框,每個邊界框用五個預測值表示:x,y,w,h和confidence(置信度)。其中,(x,y)是邊界框的中心坐標,w和h是邊界框的寬度和高度,這四個值都被歸一化到[0,1]區(qū)間以便于訓練。
置信度會對當前邊界框中存在目標的可能性Pr(Object)以及預測框與真實框的交并比進行綜合考慮,即
其中
根據(jù)以上定義,若一個框內(nèi)沒有物體,則confidence = 0,反之則confidence等于交并比。我們在訓練時可以計算出每一個框的置信度。
其次,我們要預測每個格子分別屬于每種目標類別的條件概率(|),其中 = 0,1,…,C,其中C是數(shù)據(jù)集中目標類別的數(shù)量。
在測試時,屬于某個格子的N個邊界框共享C個類別的條件概率,則每個邊界框?qū)儆谀硞€目標類別的置信度(類別置信度)為
最后,我們會輸出一個維度為S×S×(N×5+C) 的張量(tensor)。在此需要提示的是,5代表的是在第一步中對應的五個預測值,且因為每個格子的N個邊界框是共享C個類別的條件概率的,因此在張量維度大小的計算公式中,我們在N×5與C之間采用的運算是加法而非乘法。
YOLO使用PASCALVOC檢測數(shù)據(jù)集。YOLO將圖像分為7×7=49個小格子,其中,每個格子里有兩個邊界框,即S=7,N=2。因為VOC數(shù)據(jù)集中有20種類別,因此C=20。最終的預測結(jié)果是一個7×7×30的張量。
YOLO借鑒了GoogLeNet的設計思想,其網(wǎng)絡結(jié)構(gòu)中包括24個卷積層和2個全連接層。YOLO沒有使用Inception模塊,而是直接用1×1卷積層及隨后的3×3卷積層。YOLO的最終輸出是7×7×30的張量。
YOLO網(wǎng)絡結(jié)構(gòu)
需要強調(diào)的是,上圖中出現(xiàn)在數(shù)字右下角的“-s-2”的下標代表該卷積層或池化層的stride(步距)為2。
此外,YOLO使用Leaky ReLU作為激活函數(shù),即
總言之,YOLO算法通過把“統(tǒng)一檢測候選框與類別概率”的思想和 “用一個卷積神經(jīng)網(wǎng)絡來實現(xiàn)”的操作結(jié)合,從而開創(chuàng)了一階段目標檢測算法。
03YOLO算法的閃光點與局限性
相對于傳統(tǒng)目標檢測算法而言, 使用統(tǒng)一檢測模型的YOLO的閃光點在于:
其一,檢測速度非??臁OLO將目標檢測重建為單一回歸問題從而對輸入圖像直接處理。此外,還同時輸出邊界框坐標和分類概率,而且每張圖像只預測98個邊界框。因此,YOLO的檢測速度非???。其中,YOLO在Titan X GPU上的檢測速度能達到45幀/秒,F(xiàn)ast YOLO的檢測速度則可以達到155幀/秒。
其二,背景誤判少。以往基于滑動窗口或候選區(qū)域提取的目標檢測算法只能看到圖像的局部信息,因此會把圖像背景誤認為檢測目標。而YOLO在訓練和測試時每個格子都可以看到全局信息,因此不容易把圖像背景預測為目標。
其三,泛化性更好。YOLO能夠?qū)W習到目標的泛化表示,從而能夠遷移到其他領域。在泛化能力上,YOLO的性能遠優(yōu)于DPM、R-CNN等。
但除了以上閃光點外,YOLO也存在著局限性。雖然YOLO的目標檢測速度很快,但其預測精度不是很高。究其原因,主要是由于——
其一,YOLO的每個格子只能預測兩個邊界框和一種目標的分類。YOLO將一張圖像均分為49個格子,若在同一單元格內(nèi)存在多個物體的中心,那么該單元格內(nèi)只能預測出一個類別的物體,并丟掉其他的物體,從而降低了預測精度。
其二,損失函數(shù)的設計過于簡單。雖然邊界框的坐標和分類表征的內(nèi)容不同,但YOLO都用其均方誤差作為損失函數(shù)。
其三,YOLO直接預測邊界框的坐標位置,這會導致模型不易訓練。
不過,以上在YOLO原版中出現(xiàn)的問題在后來的YOLO v2、YOLO v3等版本中都逐步得到了改進。
來源:新機器視覺
審核編輯:湯梓紅
-
檢測系統(tǒng)
+關注
關注
3文章
945瀏覽量
42996 -
檢測算法
+關注
關注
0文章
118瀏覽量
25206 -
目標檢測
+關注
關注
0文章
200瀏覽量
15578 -
數(shù)據(jù)集
+關注
關注
4文章
1200瀏覽量
24619
原文標題:【光電智造】目標檢測算法YOLO的發(fā)展史及優(yōu)勢
文章出處:【微信號:今日光電,微信公眾號:今日光電】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論