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

改進(jìn)的ViBe運(yùn)動(dòng)目標(biāo)檢測(cè)算法_劉春
基于yolo算法進(jìn)行改進(jìn)的高效衛(wèi)星圖像目標(biāo)檢測(cè)算法
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法

目標(biāo)檢測(cè)—YOLO的重要性!
基于Transformer的目標(biāo)檢測(cè)算法

評(píng)論