热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

目标检测之focalloss

 FocalLossforDenseObjectDetectionTsung-YiLinPriyaGoyalRossGirshickKaimingHePiotrDollar´Fac

  Focal Loss for Dense Object DetectionTsung-Yi Lin Priya Goyal Ross Girshick Kaiming He Piotr Dollar´Facebook AI Research (FAIR),最近出的一篇做目标检测的工作,本质上是个利用loss function解决样本imbalance问题的工作。

Motivation

      作者说是为了探究为什么ssd、yolo之类的one-stage目标检测网络不如rcnn系列的two-stage检测网络框架效果好,提出了原因在于one-stage训练的过程中没有two-stage的RPN过程来做cascade,所以会有大量的简单负样本在分类器的训练过程中导致训练模型结果不好。采用online hard sample mining(OHEM)的方式是比较通用的方法来解决imbalance的问题,作者设计了一个叫做focal loss的loss function来解决同样的问题,可以认为是OHEM的一个替代方案。

基本原理

       先上个网络结构图,目前主要的one-stage检测框架如下,一个FPN网络带不同scale和shape的anchor,然后不同scale的feature map的组合接出两个子网络,一个用来回归bbox的位置,一个用来回归这个位置所对应的物体分类结果用于判定是否是一个误检。上面提到的样本不均衡的问题就是在这个class subnet上出现的,这会导致这个子网络的预测结果不够好,使得整体检测结果下降。目标检测之focal loss
        所以focal loss就是用来代替这个class subnet的损失函数的,focal loss是交叉熵损失函数(cross entropy,公式2)的变种,
        目标检测之focal loss
        传统的应对样本不均衡的办法就是在这个loss上面加个参数a,通常是样本比例取反,这样来保证数量少的样本获得较大的weight来抵消数量少的影响。focal loss的定义是:
目标检测之focal loss
         可以看到在原有的基础上增加了一个预测概率p和超参数r,其中p的存在就是如果这个样本预测的已经很好了(也就是p->1)那么这个样本产生的loss就接近于0,r的作用是对这个接近的速度做控制,把loss画出来如下图:
          目标检测之focal loss
            可以看出r越大,预测越正确的样本loss下降的越快,也就是这部分样本对于loss的贡献就越小。其实这个工作原理到此就差不多了,作者起了个挺好听的名字叫RetinaNet,下面是一些实现细节:
           1. class subnet和regression subnet用了更深的3*3 conv层
           2. focal loss初始化的时候加了bias:b = log((1 π)),其中π = 0.01,用来防止最开始的几轮迭代时梯度不稳定
   3.8块GPU minibatch=16(但是对比实验的OHEM的batch size最小也是128,不知道这个会不会有什么影响)

实验结果

  对不同的超参数做了对比,也跟OHEM以及state-of-art在COCO上做了对比,结果如下:

    

目标检测之focal loss

     Table1对比了不同的超参数a和r对结果的影响,选了个最好的组合,并且在这个组合下对比了和OHEM的效果,从结果看提升还是很明显的。

目标检测之focal loss

     table2对比了和目前主流方法的对比,值得注意的是table2的结果比table1还要高一些,作者解释说是多训了50%的轮数。。。

整体总结

  工作的idea是比较简单的,paper发的看上去也比较着急,实验不太solid,里面文字错误也有一些,应该是个发出来占坑的paper,一些比较本质的问题其实没有回答的很好。focal loss的本质还是对不同的样本做不同的weight,与OHEM是不同的weight分配方式。作者论文里解释说OHEM单纯的去掉大部分的简单负样本,不如focal loss把所有样本都考虑进来要好,这个逻辑不太成立,focal loss其实也是希望把简单负样本的weight降低,为什么降成0就不够好,这个事情没能通过实验加以证明(比如在focal loss的基础上把排名靠后的样本weight置成0)。和OHEM相比其合理性可能在于一个soft的方式来分配weight通常是要更合理更可tuning的方式,同样的思想应该也可以用到metric-learning之类的需要hard negtive sampling的方法中。

推荐阅读
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • UVa 11683: 激光雕刻技术解析
    自1958年发明以来,激光技术已在众多领域得到广泛应用,包括电子设备、医疗手术工具、武器等。本文将探讨如何使用激光技术进行材料雕刻,并通过编程解决一个具体的激光雕刻问题。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • SDWebImage第三方库学习
    1、基本使用方法异步下载并缓存-(void)sd_setImageWithURL:(nullableNSURL*)urlNS_REFINED_FOR_SWIFT;使用占位图片& ... [详细]
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
author-avatar
所谓一叶随缘_212
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有