樱花龙女
热门频道首页博客研修院VIPAPP问答下载社区推荐频道活动招聘专题打开CSDN APPCopyright © 1999-2020, , All Rights Reserved打开APPAnchor-free之CenterNet 原创2020-07-09 22:39:58有点方 码龄7年关注anchor-base VS Anchor-freeAnchor-base存在的问题:•与锚点框相关超参 (scale、aspect ratio、IoU Threshold) 会较明显的影响最终预测效果;•预置的锚点大小、比例在检测差异较大物体时不够灵活;•大量的锚点会导致运算复杂度增大,产生的参数较多;•容易导致训练时negative与positive的比例失衡。Anchor-free算法的优点:•使用类似分割的思想来解决目标检测问题;•不需要调优与anchor相关的超参数;•避免大量计算GT boxes和anchor boxes 之间的IoU,使得训练过程占用内存更低。由于物体的中心区域是远小于其他背景区域的,整个分类的正负样本和难易样本是极不均衡的。直接训练这样的分类问题很难收敛到一个满意的结果。Base anchor对于正负样本比例失调的解决方式一般为focal loss 和OHEM。前者在损失函数上优化,对正负样本已经困难样本进行不同程度的惩罚;后者将原来的ROI网络扩充为两个ROI,一个ROI只有前向传播,用于计算损失,一个ROI正常前向后向传播,以hard example作为输入,计算损失并传递梯度,根据损失进行筛选,选出对分类和检测影响大的样本。Base anchor检测差异较大物体的策略主要是FPN,如果没有引入FPN,feature map的每个位置只能输出一个框,并且下采样的倍数是8或者16,那么可能会有很多物体的中心点落在同一格子中,这样就会导致训练的时候有多框重叠现象。FPN这种多层级的表示有效解决了这种冲突的现象,可以在一定程度上解决检测物体差异较大的现象。Anchor free没有使用FPN, feature map的每个位置只能输出一个框,下采样的倍数是8或者16,随着FPN的引入,不同尺寸的物体被分配到了不同的层级上,冲突的概率大大降低。CenterNet VS CornerNet等CornerNet将bbox的两个角作为关键点;ExtremeNet 检测所有目标的 最上,最下,最左,最右,中心点。它们都需要经过一个关键点grouping阶段,这会降低算法整体速度。CenterNet针对CornerNet对内部语义缺失和grouping耗时的问题,提出了对中心点进行估计的方法,找到目标的中心,回归出他们的尺寸。仅仅提取每个目标的中心点,无需对关键点进行grouping 或者是后处理。网络结构论文中CenterNet提到了三种用于目标检测的网络,这三种网络都是编码解码(encoder-decoder)的结构:1. Resnet-18 with up-convolutional layers : coco and 142 FPS2. DLA-34 : COCOAP and 52 FPS3. Hourglass-104 : COCOAP and FPS每个网络内部的结构不同,但是在模型的最后输出部分都是加了三个网络构造来输出预测值,默认是80个类、2个预测的中心点坐标、2个中心点的偏置。确立中心点在整个训练的流程中,CenterNet学习了CornerNet的方法。对于每个标签图(ground truth)中的某一类,我们要将真实关键点(true keypoint) 计算出来用于训练,中心点的计算方式如下对于下采样后的坐标,我们设为其中 R 是文中提到的下采样因子4。所以我们最终计算出来的中心点是对应低分辨率的中心点。然后我们对图像进行标记,在下采样的[128,128]图像中将ground truth point以下采样的形式,用一个高斯滤波来将关键点分布到特征图上。损失函数1.中心点的损失函数其中 α 和 β 是Focal Loss的超参数, N 是图像 I 的的关键点数量,用于将所有的positive focal loss标准化为1。在这篇论文中 α 和 β 分别是2和4。这个损失函数是Focal Loss的修改版,适用于CenterNet。2.目标中心的偏置损失图像进行了 R=4 的下采样,这样的特征图重新映射到原始图像上的时候会带来精度误差,因此对于每一个中心点,额外采用了一个local offset 去补偿它。所有类 c 的中心点共享同一个offset prediction,这个偏置值(offset)用L1 loss来训练:这个偏置损失是可选的,我们不使用它也可以,只不过精度会下降一些。3.目标大小的损失假设 (X1(k),Y1(k),X2(k),Y2(k)) 为为目标 k,所属类别为c,它的中心点为我们使用关键点预测 Y^ 去预测所有的中心点。然后对每个目标 K 的size进行回归,最终回归到Sk=(X2(k)-X1(k), Y2(k)-Y1(k)),这个值是在训练前提前计算出来的,是进行了下采样之后的长宽值。作者采用L1 loss 监督w,h的回归4.总损失函数整体的损失函数为物体损失、大小损失与偏置损失的和,每个损失都有相应的权重。论文中 size 和 off的系数分别为和1 ,论文中所使用的backbone都有三个head layer,分别产生[1,80,128,128]、[1,2,128,128]、[1,2,128,128],也就是每个坐标点产生 C+4 个数据,分别是类别以及、长宽、以及偏置。推理阶段在预测阶段,首先针对一张图像进行下采样,随后对下采样后的图像进行预测,对于每个类在下采样的特征图中预测中心点,然后将输出图中的每个类的热点单独地提取出来。就是检测当前热点的值是否比周围的八个近邻点(八方位)都大(或者等于),然后取100个这样的点,采用的方式是一个3x3的MaxPool。代码中设置的阈值为,也就是从上面选出的100个结果中调出大于该阈值的中心点,最后经过soft nms得到最终的结果。CenterNet的缺点1.当两个不同的object完美的对齐,可能具有相同的center,这个时候只能检测出来它们其中的一个object。2.有一个需要注意的点,CenterNet在训练过程中,如果同一个类的不同物体的高斯分布点互相有重叠,那么则在重叠的范围内选取较大的高斯点。附:DCN:文章知识点与官方知识档案匹配OpenCV技能树OpenCV中的深度学习图像分类12101 人正在系统学习中打开CSDN APP,看更多技术内容CenterNet(Objects as Points)学习笔记论文: Objects as Points Code: CenterNer的提出 一般的detection方法将object识别成(无旋转的)矩形框。大部分成功的object检测器会枚举出很多object的位置和尺寸,对每一个候选框进行分类。这是浪费的、低效的。 常规方法中的后处理方法(nms等)是很难微分(diff...继续访问『深度应用』对CenterNet的一些思考与质疑·对比与U版YoloV3速度与精度0.引子 笔者很喜欢CenterNet极简的网络结构,CenterNet只通过FCN(全卷积)的方法实现了对于目标的检测与分类,无需anchor与nms等复杂的操作高效的同时精度也不差。同时也可以很将此结构简单的修改就可以应用到人体姿态估计与三维目标检测之中。 后面一些针对CenterNet结构应用于其他任务,也取得不错的效果,比如人脸检测CenterFace以及目标追踪CenterTrack与FairMot。这些内容后面等笔者研习过后再补充,后面应该会做一个类CenterNet结构总结对比,感兴.继续访问最新发布 目标检测 | Anchor free之CenterNet深度解析点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达1 前言本文接着上一讲对CornerNet的网络结构和损失函数的解析,链接如下本文来聊一聊Anchor-Free领域耳熟能详的CenterNet。原论文...继续访问CenterNet遇到的问题问题总结 参考pillow报错 conda install 'pillow<' 报错参考THCG改main中 conda创建环境相关操作 conda相关操作2 : HTTP Error 404: Not Found网络问题 AttributeError: Can't pickle local objec...继续访问目标检测:使用mmdetection对比centernet与yolov3的性能前情概要 上一篇博客,我通过mmdetection实现的源码解释了centernet的原理,并分析了该算法的一些优缺点,本篇博客我将讲解如何通过mmdetection运行centernet,并基于一个x光数据集对比centernet与yolov3的性能。 本文使用数据集介绍 本文使用的数据集是安检x光的数据集,数据集大小为3600张图片和对应标注,样例图片如下 而需要检测的物体label有10个:knife、scissors、lighter、zippooil、pressure、slingshot、han继续访问关于CenterNet移动端部署的思考(for ncnn)参考 腾讯技术工程 公众号: 本文主要是参考 arlencai 大佬的博文,对于cneternet在ncnn平台移植的实操和分析,先mark一下,准备后续有空闲尝试将这一思路在nvidia的jetson平台上尝试部署,并进行系列优化(如硬件方面框架的tensorrt量化优化、网络层面的移动端部署替代,或者类似yolov5的CSP结构等方法改良尝试等) 一、背景 原文中,大佬主要是针对微信的“扫一扫”功能进行阐述继续访问CenterNet原文: 扔掉anchor!真正的CenterNet——Objects as Points论文解读 Oldpan 2019年5月16日 0条评论137次阅读0人点赞 anchor-free目标检测属于anchor-free系列的目标检测,相比于CornerNet做出了改进,...继续访问Anchor Free,框即是点,CenterNet论文:Objects as Points Github: CVPR 2019 CenterNet,一个anchor free的新的检测算法,算是对cornerNet的改进,在cornerNet基础上,引入了中心点的概念,因此,称为CenterNet。 算法亮点, anchor free,大大减少了a...继续访问深度学习(三十七)——CenterNet, Anchor-Free, NN QuantizationCenterNet CenterNet是中科院、牛津、Huawei Noah’s Ark Lab的一个联合团队的作品。() 论文: 《CenterNet: Keypoint Triplets for Object Detection》 上图是CenterNet的网络结构图。 正如之前提到的,框对于物体来说不是一个最好的表示。同理,Corner也不是什么特别好的表示:绝大多数情况下,C...继续访问anchor-free目标检测之centernet自从anchor-free方法实现目标检测的Cornernet提出后,对其进行改进的方法也出现了许多。centernet是一篇对其进行改进的论文,将原来的二元组角点检测扩展为三元组检测,加入了中心点的检测。 为了克服需要手动设计anchor的超参数的问题,Cornernet提出基于关键点检测的方法。但是,基于关键点的方法经常会产生大量不正确的对象边界框,可以说是由于缺少对裁剪区域的额外观察。 ...继续访问目标检测深度学习方法综述(二)0.前言 本来准备将一些模型汇总成一篇博客的,但是不知道为啥写了一万多字之后这博客草稿就保存不了了,所以我将剩下的部分放到这篇博客中来(奇怪的BUG )前文地址: 我们接着上篇文章的章节来好吧。 SSD算法 SSD 算法是 Faster RCNN 和 YOLO 的结合: 采...继续访问配置和运行CenterNet时踩过的坑在运行CenterNet时遇到的一些问题继续访问简单聊聊centerNet:将目标当成点-1.论文CenterNet:将目标视为点 《Objects as Points》 Date:20190417 Author:德克萨斯大学奥斯汀分校 和 UC 伯克利 ariXiv: github: ...继续访问CenterNet配置及问题详解作者原版github: Install 按照readme文件夹中的操作: 0.创建一个虚拟环境 conda create --name CenterNet python=创建一个名为CenterNet的虚拟环境 source activate CenterNet #激活...继续访问热门推荐 CenterNet算法笔记论文:Objects as Points 论文链接: 代码链接: 这篇CenterNet算法也是anchor-free类型的目标检测算法,基于点的思想和CornerNet是相似的,方法上做了较大的调整,整体上给人一种非常清爽的感觉,算法思想很朴素、直接,而且...继续访问论文阅读笔记 | 目标检测算法——CenterNet算法如有错误,恳请指出 文章目录1. Introduction2. keypoint detection offset size overall loss3. Objects as Points4. Result paper:Objects as Points Source code: 思想: 目标检测将对象识别为图像中与轴对齐的框。大多数成功的物体检测.继续访问目标检测Anchor free方法总结:YOLOv1、CornerNet、CenterNet、FCOSYOLOv1(2016): CornerNet(2018): CenterNet(2019): FCOS(2019): 什么是Anchor free方法? Anchor free是相对于Anchor base而言的一种目继续访问Anchor-free目标检测系列3:CenterNet Object as pointsCenterNet(一个中心点) CenterNet: Objects as Points () 论文是由德克萨斯大学奥斯汀分校和UC 伯克利学者共同提出的真正意义上anchor-free的算法。与之前介绍的CornerNet系列算法不同,CenterNet仅仅检测目标中心点,没有后续的角点配对及NMS后处理操作,检测速度和精度相比于one-stage和two...继续访问扔掉anchor!真正的CenterNet——Objects as Points论文解读前言 anchor-free目标检测属于anchor-free系列的目标检测,相比于CornerNet做出了改进,使得检测速度和精度相比于one-stage和two-stage的框架都有不小的提高,尤其是与YOLOv3作比较,在相同速度的条件下,CenterNet的精度比YOLOv3提高了4个左右的点。 CenterNet不仅可以用于目标检测,还可以用于其他的一些任务,如肢体识别或者...继续访问深度学习计算机视觉机器学习写评论评论收藏点赞踩分享
美乐淘淘
anchorfree只有一个输出吗首先说fpn,anchor free的做法相当于feature map的每个位置只能输出一个框,可以想象,如果没有fpn这种多层级的表示,如果最终的feature map down sample的倍数是8或者16,那么可能会有很多物体的中心点落在同一格子中。
yoyoubaobao
论文:A Dual Weighting Label Assignment Scheme for Object Detection
[图片上传失败...(image-26dcc3-25)]
Anchor作为目标检测器训练的基础单元,需要被赋予正确的分类标签和回归标签,这样的标签指定(LA, label assignment)过程也可认为是损失权重指定过程。对于单个anchor的cls损失计算,可以统一地表示为:
[图片上传失败...(image-2e24aa-25)]
和 为正向权重和反向权重,用于控制训练的方向。基于这个设计,可以将LA方法分为两个大类:
[图片上传失败...(image-372b16-25)]
为了给检测器提供更多的监督信息,论文提出了新的LA方法DW(dual weighting),从不同的角度单独计算 和 并让其能够互补。此外,为了给权重计算函数提供更准确的reg分数,论文还提出了新的bbox精调操作,预测目标的边界位置并根据对应的特征产生更准确的精调信息。
由于NMS的存在,检测器应该预测一致的bbox,既有高分类分数也有准确的位置定位。但如果在训练时平等地对待所有的训练样本,而cls分数越高的预测结果的reg位置不一定越准确,这往往会导致cls head与reg head之间就会存在不一致性。为此,Soft LA通过加权损失来更柔和地对待训练样本,加强cls head与reg head的一致性。基于Soft LA,anchor的损失可以表示为:
[图片上传失败...(image-51f384-25)]
其中 为预测的cls分数。为一致性更高的预测结果分配更大的 和 ,能够使得网络专注于学习高质量的预测结果,减轻cls head与reg head的不一致问题。
[图片上传失败...(image-98093b-25)]
当前的方法直接将 设置为 ,主要关注如何定义一致性以及如何将其集成到损失权重中。表1总结了一些方法对 和 的计算公式,这些方法先定义用于度量一致性的指标 ,随后将 作为不一致性的度量指标,最后添加缩放因子将指标集成到损失权重中。 上述方法的 和 都是高度相关的,而论文认为pos和neg权重应该以prediction-aware的方式单独设置,具体如下:
通过上述定义, 对于pos权重相似的这种模棱两可的anchor,就可以根据不同的neg权重得到更细粒度的监督信息 。
[图片上传失败...(image-535eff-25)]
DW方法的整体流程如图2所示,先根据中心点距离来为每个GT构造候选正样本集,其余的anchor为候选负样本。由于负样本的统计信息十分混乱,所以不参与权重函数的计算。候选正样本会被赋予三个权重 、 以及 ,用于更有效地监督训练。
pos权重需要反映预测结果对检测性能的重要性,论文从目标检测的验证指标来分析影响重要性的因素。在测试时,通常会根据cls分数或cls分数与IoU的结合对单分类的预测结果进行排序,从前往后依次判断。正确的预测需满足以下两点:
上述条件可认为是选择高ranking分数以及高IoU的预测结果,也意味着满足这两个条件的预测结果有更大概率在测试阶段被选择。从这个角度来看,pos权重 就应该与IoU和ranking分数正相关。首先定义一致性指标 ,用于度量两个条件的对齐程度:
[图片上传失败...(image-aac9d-25)]
为了让不同anchor的pos权重的方差更大,添加指数调节因子:
[图片上传失败...(image-3a2156-25)]
最终,各anchor的pos权重会根据对应GT的候选anchor的pos权重之和进行归一化。
pos权重虽然可以使得一致的anchor同时具有高cls分数和高IoU,但无法区分不一致anchor的重要程度。如前面图1所示,anchor D定位校准但分类分数较低,而anchor B恰好相反。两者的一致性程度 一致,pos权重无法区分差异。为了给检测器提供更多的监督信息,准确地体现anchor的重要程度,论文提出为两者赋予更清晰的neg权重,具体由以下两部分构成。
根据COCO的验证指标,IoU不满足阈值的预测结果一律归为错误的检测。所以,IoU是决定achor为负样本的概率的唯一因素,记为 。由于COCO使用的IoU阈值来计算AO,所以 应该满足以下规则:
[图片上传失败...(image-639b1e-25)]
任意 上单调递减的函数都可以作为 中间部分。为了简便,论文采用了以下函数:
[图片上传失败...(image-fa54fb-25)]
公式6需要穿过点 和 ,一旦 确定了,参数 和 可通过待定系数法确定。
[图片上传失败...(image-83052a-25)]
图3展示了不同 下的 曲线。
在推理时,ranking队列中靠前的neg预测结果虽然不会影响召回率,但会降低准确率。为了得到更高的性能,应该尽可能地降低neg预测结果的ranking分数。所以在训练中,ranking分数较高的neg预测结果应该比ranking分数较低的预测结果更为重要。基于此,定义neg预测结果的重要程度 为ranking分数的函数:
[图片上传失败...(image-1f95aa-25)]
最终,整体的neg权重 变为:
[图片上传失败...(image-851912-25)]
与 负相关,与 正相关。对于pos权重相同的anchor,IoU更小的会有更大的neg权重。在兼容验证指标的同时, 能给予检测器更多的监督信息。
pos权重和neg权重都以IoU作为输入,更准确的IoU可以保证更高质量的训练样本,有助于学习更强的特征。为此,论文提出了新的box精调操作,基于预测的四条边的偏移值 进行下一步的精调。
[图片上传失败...(image-98246a-25)]
考虑到目标边界上的点有更大的概率预测准确的位置,论文设计了可学习的预测模块,基于初步的bbox为每条边生成边界点。如图4所示,四个边界点的坐标定义为:
[图片上传失败...(image-a8361b-25)]
其中, 为精调模块的输出。最后,结合边界点的预测和精调模块的输出,最终精调后的anchor偏移 为:
[图片上传失败...(image-935c8b-25)]
DW策略可直接应用到大多数的dense检测器中。论文将DW应用到FCOS中并进行了少量修改,将centerness分支和分类分支合并成cls分数,网络的损失为:
[图片上传失败...(image-5d0fc-25)]
[图片上传失败...(image-1a38af-25)]
这里的 跟公式3是同一个, 和 分别为候选anchor数和非候选anchor数。
[图片上传失败...(image-20568e-25)]
平衡超参数对性能的影响。
[图片上传失败...(image-14e2fa-25)]
候选anchor选择方法对性能的影响。第一种为中心点的距离阈值,第二种选择最近的几个,第三种为距离权重与pos权重乘积排序。
[图片上传失败...(image-74467a-25)]
neg权重计算方式对比。
[图片上传失败...(image-8baa09-25)]
LA研究之间的对比。
[图片上传失败...(image-9d2740-25)]
与SOTA检测算法对比。
论文提出自适应的label assignment方法DW,打破了以往耦合加权的惯例。根据不同角度的一致性和非一致性指标,动态地为anchor分配独立的pos权重和neg权重,可以更全面地监督训练。此外,论文还提出了新的预测框精调操作,在回归特征图上直接精调预测框。
论文名称:Rich feature hierarchies for accurate object detection and semantic segment
论文地址: 前置文章:10/16、10/17、10/18 本文提出了Point Fractal Network(PF-Net),旨在从不完整的点云数据中
对于目标检测方向并不是特别熟悉,本文记录一下RCNN, fast-RCNN, faster-RCNN, mask-RCNN这4篇有关目标检测的论文笔记和学习心得
热门频道首页博客研修院VIPAPP问答下载社区推荐频道活动招聘专题打开CSDN APPCopyright © 1999-2020, CSDN.NET, All
论文原文: YOLO(you only look once)是继RCNN、faster-RCNN之后,又一里程碑式的目标检测算法。yolo在保持不错的准确度的