CVPR2019 | 斯坦福学者提出GIoU,目标检测任务的新Loss
作者 | Slumbers,毕业于中山大学,深度学习工程师,主要方向是目标检测,语义分割,GAN
责编 | Jane
本文是对 CVPR2019 论文《Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression》的解读,通过对 Loss 的修改提升检测任务的效果,觉得思路很棒。
该文作者来自斯坦福大学与澳大利亚阿德莱德大学。
IoU是检测任务中最常用的指标,由于IoU是比值的概念,对目标物体的scale是不敏感的。然而检测任务中的BBox的回归损失(MSE loss, l1-smooth loss等)优化和IoU优化不是完全等价的(见下图)。
而且 Ln 范数对物体的scale也比较敏感。这篇论文提出可以直接把IoU设为回归的loss。然而有个问题是IoU无法直接优化没有重叠的部分。为了解决这个问题这篇paper提出了GIoU的思想~
预测值和Ground truth没有重叠的话,IoU始终为0且无法优化
IoU无法辨别不同方式的对齐,比如方向不一致等。
GIoU
所以论文中提出的新 GIoU 是怎么设计的呢:
假如现在有两个任意性质 A,B,我们找到一个最小的封闭形状C,让C可以把A,B包含在内,然后我们计算C中没有覆盖A和B的面积占C总面积的比值,然后用A与B的IoU减去这个比值:
GIoU有如下性质:
与IoU类似,GIoU也可以作为一个距离,loss可以用 (下面的公式)来计算
同原始 IoU 类似,GIoU 对物体的大小不敏感。GIoU 总是小于等于 IoU,对于 IoU,有
GIoU 则是
在两个形状完全重合时,有
由于 GIoU 引入了包含 A,B 两个形状的 C,所以当 A,B 不重合时,依然可以进行优化。
总之就是保留了IoU的原始性质同时弱化了它的缺点。于是论文认为可以将其作为IoU的替代。
GIoU 作为 BBox 回归的损失
具体一点,如何计算损失呢?我们以 2D detecation 为例:
假设我们现在有预测的 Bbox 和 groud truth 的 Bbox 的坐标,分别记为:
注意我们规定对于预测的 BBox 来说,有
主要是为了方便之后点的对应关系。
作者做了一系列的实验(针对分割任务和分类任务有一定 loss 的调整设计,不过论文中没有详细给出)结果是 IoU loss 可以轻微提升使用 MSE 作为 loss 的表现,而 GIoU 的提升幅度更大,这个结论在 YOLO 算法和 faster R-CNN 系列上都是成立的:
PASCAL VOC 2007 with faster-RCNN
更多内容大家可以参考项目主页:
https://giou.stanford.edu/
代码实现:
https://github.com/generalized-iou
原文链接:
https://zhuanlan.zhihu.com/p/57992040
--【本文完】--
近期 CVPR 2019 论文解读推荐:
首发 | 旷视14篇CVPR 2019论文,都有哪些亮点?
腾讯58篇论文入选CVPR 2019,两年增长超200%
CVPR 2019审稿满分论文:中国博士提出融合CV与NLP的视觉语言导航新方法
CVPR 2019 | 惊艳的SiamMask:开源快速同时进行目标跟踪与分割算法
CVPR2019 | 微软、中科大开源基于深度高分辨表示学习的姿态估计算法
如果你也想分享自己的论文,欢迎投稿,可扫描下方二维码与营长联系:
(本文为AI科技大本营转载文章,转载请微信作者)
推荐阅读:
让数百万台手机训练同一个模型?Google把这套框架开源了
她们,在”图形“科研的征途里洒下坚定信仰
2018中国开发者真实现状:40岁不做开发,算法工程师最稀缺!
人生苦短,Python之父要解开这个困惑
从起源、变体到评价指标,一文解读NLP的注意力机制
女子偷师男子学校,变身区块链开发工程师,却说: “这次女人不会再缺席了!”
云漫圈 | 如何给女朋友解释什么是HTTP
从程序媛到全球研发副总裁,技术女神进击史!
杨超越杯编程大赛上热搜:不懂技术真不敢追星女子偷师男子学校,变身区块链开发工程师,却说: “这次女人不会再缺席了!”
❤点击“阅读原文”,查看历史精彩文章。
相关文章:
ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说,常用的较简单有QueryString,Session,Cookies,Application,Server.Transfer。 一…
下一代安全威胁的内幕故事
当伊朗总统马哈茂德艾哈迈迪-内贾德在去年11月份宣布该国的核计划遭到软件***后,他证实了许多安全研究人员的猜测:原因是Stuxnet大爆发,篡改了控制处理铀所用的离心机电机的关键系统。 内贾德对这起***造成的影响轻描淡写…
国内少儿眼中的编程:“Coding即是代码”?
作者 | Greg Satell译者 | 刘旭坤责编 | Jane出品 | AI科技大本营(公众号id:rgznai100)【编者按】上一个时代流行从小学奥数,现在“编程要从宝宝抓起”已经开始疯狂流行。随着 2017 年国务院印发《新一代人工智能发展规划》&#…
西门子发布最新版NX软件 助力零件制造的数字化
SiemensPLMSoftware近日发布最新版NXTM软件,集成了用于增材制造、计算机数控(CNC)加工、机器人和质量检测等新一代工具,以实现在统一的、集成的、端到端的系统中实现零件制造的数字化。 其中,用于计算机辅助制造(CAM)的先进自动化功能&#x…
【Qt】Qt国际化
参考博客:https://blog.csdn.net/hebbely/article/details/69388763 Qt官网:http://doc.qt.io/qt-5/linguist-manager.html 使用的工具 lupdate --> linguist --> lrelease 使用步骤 tr 在程序中将需要翻译的文本使用tr()函数来处理 修改pro…
回到未来 – 大胆畅想如何追赶并超越腾讯模式
其实,明天是什么样子,它就会是什么样子。 我总是喜欢幻想,无论是对过去还是对未来,对生活或是对爱情。 不过憧憬多过幻想。 一直比较关注互联网的动态,想象如果某某公司的某件产品如果是自己的&…
Python如何爬取实时变化的WebSocket数据
作者 | 韦世东来源 | 进击的Coder(公众号id:FightingCode)一、前言作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据、股市实时数据或币圈实时变化的数据。如下图:Web 领域中…
【Qt】Qt样式表总结(四):CSS盒子模型
官网:http://doc.qt.io/qt-5/stylesheet-customizing.html#box-model 【Qt】Qt样式表总结(一):选择器 【Qt】Qt样式表总结(二):冲突和命名空间 【Qt】Qt样式表总结(三):QObject 属性 盒子模型 先来张图片,引自Qt官网 使用样式表时, 每个小部件都被视为具有四个同…
1.试述大数据对思维方式的重要影响。 2.详细阐述大数据、云计算、物联网之间的区别与联系。 3.简述你对大数据应用与发展的看法,以及你在这次大数据浪潮中想扮演什么角色。...
1.大数称巨量资料,指的是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。所以利用大数据的人们思维更加的敏锐,也会对人们的思维方式产生扩大化,通过大量的数据进行分析,从而形成…
有关GetPrivateProfileString的使用方法
函数返回值为string的长度(long型),而从ini文件获得的字符串则保留在目的缓冲器中 DWORD GetPrivateProfileString( LPCTSTR lpAppName, //配置文件的section名 LPCTSTR lpKeyName, //配置文件的key名 LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPC…
【Qt】QDebug和log4cplus的联合使用
问题描述 项目开始时,只使用QDebug将调试信息打印到终端上。后期添加了日志管理系统,比如log4cplus。如何在不修改打印语句,比如还使用qDebug,就能将日志打印到文件中。 解决方法 使用qInstallMessageHandler将调试消息重定向功…
75道常见AI面试题,看看你的知识盲点在哪?(附解析)
整理 | AI科技大本营出品 | AI科技大本营(公众号id:rgznai100)【导语】正值求职、跳槽季,无论你是换工作还是找实习,没有真本事都是万万不行的,可是如何高效率复习呢?之前我们给大家推荐了一份 …
Flex画流程图
<?xml version"1.0" encoding"utf-8"?><mx:Application xmlns:mx"http://www.adobe.com/2006/mxml" layout"absolute" creationComplete"initApp()"> <mx:Canvas id"paper" x"30" y&q…
【Qt】Qt信号与槽使用不当,使程序崩溃
问题描述 跨线程使用Qt信号和槽,信号发送时间间隔小于槽函数处理时间时,造成程序崩溃。 原因分析 跨线程使用Qt信号和槽时,connect默认是QueuedConnection,队列连接方式。 信号传递给槽函数的参数,分配内存后放入队…
70亿美金!英伟达欲竞购这家以色列芯片公司!
整理 | 琥珀出品 | AI科技大本营(公众号id:rgznai100)近日,据国外财经媒体 Calcalist 报道,英伟达已给出报价,竞购以色列芯片设计公司迈络思(MellanoxTechnologies)。实际上…
Mysql安全配置
zhangsan 2014/06/14 11:550x01 前言很多文章中会说,数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话。因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪些权限。 现在很多mysql用着r…
【C++】Google C++编码规范(一):作用域
1、文件作用域: 在.cpp文件中,C使用匿名名字空间来表示文件作用域,C使用static来表示; 2、局部变量 局部变量在声明的同时,进行显示初始化;比起隐式初始化再赋值要高效; 局部变量的作用域要尽…
华为 | 人生苦短,码短情长,有场大Party等你来Pick!
上学时,书上说C语言是上帝的语言。我同屋的兄弟不服,他说PHP才是最好的语言。毕业之后,我们Team的老大却坚信:Life is short,只用Python……现在,作为一个真正的开发者,我发现用什么语言一点点都…
设置进程优先级
//取得本进程id HANDLE hProcess GetCurrentProcess(); //设置本进程的优先级 int stat SetPriorityClass(hProcess, NORMAL_PRIORITY_CLASS);
Deep Reading | 从0到1再读注意力机制,此文必收藏!
译者 | forencegan编辑 | 琥珀出品 | AI科技大本营(ID: rgznai100)【AI科技大本营导语】注意力机制(Attention)已经成为深度学习必学内容之一,无论是计算机视觉还是自然语言处理都可以看到各种各样注意力机制的方法。之…
【C++】Google C++编码规范(二):类
1、构造函数 不要在构造函数中进行复杂的初始化 (尤其是那些有可能失败或者需要调用虚函数的初始化). 构造函数不得调用虚函数, 或尝试报告一个非致命错误. 如果对象需要进行有意义的 初始化, 考虑使用明确的 Init() 方法或使用工厂模式. 2、初始化 第一种方法:构…
Flask与Django对比
Flask与Django对比 Django vs FlaskFlask框架之间的差别 Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,…
windows下apache配置虚拟主机的两个方法
windows下apache配置虚拟主机方法一: 对httpd.conf进行设置:1.注释以下三行#ServerAdmin#ServerName#DocumentRoot2.去掉mod_proxy.so和mod_proxy_ajp.so的注释3.#Virtual hosts#Include conf/extra/httpd-vhosts.conf ࿰…
大疆、港科大联手!双目3D目标检测实验效果大放送 | CVPR 2019
作者 | heryms责编 | JaneCVPR 2019的文章出来了,今天聊聊双目的 3D object detection。这是一篇来自 DJI (大疆)与港科大合作的文章《Stereo R-CNN based 3D Object Detection for Autonomous Driving》,作者分别是 Peiliang Li&…
【C++】Google C++编码规范(三):智能指针
【C】Google C编码规范(一):作用域 【C】Google C编码规范(二):类 std::unique_ptr std::unique_ptr是C11标准里新推出的智能指针,用来表示动态分配出的对象的「独一无二」所有权;…
Django restful-framework初步学习
urls.py from django.conf.urls import include, url from django.contrib import admin from rest_framework import routers # 导入api路由 from app01 import apirouter routers.DefaultRouter() # 获取api路由对象 router.register(rusers, api.UserViewSet) # 注册路由到…
植树节,程序员要爬哪些“树”?
作者 | 程序猿小吴、进击的Hello_World转载自五分钟学算法(ID: CXYxiaowu)公历 3 月 12 日是一年一度的植树节。旨在宣传保护森林,并动员群众参加植树造林活动。说到树,程序猿们肯定不陌生,趁着这个植树节,…
把JS 脚本嵌入CS运行
下面这段视频,是让您知道怎样把播放器的javascript放入C#类别中。在调用这个类别时,只传入相关的参数,即可运行。一时类别封装了,在前台xxx.aspx或xxx.aspx.cs看不到播放器的代码。 另一个就是在CS内怎样运行Javascript脚本。此工…
【C++】Google C++编码规范(四):其他C++
引用参数 所有按引用传递的参数必须加上const; 这在Google Code上是一个硬性约定:输入参数是值参或const的引用参数,输出参数为指针,输入参数可以是const指针,但决不能是非const的引用参数,除非用于交换,比…
使用Ceph集群作为Kubernetes的动态分配持久化存储
2019独角兽企业重金招聘Python工程师标准>>> 使用Docker快速部署Ceph集群 , 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储。 Kubernetes集群要使用Ceph集群需要在每个Kubernetes节点上安装ceph-common 1. 为kubernetes创建一个存储池 1 2 #…