faster rcnn end2end 训练与测试
来源:互联网 发布:mysql中的sno是啥意思 编辑:程序博客网 时间:2024/06/07 14:21
除了前面讲过的rpn与fast rcnn交替训练外,faster rcnn还提供了一种近乎联合的训练,姑且称为end2end训练。
根据论文所讲,end2end的训练一气呵成,对于前向传播,rpn可以作为预设的网络提供proposal.而在后向传播中,rpn,与fast rcnn分别传导,而汇聚到shared layer.,但是没有考虑掉roi pooling层对于predicted bounding box的导数。如下图:
我们这里截取Ross'Girshick 在ICCV15上的ppt<Training'R-CNNs' of 'various 'velocities Slow, fast, and faster>
对于roi pooling层,显然依赖于图像本身,和roi区域。对于fast rcnn来讲,roi是固定的,而对于faster rcnn来说,roi是通过rpn产生的,rpn不定,所以roi的生成依赖于
图像。
但是由于最大池化的作用,所以没有办法对roi的四个位置求导。
所以忽略掉对于roi的导数,当然了如果改变max pooling的方式,比如如下所说采取双线性插值,这样输出既有roi的坐标也有图像像素值,则可以关于roi求导。
根据github上py-faster-rcnn描述
- For training smaller networks (ZF, VGG_CNN_M_1024) a good GPU (e.g., Titan, K20, K40, ...) with at least 3G of memory suffices
- For training Fast R-CNN with VGG16, you'll need a K40 (~11G of memory)
- For training the end-to-end version of Faster R-CNN with VGG16, 3G of GPU memory is sufficient (using CUDNN)
使用end2end的训练方式,显存也减少了,从原先的11g减少到3g.我觉得主要的原因是在原先的交替训练中,rpn训练结束后,会有一个rpn生成的过程,这时会生成所有训练图片的proposals,而这是个巨大的负担。而使用end2end的方式训练,一次训练一张图片,rpn阶段产生一张图片的proposal,然后送入fast rcnn训练。显然这种方法很省时也很省内存。
对于end2end的测试,从网络配置上基本与交替训练的相同。在一些小的细节,比如end2end测试时仍然保留了drop层,而对于交替训练的方式,在训练阶段有,测试时去掉了。
下面给出了个人画的end2end的训练网络图。
请访问:链接
- faster rcnn end2end 训练与测试
- py-faster-rcnn end2end训练记录
- faster rcnn 训练与测试
- py-faster-rcnn在Windows下的end2end训练
- py-faster-rcnn在Windows下的end2end训练
- matlab faster-rcnn 测试与训练
- Faster rcnn 安装、训练、测试、调试
- faster rcnn训练
- faster-rcnn训练成功
- 训练FASTER-RCNN趣谈
- faster rcnn 训练
- faster rcnn训练
- 训练py-faster-rcnn
- Faster-RCNN训练问题解决
- Faster-RCNN训练修改
- Faster-RCNN训练问题解决
- Faster-RCNN训练结果
- Faster-RCNN训练问题解决
- Spring整合JSP,Freemarker(ftl)基本使用
- C语言程序-将参数字符串中的字符反向排列
- 轮播图--原生js实现
- 接口-多态-动态绑定-权限修饰符-内部类
- Spring整合web项目的原理
- faster rcnn end2end 训练与测试
- 深度学习之基础模型-PolyNet
- word2vec理解
- java流程控制语句
- Math对象
- ElasticSearch多shard场景相关度打分不准确问题
- Ubuntu16.06安装opencv
- 线性代数学习1 标量、向量、矩阵和张量
- Qt 之 样式表的使用——设置样式的方法