YOLO的全拼是You Only Look Once,顧名思義就是只看一次,把目標(biāo)區(qū)域預(yù)測和目標(biāo)類別預(yù)測合二為一,作者將目標(biāo)檢測任務(wù)看作目標(biāo)區(qū)域預(yù)測和類別預(yù)測的回歸問題。該方法采用單個(gè)神經(jīng)網(wǎng)絡(luò)直接預(yù)測物品邊界和類別概率,實(shí)現(xiàn)端到端的物品檢測。因此識別性能有了很大提升,達(dá)到每秒45幀,而在快速YOLO(Fast YOLO,卷積層更少)中,可以達(dá)到每秒155幀。
當(dāng)前最好系統(tǒng)相比,YOLO目標(biāo)區(qū)域定位誤差更大,但是背景預(yù)測的假陽性優(yōu)于當(dāng)前最好的方法。
一、引言
人類瞥了一眼圖像,立即知道圖像中的物體,它們在哪里以及它們?nèi)绾蜗嗷プ饔?。人類視覺系統(tǒng)快速而準(zhǔn)確,使我們能夠執(zhí)行復(fù)雜的任務(wù),比如汽車駕駛。
傳統(tǒng)的目標(biāo)檢測系統(tǒng)利用分類器來執(zhí)行檢測。為了檢測對象,這些系統(tǒng)在測試圖片的不同位置不同尺寸大小采用分類器對其進(jìn)行評估。如目標(biāo)檢測系統(tǒng)采用deformable parts models (DPM)方法,通過滑動框方法提出目標(biāo)區(qū)域,然后采用分類器來實(shí)現(xiàn)識別。近期的R-CNN類方法采用region proposal methods,首先生成潛在的bounding boxes,然后采用分類器識別這些bounding boxes區(qū)域。最后通過post-processing來去除重復(fù)bounding boxes來進(jìn)行優(yōu)化。這類方法流程復(fù)雜,存在速度慢和訓(xùn)練困難的問題。
我們將目標(biāo)檢測問題轉(zhuǎn)換為直接從圖像中提取bounding boxes和類別概率的單個(gè)回歸問題,只需一眼(you only look once,YOLO)即可檢測目標(biāo)類別和位置。
YOLO簡潔明了:見下圖。YOLO算法采用單個(gè)卷積神經(jīng)網(wǎng)絡(luò)來預(yù)測多個(gè)bounding boxes和類別概率。與傳統(tǒng)的物體檢測方法相比,這種統(tǒng)一模型具有以下優(yōu)點(diǎn):
YOLO檢測系統(tǒng)。用YOLO處理圖像簡單直接。我們的系統(tǒng)(1)將輸入圖像調(diào)整為448×448,(2)在圖像上運(yùn)行單個(gè)卷積網(wǎng)絡(luò),以及(3)由模型的置信度對所得到的檢測進(jìn)行閾值處理。
非??臁OLO預(yù)測流程簡單,速度很快。我們的基礎(chǔ)版在Titan X GPU上可以達(dá)到45幀/s;快速版可以達(dá)到150幀/s。因此,YOLO可以實(shí)現(xiàn)實(shí)時(shí)檢測。
YOLO采用全圖信息來進(jìn)行預(yù)測。與滑動窗口方法和region proposal-based方法不同,YOLO在訓(xùn)練和預(yù)測過程中可以利用全圖信息。Fast R-CNN檢測方法會錯(cuò)誤的將背景中的斑塊檢測為目標(biāo),原因在于Fast R-CNN在檢測中無法看到全局圖像。相對于Fast R-CNN,YOLO背景預(yù)測錯(cuò)誤率低一半。
YOLO可以學(xué)習(xí)到目標(biāo)的概括信息(generalizable representation),具有一定普適性。我們采用自然圖片訓(xùn)練YOLO,然后采用藝術(shù)圖像來預(yù)測。YOLO比其它目標(biāo)檢測方法(DPM和R-CNN)準(zhǔn)確率高很多。
在準(zhǔn)確性上,YOLO算法仍然落后于最先進(jìn)的檢測系統(tǒng)。雖然它可以快速識別圖像中的對象,但它很難精確定位某些對象,特別是小對象。
二 統(tǒng)一檢測(Unified Detection)
我們將目標(biāo)檢測統(tǒng)一到一個(gè)神經(jīng)網(wǎng)絡(luò)。我們的網(wǎng)絡(luò)使用整個(gè)圖像中的特征來預(yù)測每個(gè)邊界框。它也是同時(shí)預(yù)測圖像的所有類的所有邊界框。這意味著我們的網(wǎng)絡(luò)學(xué)習(xí)到的完整圖像和圖中所有的對象.YOLO設(shè)計(jì)可實(shí)現(xiàn)端到端訓(xùn)練和實(shí)時(shí)的速度,同時(shí)保持較高的平均精度。
YOLO首先將圖像分為S×S的格子。如果一個(gè)目標(biāo)的中心落入格子,該格子就負(fù)責(zé)檢測該目標(biāo)。每一個(gè)網(wǎng)格中預(yù)測B個(gè)Bounding box 和置信值(confidence score)。這些置信度分?jǐn)?shù)反映了該模型對盒子是否包含目標(biāo)的信心,以及它預(yù)測盒子的準(zhǔn)確程度。然后,我們定義置信值為:
如果沒有目標(biāo),置信值為零。另外,我們希望置信度分?jǐn)?shù)等于預(yù)測框與真實(shí)值之間聯(lián)合部分的交集(IOU)。
每一個(gè)bounding box包含5個(gè)值:x,y,w,h和confidence。(x,y)坐標(biāo)表示邊界框相對于網(wǎng)格單元邊界框的中心。寬度和高度是相對于整張圖像預(yù)測的。confidence表示預(yù)測的box與實(shí)際邊界框之間的IOU。每個(gè)網(wǎng)格單元還預(yù)測C個(gè)條件類別概率:
這些概率是以網(wǎng)格包含目標(biāo)為條件的,每個(gè)網(wǎng)格單元我們只預(yù)測的一組類別概率,而不管邊界框的的數(shù)量B時(shí)多少。
在測試時(shí),我們乘以條件類概率和單個(gè)盒子的置信度預(yù)測:
這些分?jǐn)?shù)編碼了該類出現(xiàn)在框中的概率以及預(yù)測框擬合目標(biāo)的程度。。在PASCAL VOC數(shù)據(jù)集上評價(jià)時(shí),我們采用S=7,B=2,C=20(該數(shù)據(jù)集包含20個(gè)類別),最終預(yù)測結(jié)果為7×7×30(B*5+C)的tensor。
模型。?我們的系統(tǒng)將檢測建模為回歸問題。它將圖像分成SxS的網(wǎng)絡(luò),并且每個(gè)網(wǎng)格單元預(yù)測B個(gè)邊界框,這些邊界框的置信度以及C個(gè)類別概率,這些預(yù)測被編碼為SxSx(B*5+C)的張量。
1、網(wǎng)絡(luò)模型
我們使用卷積神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)YOLO算法,并在Pascal VOC檢測數(shù)據(jù)集上進(jìn)行評估。網(wǎng)絡(luò)的初始卷積層從圖像中提取特征,而全連接層用來預(yù)測輸出概率和坐標(biāo)。
我們的網(wǎng)絡(luò)架構(gòu)受到GoogLeNet圖像分類模型的啟發(fā)。我們的網(wǎng)絡(luò)有24個(gè)卷積層,后面是2個(gè)全連接層。我們使用1x1降維層,后面是3x3卷積層,這與Lin等人類似,而不是GoogLeNet使用的Inception模塊。我們在ImageNet分類任務(wù)上以一半的分辨率(224x224的輸入圖像)預(yù)訓(xùn)練卷積層,然后將分辨率加倍來進(jìn)行檢測。完整的網(wǎng)絡(luò)如圖所示。
架構(gòu)。我們的檢測網(wǎng)絡(luò)有24個(gè)卷積層,其次是2個(gè)全連接層。交替1x1卷積層減少了前面層的特征空間。我們在ImageNet分類任務(wù)上以一半的分辨率(224x224的輸入圖像)預(yù)訓(xùn)練卷積層,然后將分辨率加倍來進(jìn)行檢測。
我們還訓(xùn)練了快速版本的YOLO,旨在推動快速目標(biāo)檢測的界限??焖資OLO使用具有較少卷積層(9層而不是24層)的神經(jīng)網(wǎng)絡(luò),在這些層中使用較少的濾波器。除了網(wǎng)絡(luò)規(guī)模之外,YOLO和Fast YOLO的所有訓(xùn)練和測試參數(shù)都是相同的。
我們網(wǎng)絡(luò)的最終輸出是7x7x30的預(yù)測張量。
2、訓(xùn)練
我們在ImageNet 1000類競賽數(shù)據(jù)集上預(yù)訓(xùn)練我們的卷積層。對于預(yù)訓(xùn)練,我們使用上圖中的前20個(gè)卷積層,外加平均池化層和全連接層。我們對這個(gè)網(wǎng)絡(luò)進(jìn)行了大約一周的訓(xùn)練,并且在ImageNet 2012驗(yàn)證集上獲得了單一裁剪圖像88%的top-5準(zhǔn)確率,與Caffe模型池中的GoogLeNet模型相當(dāng)。我們使用Darknet框架進(jìn)行所有的訓(xùn)練和推斷。
然后我們轉(zhuǎn)換模型來執(zhí)行檢測。Ren等人表明,預(yù)訓(xùn)練網(wǎng)絡(luò)中增加卷積層和連接層可以提高性能。按照他們的例子,我們添加了四個(gè)卷積層和兩個(gè)全連接層,并且具有隨機(jī)初始化的權(quán)重。檢測通常需要細(xì)粒度的視覺信息,因此我們將網(wǎng)絡(luò)的輸入分辨率從224x224變?yōu)?48x448。
我們的最后一層預(yù)測類概率和邊界框坐標(biāo)。我們通過圖像寬度和高度來規(guī)范邊界框的寬度和高度,使它們落在0和1之間。我們將邊界框x和y坐標(biāo)參數(shù)化為特定網(wǎng)格單元位置的偏移量,所以它們邊界也在0和1之間。
我們對最后一層使用線性激活函數(shù),所有其它層使用下面的漏泄修正線性激活:
我們優(yōu)化了模型輸出中的平方和誤差。我們使用平方和誤差,因?yàn)樗苋菀走M(jìn)行優(yōu)化,但是它并不完全符合我們最大化平均精度的目標(biāo)。分類誤差與定位誤差的權(quán)重是一樣的,這可能并不理想。另外,在每張圖像中,許多網(wǎng)格單元不包含任何對象。這將這些單元格的“置信度”分?jǐn)?shù)推向零,通常壓倒了包含目標(biāo)的單元格的梯度。這可能導(dǎo)致模型不穩(wěn)定,從而導(dǎo)致訓(xùn)練早期發(fā)散。
為了改善這一點(diǎn),我們增加了邊界框坐標(biāo)預(yù)測損失,并減少了不包含目標(biāo)邊界框的置信度預(yù)測損失。我們使用兩個(gè)參數(shù)λcoord和λnoobj來完成這個(gè)工作。我們設(shè)置λcoord=5和λnoobj=5。
平方和誤差也可以在大盒子和小盒子中同樣加權(quán)誤差。我們的錯(cuò)誤指標(biāo)應(yīng)該反映出,大盒子小偏差的重要性不如小盒子小偏差的重要性。為了部分解決這個(gè)問題,我們直接預(yù)測邊界框?qū)挾群透叨鹊钠椒礁皇菍挾群透叨取?/p>
YOLO每個(gè)網(wǎng)格單元預(yù)測多個(gè)邊界框。在訓(xùn)練時(shí),每個(gè)目標(biāo)我們只需要一個(gè)邊界框預(yù)測器來負(fù)責(zé)。我們指定一個(gè)預(yù)測器“負(fù)責(zé)”,根據(jù)哪個(gè)預(yù)測與真實(shí)值之間具有當(dāng)前最高的IOU來預(yù)測目標(biāo)。這導(dǎo)致邊界框預(yù)測器之間的專業(yè)化。每個(gè)預(yù)測器可以更好地預(yù)測特定大小,方向角,或目標(biāo)的類別,從而改善整體召回率。
在訓(xùn)練期間,我們優(yōu)化以下多部分損失函數(shù):
其中1iobj表示目標(biāo)是否出現(xiàn)在網(wǎng)格單元i中(是為1,否為0,根據(jù)該單元實(shí)際上是否有目標(biāo)確定),1ijobj表示網(wǎng)格單元i的第j個(gè)邊界框預(yù)測器“負(fù)責(zé)”該預(yù)測(如果該單元真有目標(biāo),并且該邊界框IOU最大,則值為1,否為0)。
注意,如果目標(biāo)存在于該網(wǎng)格單元中(前面討論的條件類別概率),則損失函數(shù)僅懲罰分類錯(cuò)誤。如果預(yù)測器“負(fù)責(zé)”實(shí)際邊界框(即該網(wǎng)格單元中具有最高IOU的預(yù)測器),則它也僅懲罰邊界框坐標(biāo)錯(cuò)誤。
我們對Pascal VOC 2007和2012的訓(xùn)練和驗(yàn)證數(shù)據(jù)集進(jìn)行了大約135個(gè)迭代周期的網(wǎng)絡(luò)訓(xùn)練。在Pascal VOC 2012上進(jìn)行測試時(shí),我們的訓(xùn)練包含了Pascal VOC 2007的測試數(shù)據(jù)。在整個(gè)訓(xùn)練過程中,我們使用了64個(gè)批大小,0.9的動量和0.0005的衰減。
我們的學(xué)習(xí)率方案如下:對于第一個(gè)迭代周期,我們慢慢地將學(xué)習(xí)率從0.001提高到0.01,如果我們從高學(xué)習(xí)率開始,我們的模型往往會由于不穩(wěn)定的梯度而發(fā)散。我們繼續(xù)以0.01的學(xué)習(xí)率訓(xùn)練75個(gè)迭代周期,然后用0.001學(xué)習(xí)率訓(xùn)練30個(gè)迭代周期,最后用0.0001的學(xué)習(xí)率訓(xùn)練30個(gè)迭代周期。
為了避免過度擬合,我們使用棄權(quán)和大量的數(shù)據(jù)增強(qiáng)。在第一個(gè)連接層之后,棄權(quán)層使用0.5的比例,防止層之間的互相適應(yīng)。對于數(shù)據(jù)增強(qiáng),我們引入高達(dá)原始圖像20%的大小的隨機(jī)縮放和轉(zhuǎn)換。我們還在HSV色彩空間中使用高達(dá)1.5的因子來隨機(jī)調(diào)整圖像的曝光和飽和度。
3、預(yù)測
就像在訓(xùn)練中一樣,預(yù)測測試圖像的檢測只需要一次網(wǎng)絡(luò)評估。在Pascal VOC上,每張圖像上網(wǎng)絡(luò)預(yù)測98個(gè)邊界框和每個(gè)框的類別概率。YOLO在測試時(shí)非???,因?yàn)樗恍枰淮尉W(wǎng)絡(luò)評估,不像基于分類器的方法。
網(wǎng)格設(shè)計(jì)強(qiáng)化了邊界框預(yù)測中的空間多樣性。通常很明顯一個(gè)目標(biāo)落在哪一個(gè)網(wǎng)格單元中,而網(wǎng)絡(luò)只能為每個(gè)目標(biāo)預(yù)測一個(gè)邊界框。然而,一些大的目標(biāo)或靠近多個(gè)網(wǎng)格單元邊界的目標(biāo)可以被多個(gè)網(wǎng)格單元很好地定位。非極大值抑制可以用來修正這些多重檢測。對于R-CNN或DPM而言,性能不是關(guān)鍵的,非最大抑制會增加2%-3%的mAP。
4、YOLO的限制
YOLO的每一個(gè)網(wǎng)格只預(yù)測兩個(gè)邊界框,一種類別。這導(dǎo)致模型對相鄰目標(biāo)預(yù)測準(zhǔn)確率下降。因此,YOLO對成隊(duì)列的目標(biāo)(如 一群鳥)識別準(zhǔn)確率較低。
由于我們的模型學(xué)習(xí)從數(shù)據(jù)中預(yù)測邊界框,因此它很難泛化到新的、不常見角度的目標(biāo)。我們的模型使用相對較粗糙的特征來預(yù)測邊界框,因?yàn)槲覀兊募軜?gòu)具有來自輸入圖像的多個(gè)下采樣層。
YOLO的損失函數(shù)會同樣的對待小邊界框與大邊界框的誤差。大邊界框的小誤差通常是良性的,但小邊界框的小誤差對IOU的影響要大得多。我們的主要錯(cuò)誤來源是不正確的定位。
三 與其他目標(biāo)檢測算法對比
目標(biāo)檢測是計(jì)算機(jī)視覺中的核心問題。檢測流程通常從輸入圖像上(Haar,SIFT ,HOG ,卷積特征)提取一組魯棒特征開始。然后,分類器或定位器被用來識別特征空間中的目標(biāo)。這些分類器或定位器在整個(gè)圖像上或在圖像中的一些子區(qū)域上以滑動窗口的方式運(yùn)行。我們將YOLO檢測系統(tǒng)與幾種頂級檢測框架進(jìn)行比較,突出了關(guān)鍵的相似性和差異性。
可變形部件模型。可變形零件模型(DPM)使用滑動窗口方法進(jìn)行目標(biāo)檢測。DPM使用不相交的流程來提取靜態(tài)特征,對區(qū)域進(jìn)行分類,預(yù)測高評分區(qū)域的邊界框等。我們的系統(tǒng)用單個(gè)卷積神經(jīng)網(wǎng)絡(luò)替換所有這些不同的部分。網(wǎng)絡(luò)同時(shí)進(jìn)行特征提取,邊界框預(yù)測,非極大值抑制和上下文推理。代替靜態(tài)特征,網(wǎng)絡(luò)內(nèi)嵌地訓(xùn)練特征并為檢測任務(wù)優(yōu)化它們。我們的統(tǒng)一架構(gòu)導(dǎo)致了比DPM更快,更準(zhǔn)確的模型。
R-CNN。R-CNN及其變種使用區(qū)域提名而不是滑動窗口來查找圖像中的目標(biāo)。選擇性搜索產(chǎn)生潛在的邊界框,卷積網(wǎng)絡(luò)提取特征,SVM對邊界框進(jìn)行評分,線性模型調(diào)整邊界框,非極大值抑制消除重復(fù)檢測。這個(gè)復(fù)雜流程的每個(gè)階段都必須獨(dú)立地進(jìn)行精確調(diào)整,所得到的系統(tǒng)非常慢,測試時(shí)每張圖像需要超過40秒。
YOLO與R-CNN有一些相似之處。每個(gè)網(wǎng)格單元提出潛在的邊界框并使用卷積特征對這些框進(jìn)行評分。但是,我們的系統(tǒng)對網(wǎng)格單元提出進(jìn)行了空間限制,這有助于緩解對同一目標(biāo)的多次檢測。我們的系統(tǒng)還提出了更少的邊界框,每張圖像只有98個(gè),而選擇性搜索則只有2000個(gè)左右。最后,我們的系統(tǒng)將這些單獨(dú)的組件組合成一個(gè)單一的,共同優(yōu)化的模型。
其它快速檢測器。Fast和Faster的R-CNN通過共享計(jì)算和使用神經(jīng)網(wǎng)絡(luò)替代選擇性搜索來提出區(qū)域加速R-CNN框架。雖然它們提供了比R-CNN更快的速度和更高的準(zhǔn)確度,但兩者仍然不能達(dá)到實(shí)時(shí)性能。
許多研究工作集中在加快DPM流程上。它們加速HOG計(jì)算,使用級聯(lián),并將計(jì)算推動到GPU上。但是,實(shí)際上只有30Hz的DPM可以實(shí)時(shí)運(yùn)行。
YOLO不是試圖優(yōu)化大型檢測流程的單個(gè)組件,而是完全拋棄流程,被設(shè)計(jì)為快速檢測。
像人臉或行人等單類別的檢測器可以高度優(yōu)化,因?yàn)樗麄儽仨毺幚砀俚淖兓?。YOLO是一種通用的檢測器,可以學(xué)習(xí)同時(shí)檢測多個(gè)目標(biāo)。
Deep MultiBox。與R-CNN不同,Szegedy等人訓(xùn)練了一個(gè)卷積神經(jīng)網(wǎng)絡(luò)來預(yù)測感興趣區(qū)域,而不是使用選擇性搜索。MultiBox還可以通過用單類預(yù)測替換置信度預(yù)測來執(zhí)行單目標(biāo)檢測。然而,MultiBox無法執(zhí)行通用的目標(biāo)檢測,并且仍然只是一個(gè)較大的檢測流程中的一部分,需要進(jìn)一步的圖像塊分類。YOLO和MultiBox都使用卷積網(wǎng)絡(luò)來預(yù)測圖像中的邊界框,但是YOLO是一個(gè)完整的檢測系統(tǒng)。
OverFeat。Sermanet等人訓(xùn)練了一個(gè)卷積神經(jīng)網(wǎng)絡(luò)來執(zhí)行定位,并使該定位器進(jìn)行檢測。OverFeat高效地執(zhí)行滑動窗口檢測,但它仍然是一個(gè)不相交的系統(tǒng)。OverFeat優(yōu)化了定位,而不是檢測性能。像DPM一樣,定位器在進(jìn)行預(yù)測時(shí)只能看到局部信息。OverFeat不能推斷全局上下文,因此需要大量的后處理來產(chǎn)生連貫的檢測。
MultiGrasp。我們的工作在設(shè)計(jì)上類似于Redmon等的抓取檢測。我們對邊界框預(yù)測的網(wǎng)格方法是基于MultiGrasp系統(tǒng)抓取的回歸分析。然而,抓取檢測比目標(biāo)檢測任務(wù)要簡單得多。MultiGrasp只需要為包含一個(gè)目標(biāo)的圖像預(yù)測一個(gè)可以抓取的區(qū)域。不必估計(jì)目標(biāo)的大小,位置或目標(biāo)邊界或預(yù)測目標(biāo)的類別,只找到適合抓取的區(qū)域。YOLO預(yù)測圖像中多個(gè)類別的多個(gè)目標(biāo)的邊界框和類別概率。
四 實(shí)驗(yàn)
首先,我們在PASCAL VOC 2007上比較YOLO和其它的實(shí)時(shí)檢測系統(tǒng)。為了理解YOLO和R-CNN變種之間的差異,我們探索了YOLO和R-CNN性能最高的版本之一Fast R-CNN在VOC 2007上錯(cuò)誤率。根據(jù)不同的誤差曲線,我們顯示YOLO可以用來重新評估Fast R-CNN檢測,并減少背景假陽性帶來的錯(cuò)誤,從而顯著提升性能。我們還展示了在VOC 2012上的結(jié)果,并與目前最先進(jìn)的方法比較了mAP。最后,在兩個(gè)藝術(shù)品數(shù)據(jù)集上我們顯示了YOLO可以比其它檢測器更好地泛化到新領(lǐng)域。
1、與其他實(shí)時(shí)系統(tǒng)的比較
目標(biāo)檢測方面的許多研究工作都集中在快速制定標(biāo)準(zhǔn)檢測流程上。然而,只有Sadeghi等實(shí)際上產(chǎn)生了一個(gè)實(shí)時(shí)運(yùn)行的檢測系統(tǒng)(每秒30幀或更好)。我們將YOLO與DPM的GPU實(shí)現(xiàn)進(jìn)行了比較,其在30Hz或100Hz下運(yùn)行。雖然其它的努力沒有達(dá)到實(shí)時(shí)性的里程碑,我們也比較了它們的相對mAP和速度來檢查目標(biāo)檢測系統(tǒng)中精度——性能權(quán)衡。
Fast YOLO是PASCAL上最快的目標(biāo)檢測方法;據(jù)我們所知,它是現(xiàn)有的最快的目標(biāo)檢測器。具有52.7%mAP,實(shí)時(shí)檢測的精度是以前工作的兩倍以上。YOLO將mAP推到63.4%同時(shí)保持了實(shí)時(shí)性能。
我們還使用VGG-16訓(xùn)練YOLO。這個(gè)模型比YOLO更準(zhǔn)確,但也比它慢得多。對于依賴于VGG-16的其它檢測系統(tǒng)來說,它是比較有用的,但由于它比實(shí)時(shí)的YOLO更慢,本文的其它部分將重點(diǎn)放在我們更快的模型上。
Fastest DPM可以在不犧牲太多mAP的情況下有效地加速DPM,但仍然會將實(shí)時(shí)性能降低2倍。與神經(jīng)網(wǎng)絡(luò)方法相比,DPM相對低的檢測精度也受到限制。
R-CNN Minus R用靜態(tài)邊界框提出取代選擇性搜索。雖然速度比R-CNN更快,但仍然不能實(shí)時(shí),并且由于沒有好的邊界框提出,準(zhǔn)確性受到了嚴(yán)重影響。
Fast R-CNN加快了R-CNN的分類階段,但是仍然依賴選擇性搜索,每張圖像需要花費(fèi)大約2秒來生成邊界框提出。因此,它具有很高的mAP,但是0.5的fps仍離實(shí)時(shí)性很遠(yuǎn)。
Faster R-CNN用神經(jīng)網(wǎng)絡(luò)替代了選擇性搜索來提出邊界框,類似于Szegedy等。在我們的測試中,他們最精確的模型達(dá)到了7fps,而較小的,不太精確的模型以18fps運(yùn)行。VGG-16版本的Faster R-CNN要高出10mAP,但比YOLO慢6倍。Zeiler-Fergus的Faster R-CNN只比YOLO慢了2.5倍,但也不太準(zhǔn)確。
Pascal VOC 2007上的實(shí)時(shí)系統(tǒng)。比較快速檢測器的性能和速度??焖資OLO是Pascal VOC檢測記錄中速度最快的檢測器,其精度仍然是其它實(shí)時(shí)檢測器的兩倍。YOLO比快速版本更精確10mAP,同時(shí)在速度上仍保持實(shí)時(shí)性。
2、VOC 2007錯(cuò)誤率分析
為了進(jìn)一步檢查YOLO和最先進(jìn)的檢測器之間的差異,我們詳細(xì)分析了VOC 2007的結(jié)果。我們將YOLO與Fast R-CNN進(jìn)行比較,因?yàn)镕ast R-CNN是PASCAL上性能最高的檢測器之一并且它的檢測代碼是可公開得到的。
我們使用Hoiem等人的方法和工具。對于測試時(shí)的每個(gè)類別,我們看這個(gè)類別的前N個(gè)預(yù)測。每個(gè)預(yù)測或者是正確的,或者根據(jù)錯(cuò)誤類型進(jìn)行分類:
Correct:正確的類別而且IOU>0.5
Localization:正確的類別,0.1
Similar:類別相似,IOU>0.1
Other:類別錯(cuò)誤,IOU>0.1
Background:任何IOU<0.1的目標(biāo)
下圖顯示了在所有的20個(gè)類別上每種錯(cuò)誤類型平均值的分解圖。
誤差分析:Fast R-CNN vs. YOLO。這張圖顯示了各種類別的前N個(gè)預(yù)測中定位錯(cuò)誤和背景錯(cuò)誤的百分比(N = #表示目標(biāo)在那個(gè)類別中)。
YOLO努力地正確定位目標(biāo)。定位錯(cuò)誤占YOLO錯(cuò)誤的大多數(shù),比其它錯(cuò)誤源加起來都多。Fast R-CNN使定位錯(cuò)誤少得多,但背景錯(cuò)誤更多。它的檢測的13.6%是不包含任何目標(biāo)的誤報(bào)。Fast R-CNN比YOLO預(yù)測背景檢測的可能性高出近3倍。
3、結(jié)合Fast R-CNN和YOLO
YOLO比Fast R-CNN的背景誤檢要少得多。通過使用YOLO消除Fast R-CNN的背景檢測,我們獲得了顯著的性能提升。對于R-CNN預(yù)測的每個(gè)邊界框,我們檢查YOLO是否預(yù)測一個(gè)類似的框。如果是這樣,我們根據(jù)YOLO預(yù)測的概率和兩個(gè)盒子之間的重疊來對這個(gè)預(yù)測進(jìn)行提升。
最好的Fast R-CNN模型在VOC 2007測試集上達(dá)到了71.8%的mAP。當(dāng)與YOLO結(jié)合時(shí),其mAP增加了3.2%達(dá)到了75%,我們也嘗試將最好的Fast R-CNN模型與其它幾個(gè)版本的Fast R-CNN結(jié)合起來。這些模型組合產(chǎn)生了0.3%到0.6%之間的小增幅。
VOC 2007模型組合實(shí)驗(yàn)。我們檢驗(yàn)了各種模型與Fast R-CNN最佳版本結(jié)合的效果。Fast R-CNN的其它版本只提供很小的好處,而YOLO則提供了顯著的性能提升。
來自YOLO的提升不僅僅是模型組合的副產(chǎn)品,因?yàn)榻M合不同版本的Fast R-CNN幾乎沒有什么好處。相反,正是因?yàn)閅OLO在測試時(shí)出現(xiàn)了各種各樣的錯(cuò)誤,所以在提高Fast R-CNN的性能方面非常有效。
遺憾的是,這個(gè)組合并沒有從YOLO的速度中受益,因?yàn)槲覀兎謩e運(yùn)行每個(gè)模型,然后結(jié)合結(jié)果。但是,由于YOLO速度如此之快,與Fast R-CNN相比,不會增加任何顯著的計(jì)算時(shí)間。
4、VOC 2012結(jié)果
在VOC 2012測試集上,YOLO得分為57.9%mAP,這低于現(xiàn)有的最新技術(shù),接近于使用VGG-16的原始R-CNN,見表3。我們的系統(tǒng)與其最接近的競爭對手相比,在小目標(biāo)上努力。在bottle,sheep和tv/monitor等類別上,YOLO的得分比R-CNN或Feature Edit低8%-10%,然而,在cat和train等其它類別上YOLO實(shí)現(xiàn)了更高的性能。
PASCAL VOC 2012排行榜。截至2015年11月6日,YOLO與完整comp4(允許外部數(shù)據(jù))公開排行榜進(jìn)行了比較。顯示了各種檢測方法的平均精度均值和每類的平均精度。YOLO是唯一的實(shí)時(shí)檢測器。Fast R-CNN + YOLO是評分第四高的方法,比Fast R-CNN提升了2.3%。
我們聯(lián)合的Fast R-CNN + YOLO模型是性能最高的檢測方法之一。Fast R-CNN從與YOLO的組合中獲得了2.3%提高,在公開排行榜上上移了5位。
5、泛化能力,藝術(shù)品中的行人檢測
用于目標(biāo)檢測的學(xué)術(shù)數(shù)據(jù)集以相同分布獲取訓(xùn)練和測試數(shù)據(jù)。在現(xiàn)實(shí)世界的應(yīng)用中,很難預(yù)測所有可能的用例,而且測試數(shù)據(jù)可能與系統(tǒng)之前看到的不同[3]。我們在Picasso數(shù)據(jù)集上和People-Art數(shù)據(jù)集上將YOLO與其它的檢測系統(tǒng)進(jìn)行比較,這兩個(gè)數(shù)據(jù)集用于測試藝術(shù)品中的行人檢測。
下圖顯示了YOLO和其它檢測方法之間的比較性能。作為參考,我們在person上提供VOC 2007的檢測AP,其中所有模型僅在VOC 2007數(shù)據(jù)上訓(xùn)練。在Picasso數(shù)據(jù)集上的模型在VOC 2012上訓(xùn)練,而People-Art數(shù)據(jù)集上的模型則在VOC 2010上訓(xùn)練。
Picasso和People-Art數(shù)據(jù)集上的泛化結(jié)果。
R-CNN在VOC 2007上有高AP。然而,當(dāng)應(yīng)用于藝術(shù)品時(shí),R-CNN明顯下降。R-CNN使用選擇性搜索來調(diào)整自然圖像的邊界框提出。R-CNN中的分類器步驟只能看到小區(qū)域,并且需要很好的邊界框提出。
DPM在應(yīng)用于藝術(shù)品時(shí)保持了其AP。之前的工作認(rèn)為DPM表現(xiàn)良好,因?yàn)樗哂心繕?biāo)形狀和布局的強(qiáng)大空間模型。雖然DPM不會像R-CNN那樣退化,但它開始時(shí)的AP較低。
YOLO在VOC 2007上有很好的性能,在應(yīng)用于藝術(shù)品時(shí)其AP下降低于其它方法。像DPM一樣,YOLO建模目標(biāo)的大小和形狀,以及目標(biāo)和目標(biāo)通常出現(xiàn)的位置之間的關(guān)系。藝術(shù)品和自然圖像在像素級別上有很大不同,但是它們在目標(biāo)的大小和形狀方面是相似的,因此YOLO仍然可以預(yù)測好的邊界框和檢測結(jié)果。
定性結(jié)果。YOLO在網(wǎng)絡(luò)采樣的藝術(shù)品和自然圖像上的運(yùn)行結(jié)果。雖然它將人誤檢成了飛機(jī),但它大部分上是準(zhǔn)確的。
四 實(shí)時(shí)目標(biāo)檢測
YOLO是一種快速,精確的目標(biāo)檢測器,非常適合計(jì)算機(jī)視覺應(yīng)用。我們將YOLO連接到網(wǎng)絡(luò)攝像頭,并驗(yàn)證它是否能保持實(shí)時(shí)性能,包括從攝像頭獲取圖像并顯示檢測結(jié)果的時(shí)間。
由此產(chǎn)生的系統(tǒng)是交互式和參與式的。雖然YOLO單獨(dú)處理圖像,但當(dāng)連接到網(wǎng)絡(luò)攝像頭時(shí),其功能類似于跟蹤系統(tǒng),可在目標(biāo)移動和外觀變化時(shí)檢測目標(biāo)。系統(tǒng)演示和源代碼可以在項(xiàng)目網(wǎng)站上找到:http://pjreddie.com/yolo/。
五 結(jié)論
我們介紹了YOLO,一種統(tǒng)一的目標(biāo)檢測模型。我們的模型構(gòu)建簡單,可以直接在整張圖像上進(jìn)行訓(xùn)練。與基于分類器的方法不同,YOLO直接在對應(yīng)檢測性能的損失函數(shù)上訓(xùn)練,并且整個(gè)模型聯(lián)合訓(xùn)練。
快速YOLO是文獻(xiàn)中最快的通用目的的目標(biāo)檢測器,YOLO推動了實(shí)時(shí)目標(biāo)檢測的最新技術(shù)。YOLO還很好地泛化到新領(lǐng)域,使其成為依賴快速,強(qiáng)大的目標(biāo)檢測應(yīng)用的理想選擇。
編輯:黃飛
?
評論
查看更多