2 anchor-base和anchor_free两者的优缺点

2023-05-16

anchor-base和anchor_free两者的优缺点

  • anchor-base和anchor_free两者的优缺点
    • 一、什么是anchor
    • 二、anchor-base和anchor-free的区别
    • 三、anchor-free和single anchor
    • 三、anchor-base和anchor-free的优缺点
  • 参考

一、什么是anchor

从字面的意思解释,anchor就是船锚,用来固定船的位置。

而在计算机视觉中的anchor和字面意思很相近,被称为锚点或者锚框,进而在目标检测中经常出现的anchor box就是锚框,表示固定的参考框。

目标检测是"在哪里有什么"的任务,在这个任务中,目标的类别不确定、数量不确定、位置不确定、尺度不确定,传统非深度学习方法如VJ和DPM,和早期深度学习方法如OverFeat,都要金字塔多尺度+遍历滑窗的方式,逐尺度逐位置判断"这个尺度的这个位置处有没有认识的目标",非常笨重耗时。

anchor的概念最早出现在FasterRCNN的论文中,首先预设一组不同尺度不同位置的固定参考框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标,anchor技术将问题转换为"这个固定参考框中有没有认识的目标,目标框偏离参考框多远",不再需要多尺度遍历滑窗,极大的提升了速度。同时anchor的存在,也解决不同物体的中心点落到一个grid cell中的问题。

RPN的运动机制

二、anchor-base和anchor-free的区别

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

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

anchor-free的方法能够在精度上媲美 anchor-based的方法,最大的功劳应该归于 FPN,其次归于Focal Loss。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补,FocalLoss则是对中心区域的预测有很大帮助。

三、anchor-free和single anchor

上面提到的anchor-free和每个位置有一个正方形anchor在形式上可以是等价的,也就是利用FCN的结构对feature map的每个位置预测一个框(包括位置和类别)。但anchor-free仍然是有意义的,我们也可以称之为anchor-prior-free。另外这两者虽然形式上等价,但是实际操作中还是有区别的。在anchor-based的方法中,虽然每个位置可能只有一个anchor,但预测的对象是基于这个 anchor来匹配的,而在anchor-free的方法中,通常是基于这个点来匹配的。

三、anchor-base和anchor-free的优缺点

anchor-base的优点在于有着更高的精度,所提取到的特征更丰富。但是two stage阶段产生预选框所需要的耗时和算力大大增大,尽管one stage阶段在一定程度上解决了这个问题,将检测器整合成end-to-end的形式,通过不同特征尺度的每个特征点都进行预设不同尺度不同大小的三个anchor,缩减了RPN的步骤,提升了检测速度,尽管近几年one stage发展迅速,但精度达不到two stage的SOTA程度。

和anchor-base进行比较,anchor-free最大的优势就在于其检测器的检测速度,因为不需要预设anchor,只需要对不同尺度的特征图的目标中心点和宽高进行回归,极大的减少了耗时和需要的算力。其缺点则是在于它的精度并不能达到anchor-base方法的SOTA。近两年还提出了一些结合anchor-base和anchor-free的检测器。

我觉得目标检测就是这样一个发展过程,从最初的RCNN到现在各种方法百花齐放,但最终目的如果没法落地的话,也仅仅是实验室的数据,anchor-free作为一个未来的发展方向,更偏向于实际落地,在保证精度的同时,提升速度,这是未来目标检测发展所需要的。


参考

1、anchor_based-anchor_free object detectors

2、一文读懂anchor-base和anchor-free

3、物体检测的轮回: anchor-based 与 anchor-free

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2 anchor-base和anchor_free两者的优缺点 的相关文章

  • 无效写入——Valgrind

    您好 我在我的 c 程序中遇到了 munmap chunk invalid point 错误 主要问题是 我什至不确定指针可能变得无效的所有方式是什么 我已经检查了我的代码中是否有没有足够空间调用的字符串 但没有发现任何看起来会超出范围的情
  • 如何通过 JavaScript 设置浏览器选项卡的锚点目标名称?

    当从外部超链接调用我的网站时 如果它已经打开 它将在同一浏览器选项卡中重新打开 这可以通过在超链接的 HTML 中指定适当的目标属性来实现 a href http my website org target self a 但是 如果在未指定
  • 有没有办法滚动到锚点而不是用javascript跳转(比如平滑滚动)

    我有一个带有编号锚标记的大文档 如下所示 还有一个文本框 用于输入数字以转到使用的锚点window location hash 我还使用箭头键转到下一个或上一个锚点 我想滚动到锚点以便给出一些方向感 a some text a some t
  • 链接到没有锚标记的网页上的任意内容

    我正在寻找一种方法来链接到网页上特定范围的单词 图像或其他任意内容 一种替代方法是在页面上引入大量锚点 但我可以接受需要 JavaScript 的解决方案 最好也是突出目标内容的一种 如果页面内容已被修改并且链接不再有效 那么最好有某种保护
  • javascript 问题:返回 false 不起作用

    嘿 我的程序中有一个链接 如图所示 onclick 它调用函数clearform 如下所示 网页代码 a class button href Cancel Cancel a JavaScript 代码 function clearForm
  • 当锚标记仅触发 jQuery 操作而不重定向用户时,可以替代

    我的页面上有许多锚标记 它们仅触发同一页面上的 jQuery 操作 不会将用户重定向到另一个位置 这是锚标记的正常预期行为 我不想在我的应用程序中为每个操作都提供静态 URL 但是 我也不喜欢每次用户单击其中一个时都将其发送到页面顶部 a
  • 如何在react-router中创建锚标记?

    我在内部使用react boilerplate 3 4 0 和react router来进行路由 我尝试创建一个链接 当我点击它时 我希望滚动到 divid anchor tag 即使我使用 Link 组件而不是 标记 它也只是滚动到页面顶
  • 在反应对话框模型中打开 iframe 时,锚标记 href 不起作用

    我们开设了一个iframe在模式对话框中 在里面iframe我们正在加载一个document 该文档也是 html 页面 这 a 文档中的标签未导航至id他们中提到的href 只是来自的一个样本html文档 下面是 a 例子 a href
  • PaintWorklet 无法在锚标记内工作

    当 Paint Worklet 放置在锚标记内时 它无法工作 示例站点 https codepen io lonekorean pen aYoJPv https codepen io lonekorean pen aYoJPv 上面的例子
  • 如何链接相同或不同文件夹中的html页面?

    如果 html 页面位于相同或不同的文件夹中 而无需编写完整路径 如何链接到它们 在同一文件夹中 只需使用文件名 a href thefile html my link a 在父文件夹的目录中 a href thefile html my
  • 使用 free() 时“检测到堆损坏”

    我对 C 还很陌生 这实际上是我第一次使用指针进行作业 我无法弄清楚这个错误 这是我的代码 void str rv char c int i len str ln c char rev char calloc len sizeof char
  • 为什么我的一些 HTML 内部链接有效,而另一些则无效?

    救命 我对这个世界完全陌生 我正在首页上制作一个菜单栏 并链接到网站上的其他页面 以下是代码示例 ul li a href About a li li a href The Therapist a li li a href Pay what
  • 如何获取jquery锚点href值

    jQuery document ready function a change status click function var status id a val alert status id return false HTML a hr
  • 将访问过的链接颜色设置为未访问过的链接的颜色(P.S.不是常见问题)

    我需要将 a visited CSS 设置为whatever正常 a 设置的颜色 我希望能够告诉浏览器的是 对于已访问的链接 使用与未访问的链接相同的颜色 无论它是什么颜色 我需要这样做不指定特定颜色 例如 如果出现一些奇怪的浏览器 使用
  • Angular 2 - 锚链接到当前页面上的元素[重复]

    这个问题在这里已经有答案了 如果问题标题不清楚 我有一个带有某些 链接 部分的网页 因此有人可以单击该链接并转到同一模板上的元素 这并不一定意味着更改 URL 我尝试过的要点 a href Section B a a href p Cont
  • 为什么C中释放的结构体仍然有数据?

    当我运行这段代码时 include
  • 在 Ruby on Rails 中获取控制器中 URL 的锚点部分

    有没有办法在控制器中获取 URL 的锚点部分 示例 如果我输入http www foo com bar anchor123 http www foo com bar anchor123我可以在我的控制器中获取字符串anchor123吗 在
  • CodeIgniter 锚点错误:在此服务器上找不到 URL

    我花了几个小时来制作一个简单的锚链接 但没有成功 我的控制器是 class Welcome extends CI Controller public function index this gt load gt view template
  • free() 是否跟随指针?

    我确信不是 但也许其中有黑魔法 所以这是我的问题 如果我有这样的结构 struct mystr char strp unsigned int foo 我为它分配了内存并想稍后释放它 我必须做吗 free mystr var gt strp
  • Html 锚文本格式

    这可能是一个基本问题 但我使用的是 HTML 锚点 锚点的文本作为多行段落 我有 br 锚文本部分中当前无法识别的标签 所有文本在输出中都在一行中 锚标签代码如下 li a href title View all Printed Docum

随机推荐