在ROIPooling层加入pad_ratio实现context
来源:互联网 发布:工商网络监管 编辑:程序博客网 时间:2024/06/16 15:50
在RFCN的ps-roipooling层,加入pad_ratio, 相当于起到增大了proposal对应原图的尺寸,比如pad_ratio为0.5,映射为原图相当于之前proposal对应原图尺寸的2倍,这样的好处使感知野区域变大,学到的信息更多。在FasterRCNN roi pooling上加入pad提升2个点。
加了pad的featuremap与不加pad的featuremap如何结合?
方法一:
【在FRCN中加入pad_ratio失败】使用的是concat连接,然后加了一个1*1的卷积层降维,然后传入cls和bbox的loss层。这种方式训完之后,比不加pad_ratio的方式要低好多点。解释是pad_ratio和no_pad 共同学习会影响rfcn_cls和rfcn_bbox。为了不让他们互相影响,复制了一个rfcn_cls和rfcn_bbox, 两个并行的分支,然后得到pooling之后的featuremap 再concat一起,再使用1*1的卷积层降维,接入loss层,然而训完之后测试,这种方式也比baseline低许多点。
【为什么使用fasterrcnn 加这种方式可以提升,mscnn加这种方式也能提升,但是rfcn加这种方式不升反降呢,而且降了不是一两个点,是20多个点?】
因为fasterrcnn 和mscnn这两个网络,在proposal加入pad并concat之后会继续经过卷积层训练,mscnn后面还加了两个fc层,但是rfcn后面什么就没有。也就是说rfcn是在前面把该学的东西学好了,经过pooling之后直接可以预测接loss不用再学习了。所以,这时候,你给它加了一个pad_ratio,不要紧,但是concat之后再降维,就有问题了,之前对应的关系,一通过卷积层降维就乱了,就没有之前代表的意义了,所以不应该concat之后接1*1 卷积降维。
应该使用ele_sum,对应通道的对应像素值相加,这样是具有意义的。果然,这种方式训练,比之前的baseline就差了一个点左右,如果再增加训练次数,理论上是能够超过baseline的。
【proposal做数据增强】
在rpn层得到的proposal之后,对proposal随机扩大或者缩小0.1倍,这样之后,和baseline差不多,如果好好训练,增加训练轮数,降低loss_weight,是能够提升的,毕竟proposal的多
- 在ROIPooling层加入pad_ratio实现context
- 针对Faster RCNN具体细节以及源码的解读之RoIPooling层
- 如何在Android源码中加入Java层系统服务。
- Android listview 加入context menu
- 在adapter中实现点击图片,显示dialog public HomeMsgAdapter(Context context,List<HomeMsgBean> list){
- Windows Phone 7:在Bing Map控件中加入简单的形状和层
- 在js中向场景中加入层并开启触摸
- TCP中已有SO_KEEPALIVE选项,为什么还要在应用层加入心跳包机制??
- Cognos中加入ServletFilter层
- 加入房间的输入层
- 在c#中实现3层架构
- 在c#中实现3层架构
- 在c#中实现3层架构
- 在c#中实现3层架构
- 在c#中实现3层架构
- 在c#中实现3层架构
- 在数据层实现分页技术
- 在Android层实现触摸屏校验
- 推荐系统
- 关于win7永久禁用驱动签名问题的总结
- 功能测试要点(一)
- SpringBoot之连接MySQL,JPA操作
- k近邻学习
- 在ROIPooling层加入pad_ratio实现context
- 机器学习基础
- Python基础篇之if-elif-else
- BinaryWriter和BinaryReader(二进制文件的读写)
- 相似性研究
- Java进阶之JDBC知识点总结
- 线程实例
- Spring中报"Could not resolve placeholder"的解决方案
- 文章标题