| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【目标检测】19、FCOS: Fully Convolutional One-Stage Object Detection -> 正文阅读 |
|
[人工智能]【目标检测】19、FCOS: Fully Convolutional One-Stage Object Detection |
文章目录论文:FCOS: Fully Convolutional One-Stage Object Detection 代码:https://github.com/aim-uofa/AdelaiDet/tree/master/configs/FCOS-Detection 出处:ICCV2019 FCOS 贡献:
一、背景当时主流的目标检测算法,如 Faster RCNN、SSD、YOLOv2/v3 等,都是基于 proposal 或 anchor 的方法,使用这些预定义的 anchor 是这些方法成功的主要原因。但这些方法也有一些缺陷:
基于 FCN 的方法在语义分割、关键点检测、深度估计等领域都取得了较好的效果,同样作为密集预测任务,目标检测由于有 anchor 所以一直不能实现端到端的单阶段预测。 所以研究者就提出了问题:目标检测能通过逐点预测来实现吗? 在 FCOS 之前,也有一些 FCN-based 方法用于解决目标检测的问题,如 Dense-Box 和 UnitBox。这些结构在输出的特征图上,直接预测一个 4D 向量 + class 类别,如图 1 左侧所示,4D 向量表示从某个点到 bbox 的 4 个边的距离。 为了解决 bbox 大小不同的问题,DenseNet 将输入图像 resize 到相同大小,所以就需要使用金字塔的特征来进行目标检测。且这些方法难以解决单个点对应多个目标的问题,如图 1 右侧所示。更多的用于文字检测等目标无相交的情况,难以解决目标高度相交的情况。 二、方法FCOS 方法是第一个使用逐个像素点来预测的目标检测方法,并且提出了 centerness 分支,来抑制 low-quality bbox 并提升检测效果。 2.1 全卷积单阶段目标检测器1、训练样本构建 假设:
对于特征图 F i F_i Fi? 中的任意位置 ( x , y ) (x, y) (x,y),可以将其推回到该层特征图的输入特征图的位置 ( ? s 2 ? + x s , ? s 2 ? + y s (\lfloor \frac{s}{2} \rfloor + xs, \lfloor \frac{s}{2} \rfloor + ys (?2s??+xs,?2s??+ys。 本文提出的检测器是直接回归每个位置上的目标的bbox,也就是将每个像素位置看做一个训练样本,而非将每个 anchor box 看做训练样本。(anchor-based 检测器是回归每个 anchor 和真实框的偏移) 如何判定正负样本:
回归的目标:
2、网络输出 在 backbone 的后面,连接了 4 层卷积层,来进行分类和回归,并且由于回归的目标总数正的,所以,作者在回归分支的后面使用 e x p ( x ) exp(x) exp(x) 来将任何 ( 0 , ∞ ) (0, \infty) (0,∞) 的实数进行映射。
分类器:C 个二分类分类器 优势:输出参数少
3、Loss 函数
4、推理 FCOS 的推理是很直接的:
2.2 Multi-level Prediction with FPN for FCOS下面介绍 FCOS 可能产生的两个问题,但可以通过多尺度特征 FPN 解决的: 1、特征图分辨率大幅降低(如 16x)可能产生的低 Recall 在 anchor-based 检测器中,由于降低分辨率导致的低 recall 可以通过使用低 IoU 阈值来得到补偿。 但对于 FCOS,可能第一眼会觉得低分辨率会造成其 recall 比 anchor-based 方法低的原因在于其不可能恢复在最终的特征图上没有对应sample的目标。 但在表 1 中,作者也验证了 FCOS 能达到和 RetinaNet 等方法甚至更好的 recall,而且通过使用 FPN,能进一步提高。 2、真值框的重合可能导致训练时候的样本模棱两可 在训练过程中,到底该位置应该回归哪个框呢? 这个模棱两可的问题可能降低 FCN based 检测器。 本文也验证了可以很好的解决该问题: 和 FPN 一样,本文作者也在不同分辨率的特征图上来预测不同尺度的目标,使用了 5 个 level 的特征图 P 3 , P 4 , P 5 , P 6 , P 7 {P_3, P_4, P_5, P_6, P_7} P3?,P4?,P5?,P6?,P7?,其总 stride 分别为 8、16、32、64、128。
Anchor-based 是怎么给不同分辨率的特征图分配 anchor 的呢? Anchor-based 方法是给不同 level 的特征图分配不同大小的 anchor box FCOS 是怎么分配 anchor 的呢? FCOS 直接限制 bbox 回归的数值的范围
2.3 Center-ness for FCOS虽然使用 FPN 可以弥补不同尺度目标的识别问题,但 FCOS 还是和 anchor-based 方法的效果有一定的差距。 主要原因在于,预测产生了很多距离目标中心点很远的低质量 bbox 如何解决距离中心点很远的低质量 bbox? 作者在原来的两个 branch 的基础上,添加了一个 centerness 分支,来预测每个位置的 “centerness”,即该位置和真实目标中心点的位置,如图 2 所示。
极端情况下:
从 anchor-based 检测器的角度来看,anchor-based 方法使用两个 IoU 阈值( T l o w T_{low} Tlow? 和 T h i g h T_{high} Thigh? 来将 anchor 分为 negative、ignore、positive,centerness 可以被看做一个 soft threshold。 三、效果使用 ResNeXt-32x8d-101-FPN,在 COCO 上得到了 42.1% AP 使用 centerness 的效果对比: 如图 7 所示:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:52:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |