[問題] 全捲積網路(FCN) 在YOLOV2上訓練的問題

看板DataScience作者 (NMOSFET)時間6年前 (2018/04/16 14:18), 6年前編輯推噓19(19040)
留言59則, 10人參與, 6年前最新討論串1/4 (看更多)
問題類別: CNN 問題內容: 請問各位大大 YOLOV2 的架構因為沒有全連接層(都用捲積層取代), 所以在訓練的時候,可以輸入任意大小的圖片做訓練 但輸入任意大小的圖片,經過整個模型, 算到最後的 feature map 大小不是會不一樣嗎? 而 YOLOV2 最後的feature map 大小是 13*13*125(125是5個bbox的資訊) 再拿13*13*125的 feature map 去算 detection 的 loss, 那這樣怎麼會對得起來? 還是說會根據最後一層的 feature map 大小去調整對應的 loss ? 小弟一直卡在這邊, 能否請各位大大幫忙解惑一下, 感恩! 論文名稱:YOLO9000: Better, Faster, Stronger -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.18.104.168 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1523859524.A.530.html

04/16 14:26, 6年前 , 1F
記得沒錯的話他有做resize的動作
04/16 14:26, 1F
resize 是指 loss 架構嗎? ※ 編輯: NMOSFET (163.18.104.168), 04/16/2018 15:05:41 ※ 編輯: NMOSFET (163.18.104.168), 04/16/2018 15:59:53 ※ 編輯: NMOSFET (163.18.104.168), 04/16/2018 16:05:15

04/16 17:07, 6年前 , 2F
進到model之前可能先resize過了
04/16 17:07, 2F

04/16 18:14, 6年前 , 3F
應該就是ㄧ二樓的講法。前端進入麻豆前 resize, 作出1
04/16 18:14, 3F

04/16 18:14, 6年前 , 4F
3*13的 grids 才能 meet model 的處理。
04/16 18:14, 4F

04/16 22:10, 6年前 , 5F
resize 是指縮放圖片的大小 例如 640*320 - > 13*13
04/16 22:10, 5F
那請問一下,同樣的圖片,不同解析度,一張是1600*1600,另一張800*800,兩張圖片同 樣resize變成416*416,解析度的品質 一樣嗎 ※ 編輯: NMOSFET (1.175.73.141), 04/16/2018 23:51:42

04/17 00:34, 6年前 , 6F
呃 前者也許比較好一點點吧 但這幾乎不會是個issue
04/17 00:34, 6F

04/17 01:25, 6年前 , 7F
解析度變怎樣沒有考慮的必要 因為不resize連餵都不能
04/17 01:25, 7F

04/17 01:25, 6年前 , 8F
04/17 01:25, 8F

04/17 01:27, 6年前 , 9F
另外能輸入任意大小是因為有resize 跟有沒有全連接層無
04/17 01:27, 9F

04/17 01:27, 6年前 , 10F
關吧
04/17 01:27, 10F

04/17 01:29, 6年前 , 11F
建議再看一下神經網路裡矩陣運算的方式
04/17 01:29, 11F
Yolov2是每10個epoch更改(resize)輸入圖片的維度,但CNN detection 架構是不變的, 我想問的是,最後一個feature map 大小不一樣,是怎麼算LOSS

04/17 02:07, 6年前 , 12F
上面幾樓好像怪怪的 yolo確實有resize 但yolov2 可沒
04/17 02:07, 12F

04/17 02:07, 6年前 , 13F
04/17 02:07, 13F

04/17 02:08, 6年前 , 14F
不 應該說yolov2的resize是故意讓他變得不一樣大小
04/17 02:08, 14F

04/17 02:09, 6年前 , 15F
Fc layer本來就會限制input dimension conv layer就
04/17 02:09, 15F

04/17 02:09, 6年前 , 16F
不受限
04/17 02:09, 16F

04/17 02:09, 6年前 , 17F
至於原po說的loss function需要調整這件事
04/17 02:09, 17F

04/17 02:12, 6年前 , 18F
我是沒仔細看啦 不過loss function通常是sigma 你的
04/17 02:12, 18F

04/17 02:12, 6年前 , 19F
圖像變了 sigma項數就改變了而已 在實作上甚至不用改c
04/17 02:12, 19F

04/17 02:12, 6年前 , 20F
ode 想想numpy.sum()不管有幾個element寫法也都是一
04/17 02:12, 20F

04/17 02:12, 6年前 , 21F
04/17 02:12, 21F
謝謝k大,我在想說最後一個feature map 會不會 reshape成13*13 *125 還是 不 reshap e 直接 ?*?*125 丟進loss 去算

04/17 07:03, 6年前 , 22F
如果800*800會變成416*416 那1600*800 會變成832*416 13*13
04/17 07:03, 22F

04/17 07:03, 6年前 , 23F
變26*13 這樣會不會比較好懂
04/17 07:03, 23F
所以意思是說 一張圖片分成26*13 grid 還是 兩組13*13 grid 去算Loss

04/17 10:48, 6年前 , 24F
原po是說multiscale trainging 嗎
04/17 10:48, 24F

04/17 10:48, 6年前 , 25F
反正label都是0-1之間
04/17 10:48, 25F

04/17 10:48, 6年前 , 26F
所以其實還會有一個label 轉換
04/17 10:48, 26F

04/17 10:48, 6年前 , 27F
看你feature map w h多少做轉換
04/17 10:48, 27F

04/17 10:48, 6年前 , 28F
那這樣就可以算loss
04/17 10:48, 28F

04/17 10:52, 6年前 , 29F
detection 跟classfication不太一樣
04/17 10:52, 29F

04/17 10:52, 6年前 , 30F
resize再進去一定有差
04/17 10:52, 30F
沒錯就是 multiscale trainging ,轉換的意思是轉成13*13嗎? ※ 編輯: NMOSFET (218.174.81.46), 04/17/2018 11:26:19 ※ 編輯: NMOSFET (218.174.81.46), 04/17/2018 12:41:20 ※ 編輯: NMOSFET (218.174.81.46), 04/17/2018 12:52:40

04/17 13:18, 6年前 , 31F
應該是轉換你feature map的大小吧
04/17 13:18, 31F

04/17 16:56, 6年前 , 32F
第一改變大小不叫reshape 是resize reshape是面積不
04/17 16:56, 32F

04/17 16:56, 6年前 , 33F
變 形狀改變
04/17 16:56, 33F

04/17 16:59, 6年前 , 34F
第二 他回歸出的東西就是bb 應該不需要resize 如果res
04/17 16:59, 34F

04/17 16:59, 6年前 , 35F
ize要怎摸做 bilinear? 但裡面除了bb的座標 還有信心
04/17 16:59, 35F

04/17 16:59, 6年前 , 36F
機率 bilinear會很怪 沒有resize的意義
04/17 16:59, 36F

04/17 17:43, 6年前 , 37F
還是我打成這樣會造成誤會
04/17 17:43, 37F

04/17 17:43, 6年前 , 38F
應該說你predict出來的都不要動
04/17 17:43, 38F

04/17 17:43, 6年前 , 39F
然後label因為已經normalize
04/17 17:43, 39F

04/17 17:43, 6年前 , 40F
所以乘上你predict W H之後
04/17 17:43, 40F

04/17 17:43, 6年前 , 41F
就算BEST OVERLAPPING在哪個ANCHOR BOX之後在做成GT
04/17 17:43, 41F

04/17 17:43, 6年前 , 42F
會像這樣 predict =p
04/17 17:43, 42F

04/17 17:43, 6年前 , 43F
gt=[batch,p_w ,p_h,bestanchor,:]=xywh
04/17 17:43, 43F

04/17 17:43, 6年前 , 44F
wh該取log就取
04/17 17:43, 44F

04/17 17:43, 6年前 , 45F
xy改以grid為中心就做
04/17 17:43, 45F

04/17 17:44, 6年前 , 46F
我的理解是這樣有錯再指正感謝
04/17 17:44, 46F

04/17 18:57, 6年前 , 47F
multiscale training的部分出來的feature map就不是
04/17 18:57, 47F

04/17 18:57, 6年前 , 48F
13x13囉 他每次採取不同scale時都會對應不同size
04/17 18:57, 48F

04/17 18:58, 6年前 , 49F
從320 - 608分別對應10 - 19 在論文裡有這塊
04/17 18:58, 49F

04/17 19:01, 6年前 , 50F
還是我搞錯你要問的意思XD
04/17 19:01, 50F

04/17 19:08, 6年前 , 51F
喔喔我看到你回文了 請忽略我上述
04/17 19:08, 51F

04/17 19:31, 6年前 , 52F
他的loss的確是照grid size去調整的
04/17 19:31, 52F

04/17 19:32, 6年前 , 53F
所以我是認為他前面的darknet19在multi-scale
04/17 19:32, 53F

04/17 19:32, 6年前 , 54F
training那邊有點像multi-task learning中的shared
04/17 19:32, 54F

04/17 19:32, 6年前 , 55F
layer 但是後面分別對應不同的loss計算方式
04/17 19:32, 55F
謝謝g大,我想知道的就是這個,我直接去github看別人的程式碼,input size 320 ~ 608(32的倍數) 對應到算loss 的 grid size 也會跟著改變 10 ~ 19 這樣 真的很感謝上面各位大大為小弟解惑,感謝你們! ※ 編輯: NMOSFET (1.173.30.241), 04/17/2018 22:11:17 ※ 編輯: NMOSFET (1.173.30.241), 04/17/2018 22:15:17

04/18 16:02, 6年前 , 56F
讚讚 想問你看哪個github有所有步驟都實作出來的啊XD
04/18 16:02, 56F

04/23 20:07, 6年前 , 57F

04/23 20:07, 6年前 , 58F
g大抱歉,現在才看到妳的留言
04/23 20:07, 58F

04/24 13:15, 6年前 , 59F
這好像蠻精美的XD 感謝分享
04/24 13:15, 59F
文章代碼(AID): #1Qr414Km (DataScience)
文章代碼(AID): #1Qr414Km (DataScience)