当前位置: 首页 > news >正文

【深度学习实战(44)】Anchor based and Anchor free(无锚VS有锚)

1 anchor-based

在这里插入图片描述

深度学习目标检测通常都被建模成对一些候选区域进行分类和回归的问题。在单阶段检测器中,这些候选区域就是通过滑窗方式产生的 anchor;在两阶段检测器中,候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗方式产生的 anchor 进行分类和回归。

基于Anchor based 的目标检测

  • 二阶段目标检测算法: Faster RCNN、Mask RCNN、Cascade RCNN
     - 在特征图的每一个点生成大小比例不一的anchor,然后通过RPN对anchor进行筛选
  • 单阶段目标检测算法: YOLO V2~V4、SSD、RetinaNet
     - 把原图分为若干个网格,然后通过聚类的方法,每个网格当中得到不同尺寸的anchor,然后再和真实框做一个IOU的比较,得到训练目标

2 anchor-free

在这里插入图片描述

anchor-free是通过另外一种手段来解决检测问题的。同样分为两个子问题,即确定物体中心和对四条边框的预测。预测物体中心时,将中心预测融入到类别预测的 target 里面,也可以预测一个 soft 的 centerness score。对于四条边框的预测,则比较一致,都是预测该像素点到 ground truth 框的四条边距离,不过会使用一些 trick 来限制 regress 的范围。

基于Anchor free 的目标检测

  • 关键点检测方法

    • (1)CornerNet: 通过检测对角(左上、右下)代替anchor box 和 corner pooling layer更好的定位对角,然后组合。
    • (2)ExtremeNet: 对CornerNet算法的改进,通过串联多个Hourglass模块对每个目标预测5个关键点(上、下、左、右四个极点和一个中心点),然后组合。
      在这里插入图片描述
  • 通过目标物体的中心点来定位

    • (1) CenterNet和FCOS: 通过预测物体中心点及其到边框的距离来表征目标框
      在这里插入图片描述

3 Anchor free 和 Anchor base 的区别

(1)分类方式不同 : 正负样本的选择方式(核心区别)

  • 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做回归
在这里插入图片描述
如图(b)RetinaNet回归的是anchor box和gt的4个偏移量。
如图(c)FCOS回归的是中心点到目标四条边的距离。

4 优缺点

anchor-based
anchor based的优点是可以产生密集的anchor box,使得网络可以直接进行目标分类和边界框回归,提高了目标召回能力,尤其对小目标检测有明显的提升。

anchor based的缺点是需要设定很多超参数,如尺度、长宽比等,这些参数很难设计,并且会影响检测性能。另外,anchor based的方法也会产生很多冗余的框,增加了计算量和内存消耗。

anchor-free
anchor free的优点是不需要预设anchor,只需要对不同尺度的特征图的目标中心点和宽高进行回归,减少了耗时和算力。同时,anchor free的方法也可以避免一些由于anchor设置不合理导致的漏检或重复检测问题。

anchor free的缺点是由于每个位置只预测一个框,可能会导致一些重叠或遮挡区域无法被检测到。另外,anchor free的方法也需要一些特殊的损失函数或结构来提高精度和稳定性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鸿蒙笔记导航栏,路由,还有axios
  • Java基础概念
  • UDP通讯实现
  • 速盾:cdn 缓存图片
  • Vue基础知识:Vue3.3出现的defineOptions,如何使用,解决了什么问题?
  • 2. 年龄问题
  • 高效利用iCloud指南
  • Python中的类和对象:如何定义一个类以及如何创建类的实例(对象)
  • 网络安全合规建设
  • Nginx在线安装与启动
  • Stable Diffusion图像的脸部细节控制——采样器全解析
  • 【基于R语言群体遗传学】-13-群体差异量化-Fst
  • 移动应用开发课设——原神小助手文档(2)
  • nvidia driver和cuda版本较低,ubuntu系统更新nvidia驱动的方法(对于小白最快最最保险的方法)
  • 近红外光谱脑功能成像(fNIRS):2.实验设计、指标计算与多重比较
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Angular6错误 Service: No provider for Renderer2
  • co模块的前端实现
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES6之路之模块详解
  • java正则表式的使用
  • java中的hashCode
  • Vue 2.3、2.4 知识点小结
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 闭包--闭包之tab栏切换(四)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 精彩代码 vue.js
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 那些年我们用过的显示性能指标
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端面试之闭包
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 湖北分布式智能数据采集方法有哪些?
  • ​香农与信息论三大定律
  • #define用法
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #Z2294. 打印树的直径
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (AngularJS)Angular 控制器之间通信初探
  • (八)Flask之app.route装饰器函数的参数
  • (二)原生js案例之数码时钟计时
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (六)c52学习之旅-独立按键
  • (算法)大数的进制转换
  • (转)原始图像数据和PDF中的图像数据
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .Net Core和.Net Standard直观理解
  • .NET 依赖注入和配置系统
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉