?作者 | 小欣
目標(biāo)檢測一直是計算機視覺的熱門領(lǐng)域击孩,它也具有豐富的應(yīng)用場景移怯,從無人駕駛到缺陷檢測等等硕勿。
在YOLO誕生之前替梨,目標(biāo)檢測領(lǐng)域熱門的深度學(xué)習(xí)模型是R-CNN系列模型,這一類的模型被稱之為二階段模型(two-stage)螟蝙,其大致思路就是先找出可能含有物體的區(qū)域恢恼,進而再細(xì)致的找出這片區(qū)域內(nèi)的物體是什么,在哪個位置胶逢。
這一類模型的特點就是準(zhǔn)確率較高厅瞎,但是速度較慢,難以做到實時檢測初坠。而這時候,YOLO V1應(yīng)運而生彭雾,它的特點就是速度快碟刺,在犧牲部分模型性能的情況下,能做到實時檢測薯酝。
YOLO直接從圖片中去尋找可能存在物體的位置半沽,因此也被稱為單階段模型(one-stage) 。
要想透徹了解YOLO系列模型的運行原理吴菠,需要從V1版本開始講起者填,看作者如何迭代更新,一步步改良YOLO做葵,在這個學(xué)習(xí)過程中占哟,也能學(xué)到很多相關(guān)的目標(biāo)檢測知識。
YOLO V1
01 思路
YOLO V1發(fā)表在2016年酿矢,其作者是Joseph Redmon榨乎。YOLO V1的想法很樸素,但也很有效瘫筐。
簡單地說蜜暑,它將一張圖分成個網(wǎng)格,假設(shè)策肝,即它將一張圖分成了49個網(wǎng)格肛捍,不難想象隐绵,原圖中每個物體的中心都在其中一個網(wǎng)格中。
因此拙毫,只需要讓每個網(wǎng)格負(fù)責(zé)預(yù)測中心點落在當(dāng)前網(wǎng)格中的物體氢橙。這在訓(xùn)練的時候是很容易辦到的,因為我們已知每個物體的坐標(biāo)恬偷。
通過這樣的思想悍手,作者構(gòu)建出了一個端對端、且非常高效的模型袍患,并在其基礎(chǔ)上坦康,不斷進行改進,提出了后續(xù)的V2,V3等诡延。
如下圖所示滞欠,只需要三步,YOLO就可以得到較好的預(yù)測結(jié)果肆良。
02 網(wǎng)絡(luò)設(shè)計
接下來我們開始詳細(xì)介紹YOLO V1的流程筛璧。首先,對于任意一張圖片惹恃,YOLO首先將它resize成448X448大小的尺寸夭谤,將其傳入CNN模型中,進行提取特征巫糙,其具體結(jié)構(gòu)如下圖所示朗儒,這里假設(shè)每個網(wǎng)格都配備兩個預(yù)測框,也就是每個網(wǎng)格需要預(yù)測兩個bbox参淹。
內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)類似于VGGNet醉锄,比較簡單,包含卷積層浙值,下采樣層等恳不,直到最后一步,得到一個7X7X1024的特征圖开呐。
可以想象烟勋,該特征圖一個像素,應(yīng)該包含了原圖較大范圍內(nèi)的信息负蚊,這時將最后的特征圖拉直變成一維向量神妹,通過全連接層將維度依次降為4094,1470維家妆,將最后的1470維的一維向量reshape成7X7X30鸵荠,即為最后的輸出。
我們最后得到的7X7X30輸出伤极,是和下圖左邊的網(wǎng)格圖對應(yīng)的蛹找,每一個網(wǎng)格對應(yīng)一個1X1X30的輸出姨伤。
這個1X1X30的輸出同樣有學(xué)問,它的前面十個數(shù)值對應(yīng)兩個預(yù)測框的中心點坐標(biāo)庸疾,長乍楚,寬和置信度(x,y,h,w,conf),因為我們前面假設(shè)的是一個網(wǎng)格配置兩個預(yù)測框届慈,所以有10個數(shù)值徒溪,如果配置更多的話,相應(yīng)的維度也會增加金顿。
而它的后20個值對應(yīng)的是類別概率臊泌,假設(shè)我們這邊預(yù)? 測總共有20個類別,但是這樣的做法揍拆,實際上也是YOLO V1的缺點渠概,因為一個網(wǎng)格它實際上只能預(yù)測一個物體,它的類別由輸出的后20個通道決定嫂拴,bbox由前10個通道中的置信度高的bbox決定播揪。
如果輸入圖是一張有小目標(biāo)的圖像,一個網(wǎng)格有若干個物體筒狠,那YOLO V1只能找出網(wǎng)格中的一個猪狈,這一點會在后面的版本進行改進。
另外值得一提的是窟蓝,YOLO中的bbox的格式是(x,y,w,h)罪裹,也就是給bbox的中心點坐標(biāo)和長寬,為了方便訓(xùn)練运挫,這四個值都是要做標(biāo)準(zhǔn)化處理,也就是除以原圖的尺寸套耕,它們的取值都是在0~1之間谁帕。
還需要注意的是,模型給出的輸出(x,y)是相對于所在網(wǎng)格左上角坐標(biāo)的偏移量冯袍,它的值在0~1之間匈挖,所以我們得到的(x,y)的坐標(biāo)還要加上網(wǎng)格左上角坐標(biāo)才是真正的bbox的坐標(biāo)位置,至于bbox的長寬康愤,也是在0~1之間的儡循,但它們就不是偏移量了,是直接預(yù)測得到的征冷,這種方式也被稱為anchor-free方法择膝,即不需要預(yù)先給定bbox的尺寸。
這一點在R-CNN系列中不是這樣的检激,R-CNN系列中肴捉,學(xué)到的(x,y,w,h)都是偏移量腹侣,它們是由先驗框進行指導(dǎo)的,事實上這也是YOLO V2的改進之一齿穗,憑空生成的anchor不如有先驗知識的anchor準(zhǔn)確傲隶,這在之后的版本中也進行了改進。
03 損失函數(shù)
要想知道YOLO V1是怎么學(xué)習(xí)的窃页,還需要知道它的損失函數(shù)是怎么設(shè)計的跺株,了解V1的損失函數(shù),有助于了解后面的YOLO系列脖卖。
分別代表網(wǎng)格內(nèi)有無物體時的示性函數(shù)乒省,損失函數(shù)的第一項相當(dāng)于做的是對bbox的中心點坐標(biāo)的平方誤差,容易理解胚嘲。
而第二項是bbox的長寬作儿,它是相當(dāng)于做了開根之后在進行計算平方誤差,之所以這么做是為了讓小目標(biāo)的物體的長寬預(yù)測更準(zhǔn)一些馋劈,假設(shè)長寬的誤差是0.1攻锰,對大物體來說可能不值一提,但是對于小物體來說妓雾,可能這個誤差就比較致命了娶吞,對于0-1之間的數(shù)值做開根運算,得到的數(shù)值是會變大的械姻,有助于預(yù)測妒蛇。
第三項和第四項針對的是不同框的置信度,因為YOLO V1中楷拳,一個網(wǎng)格只預(yù)測一個物體绣夺,所以置信度高的被認(rèn)為含有物體,低的被預(yù)測為不含物體欢揖。
另外需要注意的是陶耍,這兩項前面有一個系數(shù)
前者取5,后者取0.5她混,因為我們更關(guān)注有物體的bbox烈钞,但也不能完全忽視不含物體的bbox;而最后一項是計算當(dāng)前網(wǎng)格所屬類別的坤按,實際上也能使用交叉熵毯欣,但是作者為了建立一個統(tǒng)一的框架,采用了回歸的計算方法臭脓,這樣整個損失函數(shù)都是回歸形式的酗钞,更加的和諧統(tǒng)一。
04 置信度介紹
在前面筆者提到了若干次置信度的概念,這一概念直觀上給人的感受是可信度或者概率算吩,實際上它包含的信息更豐富留凭,在這里進行具體的講解。
置信度包含兩方面的含義偎巢,一個是bbox含有目標(biāo)的可能性蔼夜,另一個是這個bbox的準(zhǔn)確率,
前者我們將其記為
當(dāng)邊界框包含物體時,
不包含時則為0压昼;
bbox的準(zhǔn)確度可以用IOU這一指標(biāo)進行表示求冷,記為
因此置信度可以定義為
在訓(xùn)練時,對于不含物體的bbox窍霞,它們的置信度就0匠题,反之則為1,然后與預(yù)測的置信度一起計算loss但金;
在測試階段韭山,置信度是直接生成的,可以理解成已知該區(qū)域有物體的條件下冷溃,是何類別的概率钱磅。
05 網(wǎng)絡(luò)預(yù)測
以上介紹了模型的流程,實際上也介紹了它的訓(xùn)練過程似枕,接下來再介紹它的測試流程盖淡。
測試流程與訓(xùn)練流程有一些不一樣,因為此時我們不知道哪些網(wǎng)格中有物體凿歼,對于輸出的bbox褪迟,我們需要采用NMS的算法刪除冗余的bbox,留下正確的bbox答憔。
NMS算法的流程如下:首先從所有的檢測框中找到置信度? 最大的那個框味赃,然后挨個計算其與剩余框的IOU,如果其值大于一定閾值(重合度過高)虐拓,那么就將該框剔除洁桌;然后對剩余的檢測框重復(fù)上述過程,直到處理完所有的檢測框侯嘀。
我們來介紹它是怎么使用NMS算法的。
因為我們對一個網(wǎng)格要預(yù)測兩個bbox谱轨,所以最后我們能得到個7X7X2=98個bbox戒幔。
首先,將這 98個bbox中置信度低的框去掉土童,然后再根據(jù)置信度對剩下的bbox排序诗茎,使用NMS算法,把重復(fù)度高的框的置信度設(shè)為0。
對于留下的框敢订,再根據(jù)分類概率得到它們的類別王污,這里注意得到的框的大小都是相對于原圖大小的,都是0-1之間的值楚午,所以輸出的時候還需要還原昭齐,才能得到真實的bbox的尺寸大小。
06 模型缺點
● 使用全連接層矾柜,參數(shù)量巨大阱驾,而且也因此在檢測時,YOLO 訓(xùn)練模型只支持與訓(xùn)練圖像相同的輸入分辨率怪蔑。
● 一個網(wǎng)格只能預(yù)測一個物體里覆。
● anchor-free的方法沒有anchor-based的準(zhǔn)確。
● 對小目標(biāo)物體的檢測能力有限缆瓣,且物體檢測的定位準(zhǔn)確性較低喧枷。
以上其實也是YOLO V2的改進之處。
參考資料
[1] https://zhuanlan.zhihu.com/p/32525231
[2] https://arxiv.org/abs/1506.02640
私信我領(lǐng)取目標(biāo)檢測與R-CNN/數(shù)據(jù)分析的應(yīng)用/電商數(shù)據(jù)分析/數(shù)據(jù)分析在醫(yī)療領(lǐng)域的應(yīng)用/NLP學(xué)員項目展示/中文NLP的介紹與實際應(yīng)用/NLP系列直播課/NLP前沿模型訓(xùn)練營等干貨學(xué)習(xí)資源弓坞。