YOLO v1

本文基本參考【深度學習YOLO V1】深刻解讀YOLO V1(圖解)错森,不過原文有大量圖片不能顯示峻仇,所以我在這里重發(fā)一下,侵刪哆致。

YOLO是單階段目標檢測算法绕德。

YOLO將圖像分成 SxS個網(wǎng)格,由目標中心所在的網(wǎng)格預測該目標摊阀。

  • 每個網(wǎng)格要預測B個bounding box耻蛇,每個bounding box除了要回歸自身的位置之外,還要附帶預測一個confidence值驹溃。
    這個confidence代表了所預測的box中含有object的置信度和這個box預測的有多準兩重信息城丧,其值是這樣計算的:


    image

    其中如果有object落在一個grid cell里,第一項取1豌鹤,否則取0亡哄。 第二項是預測的bounding box和實際的groundtruth之間的IoU值。

  • 每個bounding box要預測(x, y, w, h)和confidence共5個值布疙,每個網(wǎng)格還要預測一個類別信息蚊惯,記為C類。則SxS個網(wǎng)格灵临,每個網(wǎng)格要預測B個bounding box還要預測C個categories截型。輸出就是S x S x (5*B+C)的一個tensor。
    注意:class信息是針對每個網(wǎng)格的儒溉,confidence信息是針對每個bounding box的宦焦。

舉例說明: 在PASCAL VOC中,圖像輸入為448x448顿涣,取S=7波闹,B=2,一共有20個類別(C=20)涛碑。則輸出就是7x7x30的一個tensor精堕。
整個網(wǎng)絡結構如下圖所示:

image.png

網(wǎng)絡設計:

image

網(wǎng)絡結構借鑒了 GoogLeNet 。24個卷積層蒲障,2個全鏈接層歹篓。(用1×1 reduction layers 緊跟 3×3 convolutional layers 取代Goolenet的 inception modules )

  • 在test的時候瘫证,每個網(wǎng)格預測的class信息和bounding box預測的confidence信息相乘,就得到每個bounding box的class-specific confidence score:


    這里寫圖片描述

    等式左邊第一項就是每個網(wǎng)格預測的類別信息庄撮,第二三項就是每個bounding box預測的confidence背捌。這個乘積即encode了預測的box屬于某一類的概率,也有該box準確度的信息洞斯。

  • 得到每個box的class-specific confidence score以后载萌,設置閾值,濾掉得分低的boxes巡扇,對保留的boxes進行NMS處理,就得到最終的檢測結果垮衷。

3.YOLO的實現(xiàn)細節(jié)

  • 每個grid有30維厅翔,這30維中,8維是回歸box的坐標搀突,2維是box的confidence刀闷,還有20維是類別。
    其中坐標的x,y用對應網(wǎng)格的offset歸一化到0-1之間仰迁,w,h用圖像的width和height歸一化到0-1之間甸昏。

  • 在實現(xiàn)中,最主要的就是怎么設計損失函數(shù)徐许,讓這個三個方面得到很好的平衡施蜜。作者簡單粗暴的全部采用了sum-squared error loss來做這件事。
    這種做法存在以下幾個問題:
    第一雌隅,8維的localization error和20維的classification error同等重要顯然是不合理的翻默;
    第二,如果一個網(wǎng)格中沒有object(一幅圖中這種網(wǎng)格很多)恰起,那么就會將這些網(wǎng)格中的box的confidence push到0修械,相比于較少的有object的網(wǎng)格,這種做法是overpowering的检盼,這會導致網(wǎng)絡不穩(wěn)定甚至發(fā)散肯污。
    解決辦法:

    • 更重視8維的坐標預測,給這些損失前面賦予更大的loss weight, 記為
      image

      在pascal VOC訓練中取5吨枉。

    • 對沒有object的box的confidence loss蹦渣,賦予小的loss weight,記為
      image

      在pascal VOC訓練中取0.5东羹。

    • 有object的box的confidence loss和類別的loss的loss weight正常取1剂桥。

  • 對不同大小的box預測中,相比于大box預測偏一點属提,小box預測偏一點肯定更不能被忍受的权逗。而sum-square error loss中對同樣的偏移loss是一樣美尸。
    為了緩和這個問題,作者用了一個比較取巧的辦法斟薇,就是將box的width和height取平方根代替原本的height和width师坎。這個參考下面的圖很容易理解,小box的橫軸值較小堪滨,發(fā)生偏移時胯陋,反應到y(tǒng)軸上相比大box要大。

  • 一個網(wǎng)格預測多個box袱箱,希望的是每個box predictor專門負責預測某個object遏乔。具體做法就是看當前預測的box與ground truth box中哪個IoU大,就負責哪個发笔。這種做法稱作box predictor的specialization盟萨。

  • 最后整個的損失函數(shù)如下所示:


    這里寫圖片描述

    這個損失函數(shù)中:

    • 只有當某個網(wǎng)格中有object的時候才對classification error進行懲罰。
    • 只有當某個box predictor對某個ground truth box負責的時候了讨,才會對box的coordinate error進行懲罰捻激,而對哪個ground truth box負責就看其預測值和ground truth box的IoU是不是在那個cell的所有box中最大。
  • 其他細節(jié)前计,例如使用激活函數(shù)使用leak RELU胞谭,模型用ImageNet預訓練等等。

大致流程

image
  1. Resize成448448男杈,圖片分割得到77網(wǎng)格(cell)

  2. CNN提取特征和預測:卷積不忿負責提特征丈屹。全鏈接部分負責預測:a) 772=98個bounding box(bbox) 的坐標[圖片上傳失敗...(image-92357f-1561365029580)]

    和是否有物體的con?dence 。 b) 7*7=49個cell所屬20個物體的概率势就。

  3. 過濾bbox(通過nms)

訓練:

預訓練分類網(wǎng)絡: 在 ImageNet 1000-class competition dataset上預訓練一個分類網(wǎng)絡泉瞻,這個網(wǎng)絡是Figure3中的前20個卷機網(wǎng)絡+average-pooling layer+ fully connected layer (此時網(wǎng)絡輸入是224*224)。

訓練檢測網(wǎng)絡:轉換模型去執(zhí)行檢測任務苞冯,《Object detection networks on convolutional feature maps》提到說在預訓練網(wǎng)絡中增加卷積和全鏈接層可以改善性能袖牙。在他們例子基礎上添加4個卷積層和2個全鏈接層,隨機初始化權重舅锄。檢測要求細粒度的視覺信息鞭达,所以把網(wǎng)絡輸入也又224224變成448448。見Figure3皇忿。

  • 一幅圖片分成7x7個網(wǎng)格(grid cell)畴蹭,某個物體的中心落在這個網(wǎng)格中此網(wǎng)格就負責預測這個物體。
    image
  • 最后一層輸出為 (7x7)x30的維度鳍烁。每個 1x1x30的維度對應原圖7x7個cell中的一個叨襟,1x1x30中含有類別預測和bbox坐標預測♂;模總得來講就是讓網(wǎng)格負責類別信息糊闽,bounding box主要負責坐標信息(部分負責類別信息:confidence也算類別信息)梳玫。具體如下:

    • 每個網(wǎng)格(1x1x30維度對應原圖中的cell)要預測2個bounding box (圖中黃色實線框)的坐標(x_{center},y_{center},w,h),其中:中心坐標的 x_{center},y_{center}相對于對應的網(wǎng)格歸一化到0-1之間右犹,w,h用圖像的width和height歸一化到0-1之間提澎。 每個bounding box除了要回歸自身的位置之外,還要附帶預測一個confidence值念链。 這個confidence代表了所預測的box中含有object的置信度和這個box預測的有多準兩重信息:confidence = \operatorname{Pr}(\text { Object }) * I O U_{\text { pred }}^{\text { truth }}盼忌。其中如果有ground true box(人工標記的物體)落在一個grid cell里,第一項取1掂墓,否則取0谦纱。 第二項是預測的bounding box和實際的ground truth box之間的IOU值。即:每個bounding box要預測 x_{\text {center}}, y_{\text {center}}, w, h, confidence
      ,共5個值 君编,2個bounding box共10個值服协,對應 1x1x30維度特征中的前10個。
image
image
  • 每個網(wǎng)格還要預測類別信息啦粹,論文中有20類。7x7的網(wǎng)格窘游,每個網(wǎng)格要預測2個 bounding box 和 20個類別概率唠椭,輸出就是 7x7x(5x2 + 20) 。 (通用公式: SxS個網(wǎng)格忍饰,每個網(wǎng)格要預測B個bounding box還要預測C個categories贪嫂,輸出就是S x S x (5*B+C)的一個tensor。 注意:class信息是針對每個網(wǎng)格的艾蓝,confidence信息是針對每個bounding box的)
image

測試:

Test的時候力崇,每個網(wǎng)格預測的class信息 \operatorname{Pr}\left(\text { Classi }_{i} | \text { Object }\right)和bounding box預測的confidence信息( \operatorname{Pr}(\text {Object}) * I O U_{\text {pred}}^{\text {truth}} ) 相乘,就得到每個bounding box的class-specific confidence score赢织。

image

    • 等式左邊第一項就是每個網(wǎng)格預測的類別信息亮靴,第二三項就是每個bounding box預測的confidence。這個乘積即encode了預測的box屬于某一類的概率于置,也有該box準確度的信息茧吊。
      image
      image
    • 對每一個網(wǎng)格的每一個bbox執(zhí)行同樣操作: 7x7x2 = 98 bbox (每個bbox既有對應的class信息又有坐標信息)
      image
      image
      image
  • 得到每個bbox的class-specific confidence score以后,設置閾值八毯,濾掉得分低的boxes搓侄,對保留的boxes進行NMS處理,就得到最終的檢測結果话速。
    image

4.YOLO的缺點

  • YOLO對相互靠的很近的物體讶踪,還有很小的群體 檢測效果不好,這是因為一個網(wǎng)格中只預測了兩個框泊交,并且只屬于一類乳讥。

  • 測試圖像中柱查,同一類物體出現(xiàn)的新的不常見的長寬比和其他情況是。泛化能力偏弱雏婶。

  • 由于損失函數(shù)的問題物赶,定位誤差是影響檢測效果的主要原因。尤其是大小物體的處理上留晚,還有待加強酵紫。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市错维,隨后出現(xiàn)的幾起案子奖地,更是在濱河造成了極大的恐慌,老刑警劉巖赋焕,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件参歹,死亡現(xiàn)場離奇詭異,居然都是意外死亡隆判,警方通過查閱死者的電腦和手機犬庇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侨嘀,“玉大人臭挽,你說我怎么就攤上這事∫螅” “怎么了欢峰?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涨共。 經(jīng)常有香客問我纽帖,道長,這世上最難降的妖魔是什么举反? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任懊直,我火速辦了婚禮,結果婚禮上火鼻,老公的妹妹穿的比我還像新娘吹截。我一直安慰自己,他們只是感情好凝危,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布波俄。 她就那樣靜靜地躺著,像睡著了一般蛾默。 火紅的嫁衣襯著肌膚如雪懦铺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天支鸡,我揣著相機與錄音冬念,去河邊找鬼趁窃。 笑死,一個胖子當著我的面吹牛急前,可吹牛的內容都是我干的醒陆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼裆针,長吁一口氣:“原來是場噩夢啊……” “哼刨摩!你這毒婦竟也來了?” 一聲冷哼從身側響起世吨,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤澡刹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后耘婚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罢浇,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年沐祷,在試婚紗的時候發(fā)現(xiàn)自己被綠了嚷闭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赖临,死狀恐怖凌受,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情思杯,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布挠进,位于F島的核電站色乾,受9級特大地震影響,放射性物質發(fā)生泄漏领突。R本人自食惡果不足惜暖璧,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望君旦。 院中可真熱鬧澎办,春花似錦、人聲如沸金砍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恕稠。三九已至琅绅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹅巍,已是汗流浹背千扶。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工料祠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澎羞。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓髓绽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妆绞。 傳聞我的和親對象是個殘疾皇子顺呕,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容