1.loss要规范化,这样就不会受图片大小的影响

2.w、h采用log:比较特殊的是w,hw,h的regression targets使用了log space. 师兄指点说这是为了降低w,hw,h产生的loss的数量级, 让它在loss里占的比重小些, 不至于因为w,hw,h的loss太大而让x,yx,y产生的loss无用

3.当预测值与目标值相差很大时, 梯度容易爆炸, 因为梯度里包含了x−t. 所以rgb在Fast RCNN里提出了SmoothL1Loss.当差值太大时, 原先L2梯度里的x−tx−t被替换成了±1±1, 这样就避免了梯度爆炸, 也就是它更加健壮. 因此L1 loss对噪声(outliers)更鲁棒.

论文原话:"...... L1 loss that is less sensitive to outliers than the L2 loss used in R-CNN and SPPnet."

smoothl1曲线:

https://blog.csdn.net/weixin_35653315/article/details/54571681   非常全面的解释

smooth l1的更多相关文章

  1. 目标检测——Faster R_CNN使用smooth L1作为bbox的回归损失函数原因

    前情提要—— 网上关于目标检测框架——faster r_cnn有太多太好的博文,这是我在组会讲述faster r_cnn这一框架时被人问到的一个点,当时没答上来,于是会下好好百度和搜索一下研究了一下这 ...

  2. L1 loss, L2 loss以及Smooth L1 Loss的对比

    总结对比下\(L_1\) 损失函数,\(L_2\) 损失函数以及\(\text{Smooth} L_1\) 损失函数的优缺点. 均方误差MSE (\(L_2\) Loss) 均方误差(Mean Squ ...

  3. smooth L1损失函数

    当预测值与目标值相差很大时,L2 Loss的梯度为(x-t),容易产生梯度爆炸,L1 Loss的梯度为常数,通过使用Smooth L1 Loss,在预测值与目标值相差较大时,由L2 Loss转为L1  ...

  4. XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network

    XiangBai--[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...

  5. SSD(Single Shot MultiBox Detector)的安装配置和运行

    下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事. 该方法出自2016年的一篇ECCV的oral paper,SSD: Si ...

  6. caffe错误

    一些caffe错误 训练时很快梯度爆炸,loss猛增至nan 如果找不到数据上的原因的话,可以怀疑caffe框架有问题,换用其它版本试试.比如我遇到的问题是在训练时使用了Accuracy层,而该层的实 ...

  7. Bounding-box 回归

    R-CNN系列均训练了Bounding-box回归器来对窗口进行校正,其目标是学习一种转换关系将预测得到的窗口P映射为真实窗口G(Ground truth). 变换方式 可以通过简单的仿射变换以及指数 ...

  8. 论文阅读笔记五十四:Gradient Harmonized Single-stage Detector(CVPR2019)

    论文原址:https://arxiv.org/pdf/1811.05181.pdf github:https://github.com/libuyu/GHM_Detection 摘要 尽管单阶段的检测 ...

  9. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

随机推荐

  1. C# 设计模式·行为型模式

    这里列举行为型模式·到此23种就列完了···这里是看着菜鸟教程来实现··,他里边列了25种,其中过滤器模式和空对象模式应该不属于所谓的23种模式责任链模式:为请求创建一个接收者对象的链,对请求的发送者 ...

  2. C Traps:优先级常见错误

    逻辑与关系运算符 if (flags & FLAG != 0) {...} 这类错误以前也犯过,因为!=的优先级比&要高所以实际上是这样的 if (flags & (FLAG ...

  3. redis事务报错No ongoing transaction. Did you forget to call multi?

    场景:需要存两条数据到redis中,并且两条要么都存要么都不存,需要事务来控制 Spring Data Redis的RedisTemplate提供了MULTI.EXEC命令进行封装,远看可以解决问题, ...

  4. PHP网站(Drupal7)响应过慢之“Wating(TTFB)时间过长”

    直接上图: 这是Chrome浏览器自带的工具分析的.整个url请求的时间为2.59秒,最大的耗时在Wating(TTFB, Time To First Byte),消耗了2.59秒(应该是其他时间太短 ...

  5. Ubuntu14.04安装Torch7笔记

    Ubuntu14.04安装Torch7笔记 利用快捷键Ctrl+Alt+T打开Ubuntu终端 第一步: 获取安装LuauJIT(C语言编写的Lua的解释器)和Torch所必需的依赖包. 代码如下: ...

  6. Flink1.4.0中反序列化及序列化类变化

    Flink1.4.0中,反序列化及序列化时继承的类,有一些被标记为了“@deprecated”,路径上也有变化: 1.AbstractDeserializationSchema 以前路径 org.ap ...

  7. android:项目迁移error:Please change caller according to com.intellij.....

    迁移到Android Studio中的项目,在运行时有时会在Event Log中报这种错: Please change caller according to com.intellij.openapi ...

  8. 如何从 GitHub 上下载单个文件夹

    DownGit 好用记得回来点赞(建议***)

  9. join() 方法详解及应用场景

    总结:join方法的功能就是使异步执行的线程变成同步执行.也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用jo ...

  10. 为什么不要使用 select * from xxx (oracle 亲测)

    打开已用时间set timing on;create table users(id number(20), name varchar2(20), password varchar2(20));inse ...