【经典论文阅读】完整梳理 FCOS (Fully Convolutional One-Stage Object Detection)

【经典论文阅读】完整梳理 FCOS (Fully Convolutional One-Stage Object Detection)
在这里插入图片描述

一、研究背景(Background)

相关领域概要:

  • 目标检测(Object Detection):给定一张图像,找出其中所有感兴趣物体的边界框(Bounding Box) + 类别标签。是计算机视觉最基础、最核心的高层任务之一。
  • 主流范式(2019年之前):几乎所有先进检测器(如 Faster R-CNN、SSD、RetinaNet、YOLOv3)都依赖 锚框(Anchor Boxes)——即在特征图每个位置预设一组不同尺度、长宽比的候选框,再通过分类+回归进行精修。
🔍 举个例子:
在一张 800×800 的图上,用特征金字塔(FPN)生成 5 层特征图,每层每个位置放 9 个 anchor(不同大小/比例),总计约 18 万个预设框——其中 >99% 是负样本(无物体),训练极不均衡。
  • 语义分割(Semantic Segmentation):FCN(全卷积网络)革命性地统一了 dense prediction 任务(如分割、深度估计、关键点检测等),用“每个像素预测语义类别”的范式,结构极其简洁、高效、端到端。

关键矛盾浮现

为什么同样是 instance-level(实例级)任务,目标检测却要靠“anchor 这种 middle-man(中间人)”?而分割直接 per-pixel(逐像素)预测就能做好?
目标检测能不能也像分割一样,纯粹用 FCN、无 proposal、无 anchor、逐像素预测

二、问题(Challenge)

核心问题:

能否构建一个完全卷积的、无锚框的目标检测器,在性能上媲美甚至超越锚框方案?

为什么这个问题极具挑战性?——四大困难(因果链条)

困难编号挑战描述因果性解释(为什么难)
C1:召回率低(Low Recall)如果只在某一层特征图预测(如 stride=16),很多小物体可能完全“错过”——没有像素落在其框内 → 无法被召回因为 stride 大 → 特征图稀疏;而 anchor 可密集放置弥补稀疏性
C2:重叠歧义(Ambiguity in Overlaps)若两个 GT 框重叠(如人骑马),一个像素点落在交集中,它该回归哪个框?
→ 回归冲突:分类该用哪类?坐标该学谁?
因为一个像素只能预测一个 (l,t,r,b)+class;而 anchor 用 IoU 匹配机制可分配归属,但 FCN 没有这种机制
C3:低质量预测泛滥(Low-quality Detections)即使一个像素在 GT 框内,若它在框的边缘(远离物体中心),回归的框往往不准(如图 1 右)、置信度却可能很高 → 大量假阳性干扰 NMS因为所有框内像素都被平等对待为正样本,但边缘像素“感知野”跨物体/背景,回归能力天然弱
C4:设计复杂度高(Design Complexity)anchor 方案需调超参:anchor 尺寸/比例/数量、IoU 阈值(正负样本划分)、匹配策略等,极其敏感(±4% AP 波动)因为 anchor 是人为先验,脱离数据分布;调参靠经验+试错,难以泛化到新场景
💡 问题的价值
若能解决,将使检测器像分割一样简洁、统一、可迁移,彻底摆脱“锚框霸权”——这是对检测本质的重新思考。

三、作者的关键发现(Finding)

这不是一个“技术修补”问题,而是一个“视角转换”问题
FCOS 的 Finding 不是“我们加了一个 center-ness 分支”,而是:

🔑 核心洞察(The Finding)

目标检测的“框回归”任务天然具有空间结构:物体中心区域的像素,回归能力更强、更可靠;而边缘像素虽然也在框内,但其回归质量随远离中心而指数衰减。

—— 因此,无需人为设计 anchor 来“筛选高质量样本”,而是让网络自己学出:每个像素预测的框到底有多“靠谱”。

换句话说:“位置”本身已蕴含“质量”信息,只需建模这种关系(即 center-ness),就能自动抑制低质量预测,无需 IoU 阈值等 heuristics。

为什么这个 finding 颠覆传统?

FCOS 观点:

“框是四边距离 (l, t, r, b) 定义的;框内所有点理论上都能回归——只要我们告诉网络:某些点‘虽在框内,但质量差’,让它学会降权即可。”

→ 将‘如何筛选样本’的问题,转化为‘如何评估样本质量’的问题

传统观点(anchor-based):

“框是中心+宽高定义的,必须用 anchor 提供初始猜测;远离中心的点天生不可靠 → 直接丢弃(如 YOLOv1)。”
🌰 举个生动例子:
想象你在教小朋友画矩形:Anchor 方法:你先画一堆虚线矩形(anchor),说:“挑一个最像的,再改改边。”FCOS 方法:你给一张白纸,说:“任意一点,只要你在目标矩形里,就量它到四边的距离,报给我。”但小朋友在角落画的线经常歪 → 你补一句:“你报数时,顺便自评一下:‘我离中心多远?越远,我说的数字越不可信’。”你收答案时,把“自评分”乘上“自信程度”,低分的自动被过滤。
→ 无需预设模板,靠自我评估实现高质量输出。

这个 finding 的精妙在于:
✅ 它把检测的内在矛盾(所有点都可用 vs. 边缘点质量差)
✅ 它兼容 FCN 的 pure 理念——不增加采样规则(如 “只用中心 1/3 区域”),只加一个极轻量的“质量评估头”
✅ 它统一了密集预测范式:分割是“像素级语义”,检测是“像素级几何 + 像素级质量”


四、方法(Method)

输入:

  • 一张 RGB 图像 I ∈ R^{H×W×3}

整体流程(三步走):

Step 1:构建多尺度特征金字塔(FPN)
  • Backbone(如 ResNet)提取 C3~C5
  • FPN 生成 P3~P7,strides = {8, 16, 32, 64, 128}
  • 目的:解决 C1(低召回)和 C2(重叠歧义)
Step 2:逐像素预测(FCN Head)

对每一层 Pi 的每个位置 (x, y),预测:

  • p_{x,y} ∈ R^{80}:类别置信度(80 类 COCO)
  • t_{x,y} = (l, t, r, b) ∈ R^4:到当前框四边的距离(经 exp(si·x) 映射到正数)
  • c_{x,y} ∈ [0,1]center-ness,由单独分支预测(和分类分支并行)

训练目标(正样本条件):

  • (x,y) 落入某个 GT 框 Bi,则为正样本;若落入多个,选面积最小者(缓解歧义)
  • 回归目标:
    l* = x - x0, t* = y - y0, r* = x1 - x, b* = y1 - y

Center-ness(核心设计!):

在这里插入图片描述
✅ 这个公式妙在:当点在框中心:l=r, t=b → centerness = 1当点在边缘(如左边界):l→0, r→w → centerness→0对长宽比鲁棒(归一化比值)
📌 关键技巧:为每个 FPN 层 Pi 学一个可训练标量 si,让 exp(si·x) 自动适配不同尺度范围(原 exp(x) 对大框回归不足)。
Step 3:推理(无 anchor!)
  • 最终得分 = classification_score × center-ness_score
  • 标准 NMS 后输出

对每个 (x,y),若 p_{x,y} > 0.05,则生成框:

x0 = x - l, y0 = y - t, x1 = x + r, y1 = y + b 

五、结论(Results & Insights)

主要实验结果(COCO test-dev, single-scale):

方法BackboneAPAP₅₀AP₇₅
RetinaNetResNet-101-FPN39.159.142.3
FCOS (Ours)ResNet-101-FPN41.560.745.0
FCOS++ResNeXt-64x4d-101-FPN44.764.148.4
关键结论
  1. FCOS 超越 RetinaNet (+2.4 AP),证明无 anchor 可做得更好;
  2. Center-ness 至关重要:ablation 实验(Table 4)显示:去掉 center-ness,AP 从 37.1 → 33.5(-3.6);
  3. BPR(Best Possible Recall)不是瓶颈:FCOS 达 98.4%,仅比 anchor 最优值(99.23%)低 0.8%,实际检测中 recall 差异可忽略(Fig. 4–6 PR 曲线末端 recall <80%);
  4. 歧义样本影响极小:仅 1.5% 的检测框来自跨类重叠区域(Table 2),且网络能有效处理;
  5. 可迁移到两阶段:将 FCOS 作 RPN,AR₁₀₀ 提升 8.1%(Table 6),说明其高质量 proposal 能力。

额外重大发现(Finding 的验证):

🔍 图 7 的可视化是“神来之笔”:
  • 左图(无 center-ness):大量点在对角线 y = x 下方 → 高分(x 轴)但低 IoU(y 轴),即高置信度低质量预测
  • 右图(有 center-ness):这些点被“推左” → 分数被 center-ness 压低 → NMS 可滤除
    直接验证了 center-ness 的降权机制有效!
🔍 PR 曲线(Fig. 4–6)揭示深层价值:
  • 在严苛 IoU=0.9 时,FCOS 比 RetinaNet AP 高 +2.7(Table 7)
    → 说明 FCOS 回归更准
    → 原因:利用了更多 foreground 像素训练回归器(anchor 仅用 IoU > 0.5 的 anchor 作正样本)

关键术语总结(中英对照 + 例子)

英文中文解释 + 例子
Anchor Box锚框预设的参考框,用于初始化检测。例:RetinaNet 在每层特征图每个位置放 9 个不同大小/比例的框(如 32×32, 64×32, 128×128 等)
FPN (Feature Pyramid Network)特征金字塔网络自顶向下 + 横向连接,生成多尺度特征图。例:P3(stride=8)检小物体,P7(stride=128)检大物体
BPR (Best Possible Recall)最佳可能召回率一个检测器理论上能召回的 GT 框最大比例(不考虑分类/回归精度)。例:FCOS 的 BPR=98.4%,意味着 1000 个 GT 框最多漏掉 16 个
Ambiguous Sample歧义样本落在多个 GT 框交集内的像素点,难以确定归属。例:人和马重叠区域中的一点,该回归“人”还是“马”?
Center-ness中心度衡量一个像素到其负责物体中心的归一化距离,值∈[0,1]。核心创新!
例:框中心点 → center-ness=1;靠近左边界的点 → center-ness≈0.1
Per-pixel Prediction逐像素预测FCN 风格:特征图每个位置独立预测,无 ROI Pooling/Proposal。例:语义分割每个像素输出类别;FCOS 每个像素输出 (l,t,r,b)+cls+centerness)
IoU Loss / GIoU LossIoU 损失 / 泛化 IoU 损失回归损失函数。IoU Loss 直接优化预测框与 GT 的 IoU(比 L1/L2 更符合检测目标);GIoU 还惩罚“预测框与 GT 的外接矩形面积”,缓解无交集时梯度消失

总结:FCOS 的哲学意义

FCOS 不是一篇“加了个新模块”的技术论文,而是一次范式革命:它证明:目标检测的本质,是几何的逐像素建模,而非“先猜框再修正”;它揭示:位置信息本身蕴含质量信息,无需人工规则筛选样本;它实现:检测 ≈ 分割 + 几何回归 + 质量评估,真正统一 dense prediction;它启发:“简单即强大”——去掉 anchor 后,参数更少、超参更少、训练更快、性能更高。

正如文末所言:

“我们鼓励社区重新思考 anchor boxes 的必要性——它们曾被认为是检测的‘金标准’,但现在,或许只是历史的惯性。”

这篇工作,是 deep learning 中“第一性原理思考”的典范:回到问题本质,敢于质疑共识,用洞察力而非工程技巧破局。

Read more

FPGA实现任意角度图像旋转_(图像旋转原理部分)

1.摘要         书接上回,介绍完Cordic原理部分FPGA实现任意角度图像旋转_(Cordic算法原理部分),和代码FPGA实现任意角度图像旋转_(Cordic算法代码部分),得到了至关重要的正余弦数值就可以进行旋转公式的计算了。        旋转没什么太多原理,看了很多资料感觉是描述的非常复杂, 其实本质就是实现两个公式,非整那么多花里胡哨的。所以我就按照我当时的编写思路记录一下。 2.图像旋转代码设计思路         2.1 旋转后的图像尺寸                 在一副图像经过旋转后,原本像素的位置肯定会发生变化,图像总的面积虽然保持不变但是各别位置的尺寸会改变,这个应该很好理解。比如一副100x100像素的图像进行旋转,我们只需要获得它的最长距离也就是对角线的尺寸作为旋转后的图像的显示范围。这样无论怎样旋转都能完整显示图像。                 如下代码,Pixel_X和Pixel_Y为旋转后图像的尺寸。ROW和COL为原始图像尺寸,利用勾股定理求出对角线的值即可。 reg [12:0] row_size ; reg [

介绍终身机器人学习的数据集LIBERO

介绍终身机器人学习的数据集LIBERO

1 LIBERO的作用 LIBERO是一个用于研究多任务和终身机器人学习中知识迁移的综合基准测试平台,LIBERO是基于robosuite框架构建的。它专注于机器人操作任务,这些任务需要两类知识: 1. 陈述性知识:关于物体和空间关系的知识 2. 程序性知识:关于运动和行为的知识 2 核心原理 任务生成与基准设计 LIBERO提供了一个程序化生成管道,原则上可以生成无限数量的操作任务。系统包含130个任务,分为四个任务套件,每个套件都有受控的分布偏移: * LIBERO-Spatial/Object/Goal:专注于特定类型知识的迁移 * LIBERO-100:包含需要迁移纠缠知识的100个操作任务 学习框架 系统采用模仿学习作为主要学习方法,因为任务使用稀疏奖励函数(任务完成时获得+1奖励)。LIBERO提供高质量的人类遥操作演示数据集用于训练。 算法与策略架构 LIBERO实现了三种视觉运动策略网络: * bc_rnn_policy:基于RNN的行为克隆策略 * bc_transformer_policy:基于Transformer的行为克隆策略

Lychee-Rerank部署教程:国产化信创环境(统信UOS+申威CPU)适配方案

Lychee-Rerank部署教程:国产化信创环境(统信UOS+申威CPU)适配方案 1. 项目简介与背景 Lychee-Rerank是一个专门用于检索相关性评分的本地工具,它基于成熟的推理逻辑和Qwen2.5-1.5B模型开发而成。这个工具的核心功能是帮助用户评估查询语句与文档内容之间的匹配程度,为文档检索和排序提供量化依据。 在实际应用中,我们经常需要从大量文档中快速找到与特定查询最相关的内容。传统的关键词匹配方法往往不够精准,而基于深度学习的相关性评分能够更好地理解语义层面的关联。Lychee-Rerank正是为了解决这个问题而设计,它能够在完全离线的环境下运行,确保数据隐私和安全。 该工具特别适配了国产化信创环境,包括统信UOS操作系统和申威CPU架构,为国内用户提供了完整的本地化解决方案。无论是企业知识库检索、文档管理系统,还是学术研究中的文献筛选,Lychee-Rerank都能提供准确可靠的相关性评分服务。 2. 环境准备与依赖安装 2.1 系统要求 在开始部署之前,请确保您的系统满足以下基本要求: * 操作系统:统信UOS 20及以上版本 * CP

Java Web 网上服装商城系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

Java Web 网上服装商城系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

系统架构设计### 摘要 随着互联网技术的快速发展和电子商务的普及,网上服装商城已成为消费者购买服装的主要渠道之一。传统的线下服装销售模式受限于时间和空间,难以满足现代消费者多样化和便捷化的需求。网上服装商城系统通过互联网平台打破了地域限制,提供了24小时不间断的购物体验,同时降低了商家的运营成本。此外,大数据分析和个性化推荐技术的应用进一步提升了用户的购物体验和商家的销售效率。关键词:电子商务、服装商城、互联网技术、个性化推荐、大数据分析。 本系统采用SpringBoot2作为后端框架,结合Vue3前端框架,实现了前后端分离的开发模式,提升了系统的可维护性和扩展性。数据库选用MySQL8.0,通过MyBatis-Plus简化了数据操作,提高了开发效率。系统功能包括用户管理、商品分类与展示、购物车管理、订单处理、支付接口集成以及后台管理模块。用户可以通过注册登录浏览商品,加入购物车并完成支付;管理员则可以对商品、订单和用户信息进行管理。系统还集成了第三方支付接口,确保交易的安全性和便捷性。关键词:SpringBoot2、Vue3、MyBatis-Plus、MySQL8.0、支付接口