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

anchorfree目标检测_【目标检测】anchorfree—CenterNet总结

【文前】本文所讲述的CenterNet为[ObjectsasPoints](http:arxiv.orgabs1904.07850))有两篇paper都为centernet(论文撞

【文前】本文所讲述的 CenterNet 为 [Objects as Points] (http://arxiv.org/abs/1904.07850))

有两篇 paper 都为 centernet(论文撞车,另一篇文章为CenterNet: Keypoint Triplets for Object Detection,基本思路异曲同工之妙,都是 anchor-free)

image.png

【论文】https://arxiv.org/pdf/1904.07850.pdf

【代码】https://github.com/xingyizhou/CenterNet

【result】

1、CenterNet 属于 anchor-free 系列的目标检测,相比于 CornerNet 做出了改进,使得检测速度和精度相比于 one-stage 和 two-stage 的框架都有不小的提高,尤其是与 YOLOv3 作比较,在相同速度的条件下,CenterNet 的精度比 YOLOv3 提高了 4 个左右的点。

各个模型效果对比

2、不仅可以做 2D 目标检测, 只需要少量扩展就可以迁移到 3D 目标检测和人体关键点检测上。

【anchor-base 方法痛点】

1、fastRCNN 依赖计算量高的 region proposal 方法,fasterRCNN RPN 网络需要单独训练 RPN生成anchor

2、featuremap 分辨率较低&#xff0c;后NMS 处理(正&#xff1a;IOU>0.7,负&#xff1a;IOU<0.3)计算量不小

【centernet 处理办法】

1、objects as points。所有的检测物体用中心点&#43;长宽表示。这一点从数学来思考&#xff1a;物体都是呈现几何形状&#xff0c;几何形状的中心点代表物体的关键点信息&#xff0c;大部分物体几何中心在物体本身上(特殊情况以及杠精除外)。

而且目前目标检测标注数据都是矩形框而不是像素级别&#xff0c;这样其实对于网络来说&#xff0c;模型傻傻的&#xff0c;当然认定人喂给网络的就是矩形框里的信息都是正信息&#xff0c;不会聪明到人眼睛看到那个真实物体的轮廓&#xff0c;在机器模型眼中&#xff0c;标注的矩形框就是模型认定的轮廓&#xff0c;模型再从所有同一类别下的矩形框自己学习共性&#xff0c;输出包含某一个类别共性的矩形框。所以这样的假定在数学上是可以理解的。(后续可以发展多个几何关键点作为代表&#xff0c;论文 idea&#xff01;&#xff01;&#xff01;)

image.png

关键点如何得到&#xff1f;采用 heatmap 极值点来表示。

网络训练完成后在 inference 阶段&#xff0c;输入图(WxHx3)经过网络在 feature map 上(

image.png

)其中R为相对于原图来说的 stride&#xff0c;C为最终分类数目&#xff0c;论文中 R&#61;4&#xff0c;C&#61;80(coco 数据集)&#xff0c;在每个 channel 类别通道上取像素峰值点(论文中100)&#xff0c;峰值点选取规则&#xff1a;比周围八个点都大的点&#xff0c;作为检测目标的中心点&#xff0c;再经过三个head&#xff1a;分类网络&#xff0c;中心点 offset 网络以及 W&#xff0c;H 回归网络。offset 说明&#xff1a;因为原图W/R 可能为小数&#xff0c;这样在 featuremap 位置对应会有偏差&#xff0c;用 offset 网络来弥补这个偏差(和 maskRCNN 的 roi align机制异曲同工之妙)

2、分辨率较低问题&#xff0c;因为 center 中心点在分辨率低的 feature map 上偏差很大&#xff0c;感受野较大&#xff0c;因此论文中网络采用卷积&#43;上采样的网络结构&#xff0c;论文中涉及三种网络

Resnet-18 with up-convolutional layers : 28.1% coco and 142 FPS

DLA-34 : 37.4% COCOAP and 52 FPS

Hourglass-104 : 45.1% COCOAP and 1.4 FPS

image.png

hourglass network architecture

yolo v3 network architecture

最终输出分辨率为&#xff1a;【W/R, H/R, C】(R&#61;4)&#xff0c;这样高分辨率下对小目标的检测效果较好&#xff0c;

NMS 问题&#xff1a;文中在 heatmap(和 feature map一致&#xff0c; 只是看问题重点不同&#xff0c;heatmap 着重像素值6高低而行程的像热力图那样的)进行取峰值点可类比于 anchor-base 方法中的 NMS 操作&#xff0c;都是取极值操作&#xff0c;只不过centernet在一维点 point 信息下&#xff0c;传统方法在二维ROI区域来说&#xff0c;属于降维打击&#xff0c;这样子计算量就大大降低(但是负样本数量就多了)

【训练过程】

先看 loss 设计

Loss function

1、分类采用 focal loss

focal loss

在 heatmap 上每个峰值点为预测为 Yba&#xff0c;真是 ground-truth 为 Y&#xff0c;非 Y 其他点都为负样本(因一个点为正&#xff0c;其他为负&#xff0c;这样子在相比于 roi 二维区域中&#xff0c;负样本数量大大升高)&#xff0c;直接计算 focal loss &#xff0c;1-Y&#61;0占大多数&#xff0c;模型学习会负样受本影响&#xff0c;怎么办呢&#xff1f;

文中在loss 计算时&#xff0c;ground-truth 映射到 W/R heatmap&#xff0c;以 ground-truth 中心点为中心使用高斯延展&#xff0c;中心点为1&#xff0c;其他地方不直接为0&#xff0c;而时比1小的数&#xff0c;具体延展陡峭程度由高斯核sigma 决定

image.png

2、offset loss

offset loss

3、size regression

image.png

size regression

【实验结果】

centernet 不同网络测试精确度以及速度比对&#xff0c;精度最高的时 hourglass 网络&#xff0c;但是其速度慢&#xff0c;在实际业务应用中采用的是 DLA34网络&#xff0c;可以达到精度与速度的均衡

image.png

image.png

image.png

其他3D 检测和 pose 检测此处略过。



推荐阅读
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文介绍了如何通过创建自定义 XML 文件来修改 Android 中 Spinner 的项样式,包括颜色和大小的调整。 ... [详细]
  • 本文探讨了在 PHP 的 Zend 框架下,使用 PHPUnit 进行单元测试时遇到的 Zend_Controller_Response_Exception 错误,并提供了解决方案。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文档旨在提供C语言的基础知识概述,涵盖常量、变量、数据类型、控制结构及函数定义等内容。特别强调了常量的不同类型及其在程序中的应用,以及如何正确声明和使用函数。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 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. ... [详细]
  • 探索将Python Spyder与GitHub连接的方法,了解当前的技术状态及未来可能的发展方向。 ... [详细]
  • 来自FallDream的博客,未经允许,请勿转载,谢谢。一天一套noi简直了.昨天勉强做完了noi2011今天教练又丢出来一套noi ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
  • 本文介绍了在Visual C++环境中通过编程实现鼠标移动及点击的具体方法,包括获取鼠标当前位置、移动鼠标至指定位置并执行点击等操作。 ... [详细]
  • 本文介绍如何通过mysqladmin ext命令监控MySQL数据库的运行状态,包括性能指标的实时查看和分析。 ... [详细]
author-avatar
山野木每子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有