技术标签: 论文算法
Cascade R-CNN的本质是 “ Cascade roi-wise subnet ” 。
传统的Faster R-CNN结构如下:
在train阶段,其最终的输出结果是通过如下一个简单的IoU阈值判断来决定哪些proposal作为output:
由于早前VOC只以 mAP50 m A P 50 作为唯一的性能衡量标准,为了overfit该数据集,算法的IoU阈值在train阶段和inference阶段常被简单地设定为 0.5,而这会导致train阶段对bbox的质量要求过低。
inference阶段,如果IoU阈值设为0.5,最终输出可能如下的左图所示,带有不少错分为object的bbox;如果我们把IoU阈值调高到0.7,如下右图所示,就可以把一堆IoU介于0.5~0.7之间的bbox给过滤掉:
那我们直接在train阶段就把IoU阈值改为0.7,test阶段依然为0.5,不就好了吗?
不行。
原因:
如下图,IoU=0.7训练出来的detector[红线]
,在IoU=0.5的输入上定位效果甚至不如IoU=0.5训练出来的detector[蓝线]
:
其原因有二:
那我们train阶段为0.5,只在test阶段把IoU阈值改为0.7呢?
不行。
原因:
那就同时把train阶段和test阶段都改为0.7呢?
还是不行。
原因:
作者发现,假设待输入regressor的bbox为Input,回归后的输出bbox为Output,则Output的IoU质量普遍优于Input:
等于证明了:
经过location regression的bbox明显更high-quality。
故而,多次叠加roi-wise subnet,就等于多regress几次bbox,自然可以获得更high-quality的output bbox,从而刷高COCO测评性能。
那么直接简单地在roi-wise subnet后面再叠加roi-wise subnet可以么?
不行。
原因:
因为如果这么做的话,对bbox的回归公式就变成了如下所示:
此时对应的网络结构就会不能很好地挖掘多级roi-wise subnet的作用:
作者的Idea,是设计cascade的bbox cls/reg机制:
总共有三个roi-wise subnet相cascade (级联) ,每个roi-wise subnet采用不同的IoU阈值。依次为0.5、0.6、0.7。
对应的网络结构如下:
该设计有如下四大优势:
经过试验,发现cascade roi-wise subnet可以逐步过滤非object的bbox,并提升object的bbox质量:
经过三个级联的roi-wise subnet,可以明显看出最后一个roi-wise subnet输入的待处理bbox(如下最右边的子图)质量明显高了很多:
经过实验,发现取三个roi-wise subnet级联的效果最好:
如文中引用文献的情况所示,Cascade R-CNN的灵感很大程度上来自作者的细心观察和face-detection惯用的cascade boostrapping (级联引导) 做法的启发。
Faster R-CNN将Detection从4-stage简化到了2-stage,而Cascade R-CNN又将2– stage发展回了4-stage。其实这是一种“螺旋式地上升”吧。
Cascade R-CNN的根本动机就是:
通过在每个stage调整bbox来获得越来越high-quality的bbox,从而将COCO的一系列metric一锅端。
Note:
如果第一个RoI-wise subnet的输入是300个bbox(有positive也有negative),那么第三个RoI-wise subnet输入的是依然是这300个bbox;
所有proposal(除了那些完全不cover ground truth的)在每一轮regression中都可以提升location质量,更加逼近ground truth。所以最后这些proposal的质量明显越来越高了:
[1] Cascade R-CNN: Delving into High Quality Object Detection
文章浏览阅读884次。1、首先是调用viewdidload方法视图加载完成里面的的方法2、先刷新然后从数据库里面获取所有的聊天记录(initBubbleDatas),这个方法写在刷新的方法里面,3、通过上面的方法将消息结构转换成聊天结构(structureBubbleDatasWithMessages),这个方法处理的对象是一个XML流,就是通过这个方法将里面的元素分类整理出来,比如消息类型(MJLMessag_xmpproommessagecoredatastorageobject
文章浏览阅读606次。Description以下为魔改版题面n, m ≥ 1, n ≤ 6, n+m ≤ 10, |ai| ≤ 120保证|bi| < 10^12Solution首先,此题的关键是一个叫牛顿恒等式的东西。考虑多项式F(x)=anxn+an−1xn−1+⋯+a1x+a0F(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0F(x)=anxn+an−1x..._甜甜的花环胖头鱼c++
文章浏览阅读7k次,点赞4次,收藏13次。软件导航电脑办公机械设计地理信息编程类数据统计室内/外设计影视动画网页设计电子绘图理科工具 平面设计建筑设计屏幕录像数据库虚拟机软件目录【电脑办公】电脑系统(U盘安装)PE系统WIN7..._软件安装管家 博客
文章浏览阅读1.4w次,点赞12次,收藏75次。 深度学习主要强调的是特征,强化学习主要强调的是反馈,而迁移学习主要强调的是适应。之前介绍过人工智能之机器学习算法有前5大类内容,具体请参见相关文章。今天我们重点探讨一下第6类--迁移学习(Transfer Learning)。^_^传统的机器学习是种瓜得瓜,种豆得豆,而迁移学习可以举一反三,投桃报李。人工智能竞争,从算法模型的研发竞争,转向数据和数据质量的竞争,这些成功的模型和算法主..._模型迁移和样本迁移区别
文章浏览阅读8.7k次。public class Test { public static void main(String[] args) { //str为参与校验的字符串 //检验和的概念一般体现在8bit长度的字符数组 //下面使用的字符串全为ASCII码 Stri_和校验
文章浏览阅读762次。上一篇,已经讲解了如何给harbor镜像仓库推送镜像。这一篇分享下,在k8s里头_安装kubsphere用什么镜像源
文章浏览阅读2.6w次,点赞7次,收藏111次。华为网络设备缺省用户名为admin,密码为[email protected]或者Huawei@123bootrom默认密码一般是[email protected]或者是[email protected]测试环境:Huawei S53201.重启交换机,出现了ctrl+B后,进入启动模式。2.选择7,进入清除console密码3.选择“1.Boot with default m..._华为交换机默认密码 console密码
文章浏览阅读400次。for-Each循环: 增强的for循环,写起来比较简洁,其实跟普通的for循环性能上没啥区别所以到现在遍历的方式有三种: for :当需要数组的下标信息时用它 for-Each : Iterator // 对于一位数组的遍历 int[] array={1,2,3,4,5}; // for(对象的类型type element :array)_for 循环高斯遍历
文章浏览阅读601次,点赞11次,收藏8次。替换成如下,并且把相应位置的scale_coords换成scale_boxes。由于V5的版本问题会出现以上错误,解决办法如下。或者你可以重新写一个scale_coords。同样由于版本问题,出错。_cannot import name 'scale_coords' from 'yolov5.utils.general
文章浏览阅读2.3k次。CEdit类提供了Windows 编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit构造程序构造CEdit对象,再调用Create成员函数创建Windows 编辑控件并将其与CEdit对象连接。构造在CEdit的派生类中可以单步实现。为派生类编写构造程序并从构造程序中调用Create。CEdit从CW_em_limittext
文章浏览阅读1.1k次。选择File->Settings->Editor->Inspections--thymeleaf将Expression variables validation改为warning_idea thymeleaf th:poster标签报错
文章浏览阅读5.4k次,点赞5次,收藏45次。目的制作一个可以在Linux环境下运行的MP3播放器。要求实现的MP3主要功能包括:播放、暂停、继续、停止、循环播放、上一曲、下一曲、退出、歌曲显示等功能。本设计是基于madplay库实现的,程序运行时会显示一个字符界面,在该字符界面下输入相应的提示字符即可实现音乐的播放、暂停、继续、停止、上一曲、下一曲、歌词的显示等功能,也可以加入额外的一些功能。编写一个MakeFile文件,make命令来..._apt-get install amediaplay