作者ching0629 (Syameroke)
看板DataScience
標題Re: [問題] 全捲積網路(FCN) 在YOLOV2上訓練的問題
時間Tue Apr 17 13:06:37 2018
我覺得可能很多人並不懂卷積網路的基本概念,舉例來說,原始yolo可以接受的input size應該是32的倍數,而不是13的倍數...
卷積網路在運算過程中經常會有pooling(或是現在比較喜歡用步輻為2的卷積器)做下採樣,原則上yolo所提出的概念是使用任意結構的網路皆可以進行目標檢測,而他厲害的地方是它訂出了一個output結構讓網路可以根據這個output來進行目標檢測
在講yolo2之前我們先講yolo,原始yolo版本的輸出是對最後一層的每個像素(也就是前面一直提到的13*13,但原始yolo的output是7*7)做一次預測,而預測內容包含:
1. 2個最有可能的物件框,參數包含
(1) 0~1的機率描述是否存在非背景物體
(2) 物件框的相對x座標(以該範圍的百分比定義)
(3) 物件框的相對y座標(以該範圍的百分比定義)
(4) 物件框的相對寬度 (以n倍的原始範圍定義,如一個最終終像素在yolo中對應的是32*32個原始像素,所以這個數字為2代表對應到原來64的範圍)
(5) 物件框的相對長度
以上共有10個output。
2. 可能的類別數,描述這個框所框到的東西是甚麼,一樣輸出0~1之間的機率(一般後面這些output會經過softmax)
有了這個概念後,假定有一個32*32的輸入圖像,這樣最終特徵圖就是1*1,那yolo就是輸出2個可能的方框供人參考,而假設原始輸入圖像是320*320,那就會輸出200個可能的方框
而yolo2和yolo的差別在,yolo是使用像素作為預測,如果有一個物件他大小接近整張圖,這樣一個32*32的範圍會預測的好也是滿奇怪的,所以精準度不夠,因此yolo2先使用一些clustering的方式先找出訓練集的方框大概都在哪,然後制定出ROI,並進行ROI pooling再做預測。除此之外,作者在訓練yolo2時,為了讓他能適應各種大小的物件,因此每10代會將所有圖片及相對應的label調整為一個任意32的倍數,用這種類似data augmentation訓練網路。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.60.122.10
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DataScience/M.1523941600.A.9DA.html
1F:→ ching0629: 再補充一個點好了,物件檢測的loss function是一個同 04/17 13:09
2F:→ ching0629: 時考慮原始方框與預測方框重疊面積,以及分類正確度的 04/17 13:09
3F:→ ching0629: 一個損失函數,詳細的自己去找paper看吧,式子有點長 04/17 13:10
4F:推 KyotoAnime: 推 想問 如一個最終終像素在yolo中對應的是32*32個原 04/17 16:41
5F:→ KyotoAnime: 始像素 這句 04/17 16:41
6F:推 KyotoAnime: 事實上他好像沒有真的去切grid? 最終的像素會對應到 04/17 16:43
7F:→ KyotoAnime: 原始的像素 但並不會剛好是paper畫的整齊的grid吧 也 04/17 16:43
8F:→ KyotoAnime: 就是對應回去可能會有重疊的部分? 04/17 16:43
9F:→ KyotoAnime: 還是他的stride 剛好會讓彼此完全不重疊 04/17 16:44
10F:推 OnePiecePR: 好像是 Anchor 會在原定的grid 裏頭,長出的bounding 04/17 20:02
11F:→ OnePiecePR: 就不確定了。 04/17 20:02
12F:推 NMOSFET: 謝謝c大的解說 04/17 22:16