作者NMOSFET (NMOSFET)
看板DataScience
标题[问题] 全卷积网路(FCN) 在YOLOV2上训练的问题
时间Mon Apr 16 14:18:42 2018
问题类别: 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://webptt.com/cn.aspx?n=bbs/DataScience/M.1523859524.A.530.html
1F:→ jackwang01: 记得没错的话他有做resize的动作04/16 14:26
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
2F:推 hl4: 进到model之前可能先resize过了04/16 17:07
3F:推 OnePiecePR: 应该就是ㄧ二楼的讲法。前端进入麻豆前 resize, 作出104/16 18:14
4F:→ OnePiecePR: 3*13的 grids 才能 meet model 的处理。04/16 18:14
5F:推 f496328mm: resize 是指缩放图片的大小 例如 640*320 - > 13*1304/16 22:10
那请问一下,同样的图片,不同解析度,一张是1600*1600,另一张800*800,两张图片同
样resize变成416*416,解析度的品质 一样吗
※ 编辑: NMOSFET (1.175.73.141), 04/16/2018 23:51:42
6F:推 KyotoAnime: 呃 前者也许比较好一点点吧 但这几乎不会是个issue04/17 00:34
7F:推 jameszhan: 解析度变怎样没有考虑的必要 因为不resize连喂都不能04/17 01:25
8F:→ jameszhan: 喂04/17 01:25
9F:推 jameszhan: 另外能输入任意大小是因为有resize 跟有没有全连接层无04/17 01:27
10F:→ jameszhan: 关吧04/17 01:27
11F:推 jameszhan: 建议再看一下神经网路里矩阵运算的方式04/17 01:29
Yolov2是每10个epoch更改(resize)输入图片的维度,但CNN detection 架构是不变的,
我想问的是,最後一个feature map 大小不一样,是怎麽算LOSS
12F:推 KyotoAnime: 上面几楼好像怪怪的 yolo确实有resize 但yolov2 可没04/17 02:07
13F:→ KyotoAnime: 有04/17 02:07
14F:→ KyotoAnime: 不 应该说yolov2的resize是故意让他变得不一样大小04/17 02:08
15F:→ KyotoAnime: Fc layer本来就会限制input dimension conv layer就04/17 02:09
16F:→ KyotoAnime: 不受限04/17 02:09
17F:→ KyotoAnime: 至於原po说的loss function需要调整这件事04/17 02:09
18F:推 KyotoAnime: 我是没仔细看啦 不过loss function通常是sigma 你的04/17 02:12
19F:→ KyotoAnime: 图像变了 sigma项数就改变了而已 在实作上甚至不用改c04/17 02:12
20F:→ KyotoAnime: ode 想想numpy.sum()不管有几个element写法也都是一04/17 02:12
21F:→ KyotoAnime: 样 04/17 02:12
谢谢k大,我在想说最後一个feature map 会不会 reshape成13*13 *125 还是 不 reshap
e 直接 ?*?*125 丢进loss 去算
22F:推 EGsux: 如果800*800会变成416*416 那1600*800 会变成832*416 13*1304/17 07:03
23F:→ EGsux: 变26*13 这样会不会比较好懂04/17 07:03
所以意思是说 一张图片分成26*13 grid 还是 两组13*13 grid 去算Loss
24F:推 leoloveivy: 原po是说multiscale trainging 吗04/17 10:48
25F:→ leoloveivy: 反正label都是0-1之间04/17 10:48
26F:→ leoloveivy: 所以其实还会有一个label 转换04/17 10:48
27F:→ leoloveivy: 看你feature map w h多少做转换04/17 10:48
28F:→ leoloveivy: 那这样就可以算loss04/17 10:48
29F:推 leoloveivy: detection 跟classfication不太一样04/17 10:52
30F:→ leoloveivy: resize再进去一定有差04/17 10:52
没错就是 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
31F:推 leoloveivy: 应该是转换你feature map的大小吧 04/17 13:18
32F:推 KyotoAnime: 第一改变大小不叫reshape 是resize reshape是面积不 04/17 16:56
33F:→ KyotoAnime: 变 形状改变 04/17 16:56
34F:推 KyotoAnime: 第二 他回归出的东西就是bb 应该不需要resize 如果res 04/17 16:59
35F:→ KyotoAnime: ize要怎摸做 bilinear? 但里面除了bb的座标 还有信心 04/17 16:59
36F:→ KyotoAnime: 机率 bilinear会很怪 没有resize的意义 04/17 16:59
37F:→ leoloveivy: 还是我打成这样会造成误会 04/17 17:43
38F:→ leoloveivy: 应该说你predict出来的都不要动 04/17 17:43
39F:→ leoloveivy: 然後label因为已经normalize 04/17 17:43
40F:→ leoloveivy: 所以乘上你predict W H之後 04/17 17:43
41F:→ leoloveivy: 就算BEST OVERLAPPING在哪个ANCHOR BOX之後在做成GT 04/17 17:43
42F:→ leoloveivy: 会像这样 predict =p 04/17 17:43
43F:→ leoloveivy: gt=[batch,p_w ,p_h,bestanchor,:]=xywh 04/17 17:43
44F:→ leoloveivy: wh该取log就取 04/17 17:43
45F:→ leoloveivy: xy改以grid为中心就做 04/17 17:43
46F:→ leoloveivy: 我的理解是这样有错再指正感谢 04/17 17:44
47F:推 goldflower: multiscale training的部分出来的feature map就不是 04/17 18:57
48F:→ goldflower: 13x13罗 他每次采取不同scale时都会对应不同size 04/17 18:57
49F:→ goldflower: 从320 - 608分别对应10 - 19 在论文里有这块 04/17 18:58
50F:推 goldflower: 还是我搞错你要问的意思XD 04/17 19:01
51F:推 goldflower: 喔喔我看到你回文了 请忽略我上述 04/17 19:08
52F:推 goldflower: 他的loss的确是照grid size去调整的 04/17 19:31
53F:→ goldflower: 所以我是认为他前面的darknet19在multi-scale 04/17 19:32
54F:→ goldflower: training那边有点像multi-task learning中的shared 04/17 19:32
55F:→ goldflower: layer 但是後面分别对应不同的loss计算方式 04/17 19:32
谢谢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
56F:→ goldflower: 赞赞 想问你看哪个github有所有步骤都实作出来的啊XD 04/18 16:02
58F:→ NMOSFET: g大抱歉,现在才看到你的留言 04/23 20:07
59F:→ goldflower: 这好像蛮精美的XD 感谢分享 04/24 13:15