看代码解读CenterNet :Objects as Points
文章目录
- 1. idea
- 2. 网络结果
- 2.1 hm分支
- 2.2 wh分支
- 2.3 reg分支
- 3. 数据+loss
- 4. 推理
- 结果
- reference
摘要:
centernet是单阶段的目标检测网络,采用高斯图来表示目标,速度很快,比YOLOV3更快,效果方面没有对比过。网上也没有具体的对比。
这篇通过读代码的方式来解读centernet,先来张图:
1. idea
文章主要用高斯分布来表示目标,就是一个目标用高斯分布来覆盖,目标中心点的值越大。
2. 网络结果
2.1 hm分支
整个网络主要有bone net特征提取网络和输出部分组成,网络结果如上图所示,特征提取网络就不细讲了。用高斯分布来表示目标,网络第三个分支/hm输出部分网络如下:
nn.Sequential( nn.Conv2d(64, 256, kernel_size=3, padding=1, bias=True),nn.ReLU(inplace=True),nn.Conv2d(256, classes, kernel_size=final_kernel, stride=1, padding=final_kernel // 2, bias=True))
其实就是一个conv2d(64,256),relu(),conv2d(256,1),最后的输出为n_category×128×128,一个类别一个通道,其中每个点的值表示:是目标的概率有多大。上图是只有一个类别的情况。
2.2 wh分支
网络定义为:
nn.Sequential( nn.Conv2d(64, 256, kernel_size=3, padding=1, bias=True),nn.ReLU(inplace=True),nn.Conv2d(256, 2, kernel_size=final_kernel, stride=1, padding=final_kernel // 2, bias=True))
分支最后输出:2×128×128,所有类别用共同的预测宽度w和高度h。
2.3 reg分支
网络定义为:
nn.Sequential( nn.Conv2d(64, 256, kernel_size=3, padding=1, bias=True),nn.ReLU(inplace=True),nn.Conv2d(256, 2, kernel_size=final_kernel, stride=1, padding=final_kernel // 2, bias=True))
分支输出:2×128×128,每个点的两个值表示,当前index为目标时hm输出位置的偏差,所有类别用共同的w,h预测值。
总结: 整个网络还是很好理解的。
3. 数据+loss
- 分类误差
采用的focalloss,target是一个n_cat×128×128的矩阵,每一个channel表示一个类别,128×128的每个值是用高斯分布覆盖目标处理出来的。 - 尺寸误差
target是:(2×n_category)×128×128矩阵,用L1_loss。 - 中心点修正误差
target是:(2×n_category)×128×128矩阵,用L1_loss。
4. 推理
- 网络前向传播
output = self.model(images)[-1]
hm = output['hm'].sigmoid_()
wh = output['wh']
reg = output['reg']
就是正常的前向,hm的输出要经过sigmoid。
- 对hm用max_pool2d(3*3)进行滤波
hmax = nn.functional.max_pool2d(heat, (kernel, kernel), stride=1, padding=pad)
- 根据hm的值筛选出前100
scores, inds, clses, ys, xs = _topk(heat, K=K)
- 对结果进行一些后处理,比如中点+reg等
结果
reference
- 【论文笔记】CenterNet:Objects as Points
- centernet源码
看代码解读CenterNet :Objects as Points相关推荐
- centernet: objects as points
轻松掌握 MMDetection 中常用算法(七):CenterNet - 知乎文@ 0000070 摘要 在大家的千呼万唤中,MMDetection 支持 CenterNet 了!! CenterN ...
- CenterNet:Objects as Points论文阅读笔记
CenterNet论文阅读笔记 (一)Title (二)Summary (三)Research Objective (四)Problem Statement (五)Method 5.1 Loss Fu ...
- 论文精读——CenterNet :Objects as Points
论文精读--CenterNet :Objects as Points 论文地址:https://arxiv.org/pdf/1904.07850.pdf 机构:UT Austin,UC Berkele ...
- CenterNet :Objects as Points 详解
论文题目:Objects as Points ...
- CenterNet:Objects as Points代码解析(九):通过高斯函数画热点图
原理参考https://zhuanlan.zhihu.com/p/96856635 确定高斯半径 def gaussian_radius(det_size, min_overlap=0.7):heig ...
- EMANet:Expectation-Maximization Attention Networks for Semantic Segmentation论文解读和代码解读
官方项目地址:含论文和代码 来自北大才子 立夏之光的 ICCV Oral ,理论很漂亮.属于Non local方式 Updated on 2020.1.6 最近一直有人私信我,这个attention ...
- CenterNet:Objects as Points论文学习笔记+代码复现(demo+训练数据)【检测部分】
目录 1.关键部分Heatmap了解 2.Centernet论文细节: 3.尝试复现CneterNet--INSTALL.md安装: 4.尝试复现CneterNet--跑跑demo.py: 5.尝试复 ...
- 目标检测系列(八)——CenterNet:Objects as points
文章目录 摘要 1. 引言 2. 相关工作 3. 准备阶段 4. objects as points 目标即点 4.1 3D检测 5. 实施细节 7. 总结 8. 代码 8.1 训练 8.2 测试 摘 ...
- 狗都能看懂的CenterNet讲解及代码复现
文章目录 前言 网络结构 Backbone 数据读取 Loss计算 模型预测 预测结果后处理 预测框转换 训练 tensorboard 可能会出现的现象 总结 论文: https://arxiv.or ...
最新文章
- 如何做一个听话的 “输入框”
- 【Linux学习九】负载均衡
- Zend_Db_Table详解
- OpenGL HDR渲染
- 大四中软实习笔记201303011文件
- linux info命令详解,Linux info 命令简介
- 2009年南京辞职当日
- 金万维异速联服务器重装,金万维异速联服务器配置说明.doc
- 业务系统安全工程在阿里的实践|阿里巴巴DevOps实践指南
- MD5 JS实现加密
- 大连英语培训商务英语百家外语当今社会学习商务英语的重要性
- 【Lighthouse教程】Win10远程连接同步代码
- 兴趣题:猴子吃桃问题
- 图神经网络在推荐系统的应用!
- idea重启端口占用问题
- 【网络安全】细分领域总览
- 启动修复无法修复计算机win10,win10系统使用“sfc /scannow”修复系统提示Windows资源保护无法启动修复服务怎么办...
- NovalIDE自动补全插件介绍。
- 安卓和php接口数据传输加密,安卓与PHP间的RSA(openssl)交互加密的坑
- 计算光学和计算机科学与技术,光学计算会是未来发展方向吗?
热门文章
- gis连接表格到数据库失败_arcgis连接到数据库失败,常规功能故障
- 七大云架构设计在线绘图工具
- Scikit-Learn机器学习(knn算法)
- 【CTF WriteUp】UTCTF 2020部分题解
- 差异数据的对比和整理
- Neo4j登录报错Neo4j Server shutdown initiated by request解决
- 五年级上册计算机工作总结,小学五年级信息技术上册教学工作总结范文
- c++的一些小知识点
- 鸿蒙比安卓流畅,华为鸿蒙系统首升用户体验:流畅得不像话,专属应用体积超小!...
- jsp未正确拼写字 mysql_江西26个英文字母的正确拼写方式