cascade rcnn论文总结

1.bouding box regression总结:

  rcnn使用l2-loss

  首先明确l2-loss的计算规则:

               L=(f(P)G)2,∗代表x,y,w,h

                 整个loss : L=Lx+Ly+Lw+Lh

               也就是说,按照l2-loss的公式分别计算x,y,w,h的loss,然后把4个loss相加就得到总的bouding box regression的loss。这样的loss是直接预测bbox的

               绝对坐标与绝对长宽。

  改进1:

      问题:如果直接使用上面的l2-loss,loss的大小会收到图片的大小影响。

      解决方案:loss上进行规范化(normalization)处理。

           Lx=(fx(P)Gx)W)2,Ly=(fy(P)Gy)H)2Lw=(fw(P)Gw)W)2,Lh=(fh(P)Gh)H)2,其中, W,H分别为输入图片的宽与高

      这种改进没有被采纳

  改进2:

      rcnn直接使用的是下面这个公式,也使用了规范化,但除以的是proposal的wh,并且wh的loss用的log函数

     

      cascade论文说这个改进的目的是:“To encourage a regression invariant to scale and location”,也就是增加scale和location的不变性   

      位置不变性:delta_x = [(g_x + a) - (b_x + a)] / b_w。不管平移量a是多少,delta_x都是一样的

      尺寸不变性:delta_w = log((g_w * b) / (b_w * b))。不管图片缩放b是多少,delta_w都是一样的

      至于为什么用log,有个博客说是:是为了降低w,hw,h产生的loss的数量级, 让它在loss里占的比重小些。  这个解释还有待观察

  改进3:

      问题:当预测值与目标值相差很大时, 梯度容易爆炸, 因为梯度里包含了xt

      解决方案:smoothl1代替l2-loss,当差值太大时, 原先L2梯度里的x−t被替换成了±1, 这样就避免了梯度爆炸

  改进4:

      问题:由于bouding box regression经常只在proposal上做微小的改变,导致bouding box regression的loss比较小,所以bouding box regression的loss一般比classification

         的loss小很多。(整个loss是一个multi-task learning,也就是分类和回归)

      解决方案:标准化

           

 

延伸问题:iou-loss与l2-loss,smoothl1的优缺点

https://blog.csdn.net/weixin_35653315/article/details/54571681

 

2.性能上iou0.6大于iou0.5,但iou0.7却小于0.5,为什么?

0.7的iou生成的正样本的框的质量更高,应该性能更好,但ap值却在下降。原因在于,iou在0.5时,正样本大多集中在0.5到0.6之间,如果你阈值选在0.7,正样本数量大大减少,造成了过拟合。

3.iterative bbox多次做bouding box的回归,但每次回归都使用的iou0.5,没有考虑样本分布改变;integral loss是根据不同iou分别算loss,没有解决不同iou 正样本的数量不一样。cascade-rcnn与iterative bbox区别:1.每个stage进行了重采样   2.训练和测试的分布是一样的

因此cascade的好处是:1.不会出现过拟合。每一个stage都有足够的正样本

            2.每个stage用了更高的iou进行优化,proposal质量更高了

            3.高iou过滤了一些outliers

4.对比实验中的stat:就是为了解决分类loss大,bouding box regression loss小,将delta标准化的操作。

           cascade rcnn中的stat是每一次回归都要做一次标准化,应该是因为每一次回归生成的新分布的均值和方差发生变化

5.对比实验1:

     

  越高iou,cascade-rcnn提升越明显,最常用的ap50的提升最小且提升性能有限

  延伸问题1: 为什么iou越低的检测性能会越低?

  延伸问题2:   怎么去解决?

      

  对比实验2:

      

    前提:这个实验是都用训练的时候用cascade rcnn,测试的时候在不同层测试和联合测试做对比。

    a.单独在stage1上测试,性能比baseline要好,这是cascade的方式带来的提升;单独在stage2上测试性能提升最大,单独stage3在ap70以下有略微下降,以上有略微上升

    b.在stage1、stage2上联合测试,ap70以下都获得了最好的结果,ap70以上会比stage3低一点;在stage1、stage2、stage3上联合测试,整体ap更高,ap70以上都有很大提升

    

    延伸问题1: 为什么出现这样的现象?

    延伸问题2: cascade-rcnn如何做联合测试的?      

 

对比实验3:

     

      使用了iou,性能在提升;使用了stat性能也提升。同时使用iou和stat,总ap在上升,但是ap70以下的略微下降,ap80以上的提升,特别是ap90提升明显

      延伸问题:为什么在用iou的基础上加stat,70以下反而下降?

对比实验4:

      

      联合预测的时候,1-2联合提升最明显;1-3比1-2也有提升,主要在高质量框上,整体ap提升了;但是再多回归一次,整体ap有略微下降,ap90以下的都下降了,

      但是ap90上升了

      延伸问题:为什么多一个stage,性能还下降了?

 

 cascade如何训练?

第一个stage选512个roi,训练之后把这些roi全给第二个stage的proposal_info_2nd(这个里面调用decodebbox层,也就是对当前的框进一步精修给下一个stage),proposal_info_2nd中batchsize为-1,proposaltarget源码增加了batchsize为-1的情况,就是把所有的正负样本都考虑进来(实际上数量应该是小于512的),而不是原来默认的128.这个时候再跟gt进行assign,重新分配roi和gt给下一个stage.

 

在decodebox层里面,还会把精修后错误的roi去掉,比如x1大于x2;同时,也会把和gt iou超过0.95的去掉,就是觉得这个已经够精确,不用再精修了

  // screen out mal-boxesif (this->phase_ == TRAIN) {for (int i = 0; i < num; i++) {const int base_index = i*bbox_dim+4;if (bbox_pred_data[base_index] > bbox_pred_data[base_index+2] || bbox_pred_data[base_index+1] > bbox_pred_data[base_index+3]) {valid_bbox_flags[i] = false;}}} // screen out high IoU boxes, to remove redundant gt boxesif (bottom.size()==3 && this->phase_ == TRAIN) {const Dtype* match_gt_boxes = bottom[2]->cpu_data();const int gt_dim = bottom[2]->channels();const float gt_iou_thr = this->layer_param_.decode_bbox_param().gt_iou_thr();for (int i = 0; i < num; i++) {const float overlap = match_gt_boxes[i*gt_dim+gt_dim-1];if (overlap >= gt_iou_thr) {valid_bbox_flags[i] = false;}}}

cascade如何测试 ?

bouding box regression是直接从最后一个stage得到的结果,即bbox_pre_3rd。

 

score的预测是把当前stage的score和之前层的score平均。stage2是把stage1的score*0.5 + stage2的score*0.5,stage3是把stage1的score*0.333 + stage2的score*0.333 + stage3的score*0.333。具体做法是:比如stage2的预测,roi-pooling出来的特征分别用两个分支得到两个score,这两个分支就是两层fc,一个用stage1的fc的参数,一个用stage2的fc的参数,这样就分别得到了两个stage的score再求平均。

注意:test.prototxt里面有cls_prob、cls_prob_2nd_avg、cls_prob_3rd_avg 3个输出,cls_prob是1的结果,cls_prob_2nd_avg是1+2的结果,cls_prob_3rd_avg是1+2+3的结果,他这3个输出应该是为了考虑最终的实验比较,最终的实际输出应该还是cls_prob_3rd_avg。

总的来说,cls是3个stage求平均,bouding box regression是直接从stage3获得

 

 为什么从3个stage到4个stage,性能还下降了?

可能是overfitting造成的:1.如果以faster来说的话,每个stage会增加两个大的fc和两个小的fc,这个参数量很大;  2.cascade代码中,每次回归之前,会把前一个stage的roi与gt的iou大于0.9的消除掉,stage越往高走,roi的个数是越会下降的。   3.并且也会把一些负样本去掉,因为cascade中每个stage会把roi不正常的框去掉,回归可能导致负样本这样

还有一点,就是可能模型本身做regression,多次regression后,好多框其实已经修正的比较好了,再去修正可能就是扰动,不能让性能很好提升,甚至有可能反而下降。

主要是往后特征没办法更好了吧,加更多也没有收益,只要Inference设计好,下降倒不太会

Cascade rcnn 3 4 也没下降,只是轻微影响一点,是饱和了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈优化SQLServer数据库服务器内存配置的策略

引文 http://demo.nbarticle.com/view/2004/8/9/view_1827.htm 农业银行总行1998年以来正式推广了新版网络版综合业务统计信息系统&#xff0c;该系统是基于WindowsNT4.0平台&#xff0c;采用客户&#xff0f;服务器模式&#xff0c;以Microsoft SQL Server为基础建立起来的大…

知道第一章计算机基础知识作业答案,大学计算机基础作业答案

大学计算机基础作业答案第一章 现代社会与计算机1. 什么事信息&#xff0c;其主要特征是什么&#xff1f;答&#xff1a;信息是可传递和共享的&#xff0c;可消除人们认知上的不确定因素&#xff0c;对人们的决策具有现实或潜在价值的知识。特征&#xff1a;普遍性、依附性、共…

Netflix推荐系统(Part two)-系统架构

Netflix在2013年公布了自己推荐系统的架构&#xff0c;本文主要总结和翻译自System Architectures for Personalization and Recommendation&#xff0c;但这并不是一篇完整的翻译文章。 Overview 首先&#xff0c;我们在下图中提供推荐系统的整体系统图。 该体系结构的主要组件…

母版页可以动态切换吗?

通过设置“MasterPageFile”属性可以做到&#xff0c;然而这个属性只能在“Page_PreInit”事件之中或之前设置。在Page_PreInit事件或之前&#xff0c;当前页面包含的对象还没有被生成&#xff0c;不能访问&#xff0c;所以&#xff0c;如果想根据当前页面上某个控件的值动态切…

httpclient 多附件上传

多附件上传实例&#xff1a; /*** 多附件上传* param host* param uri* param attachment 附件* param param body参数* return*/public String upload(String host, String uri, Map<String,String> attachment, Map<String, String> param) {logger.info("…

加拿大大学 计算机专业排名2015,加拿大大学计算机专业排名top15

加拿大大学计算机专业排名。加拿大开设计算机专业的很多高校还提供带薪实习机会&#xff0c;吸引了众多国际学子前往留学。在加拿大计算机专业优秀的大学很多。同时&#xff0c;加拿大计算机专业排名在世界上也非常的靠前&#xff0c;在加拿大有很多大学值得广大计算机热爱者选…

如何读懂并写出装逼的函数式代码

今天在微博上看到了 有人分享了下面的这段函数式代码&#xff0c;我把代码贴到下面&#xff0c;不过我对原来的代码略有改动&#xff0c;对于函数式的版本&#xff0c;咋一看&#xff0c;的确令人非常费解&#xff0c;仔细看一下&#xff0c;你可能就晕掉了&#xff0c;似乎完全…

如何打通高薪的黄金通道 成为职场金领

身在职场的你&#xff0c;是否想过有朝一日能获得百万年薪&#xff1f;最近&#xff0c;央视二套绝对挑战特别节目巅峰营销的热播&#xff0c;引发各方人士对东风日产百万年薪招兵营销总监的关注。身价百万的营销总监人人想当&#xff0c;如何才能成为这样的职场金领&#xff0…

iView 实战系列教程(21课时)_2.iView 实战教程之导航、路由、鉴权篇

在c盘创建一个iview-router的项目、然后使用默认的配置跳过添加vue-router的插件编译我们的文件。编译好之后&#xff0c;我们启动App默认的页面就打开了。默认两个路由一个是about界面一个是home我们使用编辑器打开代码&#xff0c;用我们的iview的menu组件替换掉这两个路由在…

计算机专业单元测试卷答案,银保监会考试题库:计算机类模拟试题练习(六)答案...

2020银保监会招聘考试即将开始。根据往年经验&#xff0c;银保监会招聘考试科目包括行测、申论和专业科目共三科&#xff0c;专业科目是考试提分的关键&#xff0c;那么如何才能提升专业科目的做题速度并快速提分呢&#xff1f;别担心&#xff0c;中公金融人小编根据历年的考试…

Ubuntu安装Nginx

在Ubuntu下安装Nginx有以下方法&#xff0c;但是如果想要安装最新版本的就必须下载源码包编译安装。 一、基于APT源安装 sudo apt-get install nginx 安装好的文件位置&#xff1a; /usr/sbin/nginx&#xff1a;主程序 /etc/nginx&#xff1a;存放配置文件 /usr/share/nginx&am…

9.28PMP每日一题

控制质量过程的输出是&#xff1a;A、变更请求B、批准的变更请求C、工作绩效数据D、事业环境因素 答案将于明天和新题一起发布&#xff01;9.27试题答案&#xff1a;C转载于:https://blog.51cto.com/13554215/2287292

将数组绑定到dropdownlist上

<% Page Language"C#" %><% Import Namespace"System.Data" %><Script Language"C#" Runat"Server">public void Page_Load(Object src,EventArgs e){ //首先建立一个数组 ArrayList arrnew ArrayList(); …

HTML标题h,HTML H标题标签

可以将HTML标题或HTML h标签定义为要在网页上显示的标题或副标题。当你将文本放在标题标签……… h1>内时, 它在浏览器中以粗体显示, 并且文本的大小取决于标题的数量。从到标签定义了六个不同的HTML标题, 从最高级别h1(主标题)到最低级别h6(最重要的标题)。h1是最大的标题标…

汤姆大叔的6道javascript编程题题解

1、找出数字数组中最大的元素&#xff08;使用Math.max函数&#xff09; 123var a [1, 2, 3, 6, 5, 4];var ans Math.max.apply(null, a);console.log(ans); // 6这题很巧妙地用了apply&#xff0c;如果不是数组&#xff0c;是很多数字求最大值&#xff0c;我们知道可以这样…

Android 多线程之几个基本问题

Android中的进程和线程 Android中的一个应用程序一般就对应着一个进程&#xff0c;多进程的情况可以参考Android 多进程通信之几个基本问题 Android中更常见的是多线程的情况&#xff0c;一个应用程序中一般都有包括UI线程等多个线程。Android中规定网络访问必须在子线程中进行…

Web下的整体测试

随着Internet的日益普及&#xff0c;现在基于B/S结构的大型应用越来越多&#xff0c;可如何对这些应用进行测试成为日益迫切的问题。有许多测试人员来信问我B/S的测试如何做&#xff0c;由于工作较繁忙&#xff0c;对大家提出的问题也是头痛医头脚痛医脚&#xff0c;没有对WEB的…

用计算机算算术平方根顺序是ON然后是什么,第2课时用计算器求一个正数的算术平方根.ppt...

1.比较下列各组数的大小&#xff1a;(1) 与(2) 与 8依次按键显示&#xff1a;1.732 050 808例3 小丽想用一块面积为400 cm2的正方形纸片&#xff0c;沿着边的方向剪出一块面积为300 cm2的长方形纸片&#xff0c;使它的长宽之比为3:2&#xff0e;她不知能否裁得出来&#xff0c;…

MySQL 命令

版权声明&#xff1a;本文首发 http://asing1elife.com &#xff0c;转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82892834 MySQL 一些常见命令 更多精彩 更多技术博客&#xff0c;请移步 asing1elife’s blog 查看版本号 mysql -V重启/启动/停止 mys…

Bookshelf 2 简单DFS

链接&#xff1a;https://ac.nowcoder.com/acm/contest/993/C来源&#xff1a;牛客网 题目描述 Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top.FJ…