深度学习系列之Anchor based 和 Anchor free 目标检测方法

这篇具有很好参考价值的文章主要介绍了深度学习系列之Anchor based 和 Anchor free 目标检测方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

深度学习系列之Anchor based 和 Anchor free 的目标检测方法

  ——致敬各路网络无名大神
  (持续更新中…)



一、Anchor 概述

  目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边界从而更准确地预测目标的真实边界框(ground-truth bounding box)。目标检测算法会判断这些区域是否有目标,是分类任务。调整这些区域到目标真实框是回归任务。
  1. anchor的定义
   anchor也叫做锚,预先设置目标可能存在的大概位置,然后再在这些预设边框的基础上进行精细化的调整。而它的本质就是为了解决标签分配的问题。

  2. anchor 的生成
   锚作为一系列先验框信息,其生成涉及以下几个部分:
   (1)用网络提取特征图的点来定位边框的位置;
   (2)用锚的尺寸来设定边框的大小;
   (3)用锚的长宽比来设定边框的形状。

  3.引入anchor的目的
   通过设置不同尺度,不同大小的先验框,就有更高的概率出现对于目标物体有良好匹配度的先验框约束,在锚框的约束下使模型的精准度和召回率都有了质的提升。

二、基于Anchor based 的目标检测

   在同一个像素点上,生成多个不同大小和比例的候选框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标,然后通过anchor中有没有认识的目标和目标框偏离参考框的偏移量完成目标检测,不再需要多尺度遍历滑窗,极大的提升了速度。两阶段和单阶段目标检测算法均使用。
   二阶段目标检测算法: Faster RCNN、Mask RCNN、Cascade RCNN
  在特征图的每一个点生成大小比例不一的anchor,然后通过RPN对anchor进行筛选
  单阶段目标检测算法: YOLO V2—V4、SSD、RetinaNet
  把原图分为若干个网格,然后通过聚类的方法,每个网格当中得到不同尺寸的anchor,然后再和真实框做一个IOU的比较,得到训练目标
  后处理阶段: 即 NMS(非极大值抑制),通过计算Bbox间的IOU来删除同个目标的重复检测框。
  1.使用anchor的弊端:
  (1)anchor太多,每一个都进行IOU计算,导致运算复杂度增大,产生的参数较多
  (2)anchor的数量相比目标的个数多很多,只有很少部分成为正样本,导致训练正负样本不平衡问题,训练效率低下
  (3)预先设定的anchor尺寸需要根据数据集的不同做改变,预置的锚点大小、比例在检测差异较大物体时不够灵活
  (4)依赖太多的手动设计(长宽比,尺度大小,以及anchor的数量)
  小结:
  1.二阶段算法精度高的原因:
  由于两阶段方法对锚点的细化比一阶段方法多几倍,两阶段方法的结果更准确,而一阶段方法的计算效率更高
  2. 各阶段作用
  训练阶段: 用anchor和真实框做一个编码得到训练目标,预测阶段: 通过anchor和预测出来的偏移量,然后解码得到一个预测框

三、基于Anchor free 的目标检测

   将目标检测转化为关键点检测问题,不用在训练之前对当前训练数据聚类出多个宽高的anchor参数了,基于Anchor-Free的目标检测算法有两种方式:

1.关键点检测方法

   通过定位目标物体的几个关键点来限定它的搜索空间,然后通过角点组合预测中心到边界的距离,形成检测框。
选择角点的原因:因为角点相比中心点更有利于训练的,比如说左上角的点,只会和两条边相关,而中心点要和四条边相关。
深度学习系列之Anchor based 和 Anchor free 目标检测方法

   经典论文:
   (1)CornerNet: 通过检测对角(左上、右下)代替anchor box 和 corner pooling layer更好的定位对角,然后组合。
   文章内容: 两个特征检测器,分别检测左上、右下角点,通过Heatmaps找到角点的位置,然后对角点进行分类,再通过Embeddings(同一目标的一对角点的相似度高,不同目标的一对角点的距离大)将这两部分的点处于相同部分的点进行一个组合,从而形成检测框。
   (2)ExtremeNet: 对CornerNet算法的改进,通过串联多个Hourglass模块对每个目标预测5个关键点(上、下、左、右四个极点和一个中心点),然后组合。

2.通过目标物体的中心点来定位

   此类方法在构建模型时将其看作一个点,即目标框的中心点。直接检测物体的中心区域和边界信息,将分类和回归解耦为两个子网格。
缺点:同一个类别中的某些物体的GT中心点,在下采样时会挤到一块,中心点重叠了,结果可能只能检测到一个目标了
深度学习系列之Anchor based 和 Anchor free 目标检测方法

   经典论文:
   (1) CenterNet和FCOS: 通过预测物体中心点及其到边框的距离来表征目标框
  小结
   1.两种Anchor free 方法的区别:
   相同点: 建立在相同的鲁棒关键点估计网络上
   不同点: 不同于CornerNet和 ExtremeNet 在关键点检测后进行组合分组(降低了算法的速度),CenterNet 仅为每个对象提取一个中心点,不需要分组和后处理
   2.anchor free的方法能够在精度上媲美anchor based的方法的原因:
一是FPN,对尺度起到了很好的弥补,不需要用不同尺度的anchor来锁定目标尺寸再进行回归;二是FocalLoss,对中心区域的预测有很大帮助。
   3.使用anchor based和anchorfree算法使用时的选择
如果在训练过程中选择的正负样本保持一致,此时无论是采用基于anchor进行回归还是基于关键点进行回归,得到的检测结果是相近的

四、Anchor free 和 Anchor base 的区别

   1. 两种方式的本质区别在于分类方式不同(如何定义正负样本)以及回归的方式,即两个区别:
   (1)分类方式不同 : 正负样本的选择方式(核心区别)
深度学习系列之Anchor based 和 Anchor free 目标检测方法
   Anchor based: 如RetinaNet基于anchor的回归,首先计算来自不同尺度的anchor box与gt的IoU来确定正负样本;对于每个目标在所有IoU大于阈值k的anchor box中,选择最大的作为正样本,所有IoU小于阈值q的anchor box作为负样本,其余忽略不计;最后针对正样本的anchor回归相对偏移量
   Anchor free: 如FCOS基于center做回归,使用空间和尺度约束将anchor点分配到不同尺度上,通过判断特征图上的点是否落入gt中来确认正负样本,即将物体边框内的所有位置都定义为正样本;最后通过4个距离值和1个 中心点的分数来检测物体。
   (2)回归方式不同: 基于anchor还是point做回归
深度学习系列之Anchor based 和 Anchor free 目标检测方法
   如图(b)RetinaNet回归的是anchor box和gt的4个偏移量。
   如图(c)FCOS回归的是中心点到目标四条边的距离。

   2. 基于滑动窗口的目标检测器有点浪费,因为他们需要枚举出所有可能的对象位置和尺寸
  小结
   1. 基于anchor做位置回归,那么检测精度会受限于anchor的宽高设计,如上图第一行,如果anchor设计的过小,与gt计算IoU时会因为重叠率小于阈值而被作为负样本。造成的影响不仅包括了正样本个数的减少,还有负样本噪声的增加。


相关文献:

[1] CornerNet
[2] ExtremeNet
[3] Hourglass网络
[4] FCOS V1
[5] FCOS V2
[6] Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Sele

推荐阅读

Anchor-free目标检测综述 – Keypoint-based篇
基于密集点检测的anchor-free算法总结
目标检测中的anchor-base与anchor-free
目标检测算法——anchor free
12 种 Anchor-free 目标检测综述 – Keypoint-based 篇
Anchor-free目标检测 | 工业应用更友好的新网络(附大量相关论文下载)
awesome-anchor-free-object-detection文章来源地址https://www.toymoban.com/news/detail-438942.html

到了这里,关于深度学习系列之Anchor based 和 Anchor free 目标检测方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 03目标检测-传统方法与深度学习算法对比

    目录 一、目标学习的检测方法变迁及对比     二、深度学习目标检测算法基本流程 三、传统目标检测算法VS深度学习目标检测算法         “目标检测“是当前计算机视觉和机器学习领域的研究热点。从Viola-Jones Detector、DPM等冷兵器时代的智慧到当今RCNN、YOLO等深度学习土

    2024年02月07日
    浏览(47)
  • 如何快速水出人生中的第一篇SCI系列:深度学习目标检测算法常用评估指标——一文读懂!

    详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先! 截止到发稿,B站YOLOv8最新改进系列的源码包已更新了22种! 排列组合2-4种后,约有6000-7000种! 部分改进教程视频在这:详细的改进

    2024年02月07日
    浏览(49)
  • 三种目标检测方法(基于传统数字图像处理的识别方法、基于传统机器学习的识别方法和基于深度学习的识别方法)的区别

    问题描述:图像检测分为了基于传统数字图像处理的识别方法、基于传统机器学习的识别方法和基于深度学习的识别方法,但是有时迷惑三者的区别是什么呢? 问题解答: 第一,基于传统数字图像处理的识别方法和其他两者的区分在于基于传统图像处理方法没有损失函数,

    2024年02月12日
    浏览(41)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算

    单节段目标检测算法中:预选框的设定直接影响最终的检测精度 众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置文件config中的预设还是很重要 yolo算法作为one-stage领域的佼佼者,采用anchor-based的方法进行目标检测,使用不同尺度的anchor直接回归目标

    2024年02月03日
    浏览(93)
  • 【论文阅读系列】NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA) 计算机视觉

    计算机视觉 参考:博客1 知乎2 在这里进行纪录分享,这是有用的资料,避免之后再寻找相当麻烦。 小目标检测是一个非常具有挑战性的问题,因为小目标只包含几个像素大小。作者证明,由于缺乏外观信息,最先进的检测器也不能在小目标上得到令人满意的结果。作者的主

    2024年02月05日
    浏览(58)
  • 遥感目标检测(3)-DAL(Dynamic Anchor Learning for Object Detection)

    目录 一、概述 二、背景 三、建议 1、旋转RetinaNet 2、动态锚框分布 3、匹配敏感损失  四、实验         由于选择正样本锚框进行回归,不一定能够定位真实的GT,而部分负样本回归甚至可以回归到真实的GT,说明相当多的负样本锚框有着准确定位的能力,这说明IoU进行回归

    2024年02月16日
    浏览(46)
  • 【深度学习目标检测】七、基于深度学习的火灾烟雾识别(python,目标检测,yolov8)

    YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。 YOLOv8采用了Darknet-53作为其基础网络架构。Darknet-53是一

    2024年04月13日
    浏览(61)
  • yolov8(目标检测、图像分割、关键点检测)知识蒸馏:logit和feature-based蒸馏方法的实现

    在目标检测中,知识蒸馏的原理主要是利用教师模型(通常是大型的深度神经网络)的丰富知识来指导学生模型(轻量级的神经网络)的学习过程。通过蒸馏,学生模型能够在保持较高性能的同时,减小模型的复杂度和计算成本。 知识蒸馏实现的方式有多种,但核心目标是将

    2024年04月28日
    浏览(85)
  • 【深度学习】(四)目标检测——上篇

    上一章介绍了图像分类,这一章来学习一下目标检测上篇。简单来说,需要得到图像中感兴趣目标的类别信息和位置信息,相比于分类问题,难度有所提升,对图像的描述更加具体。在计算机视觉众多的技术领域中,目标检测(Object Detection)也是一项非常基础的任务,图像分

    2024年02月02日
    浏览(44)
  • 【深度学习】(五)目标检测——下篇

    上一章介绍了目标检测上篇,主要为两阶段检测的R-CNN系列。这一章来学习一下目标检测下篇。R-CNN系列算法面临的一个问题,不是端到端的模型,几个构件拼凑在一起组成整个检测系统,操作起来比较复杂。而今天介绍的YOLO算法,操作简便且速度快,效果也不错。YOLO算法是

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包