RDK X5 部署 FCOS 目标检测模型实战:Anchor-Free 单阶段检测器
2026/6/26 5:22:40 网站建设 项目流程

一、FCOS 算法概览

FCOS(Fully Convolutional One-Stage Object Detection)是经典的 anchor-free 单阶段检测算法,由 Tian 等人在 2019 年提出。与 YOLO/SSD 等 anchor-based 方法不同,FCOS 直接在特征图的每个像素位置预测:

  • 类别分数(classification score)
  • 边界框回归(bounding box regression)
  • Center-ness(中心度,用于抑制低质量检测框)

这种设计避免了 anchor 的超参数调优(如数量、尺寸、宽高比),在保持精度的同时大幅简化了检测流程。

论文:Fully Convolutional One-Stage Object Detection
官方实现:tianzhi0549/FCOS


二、目录结构

Model Zoo 中 FCOS sample 的完整目录:

samples/vision/fcos/ ├── README.md / README_cn.md # 总体说明 ├── conversion/ # 模型转换 │ └── README_cn.md ├── evaluator/ # 精度评测 │ └── README_cn.md ├── model/ # 模型文件 │ └── download_model.sh # 模型下载脚本 ├── runtime/python/ # Python 推理入口 │ ├── main.py # 主程序 │ ├── run.sh # 一键运行脚本 │ └── README_cn.md └── test_data/ # 测试数据 └── demo_rdkx5_fcos_detect.jpg

三、模型转换概览

完整转换说明见conversion/README_cn.md

FCOS 模型在 RDK X5 上的部署分为两个阶段:

3.1 图像 Backbone(BPU)

FCOS 使用 EfficientNet 系列作为 backbone,在 BPU 上通过hbm_runtime接口执行推理。输入输出规格:

输入数据类型形状布局
imageFP321 × 3 × H × WNCHW
输出数据类型说明
检测结果FP32类别分数 + 框坐标 + center-ness

3.2 转换流程

Model Zoo 已提供可直接使用的.bin模型文件。如需自定义转换参数,使用 OpenExplorer Docker 编译环境:

  1. ONNX 导出 → 2. 校准(PTQ)→ 3. 编译为 BIN → 4. 验证

💡提示:Docker 镜像可从 地瓜开发者社区 获取。


四、环境准备

4.1 克隆仓库 & 切换到 rdk_x5 分支

gitclone https://github.com/D-Robotics/rdk_model_zoo.gitcdrdk_model_zoogitcheckout rdk_x5

4.2 安装依赖

cdsamples/vision/fcos python3-mpipinstall--usernumpy opencv-python

4.3 下载模型文件

cdmodel/bashdownload_model.sh

五、快速运行

进入 runtime 目录,一键运行:

cdsamples/vision/fcos/runtime/pythonchmod+x run.sh ./run.sh

run.sh会完成以下操作:

  1. 检查模型文件是否存在,不存在则自动下载
  2. 使用默认参数执行main.py
  3. 输入测试图片,输出检测结果

六、手动运行与参数说明

6.1 使用默认参数

python3 main.py

6.2 自定义参数运行

python3 main.py\--model-path../../model/fcos_efficientnetb0_512x512.bin\--test-img../../test_data/demo_rdkx5_fcos_detect.jpg\--score-threshold0.5\--nms-threshold0.4

6.3 参数说明

参数说明默认值
--model-pathBPU 模型.bin路径模型目录下的默认文件
--test-img测试输入图片路径测试数据目录
--score-threshold置信度阈值0.5
--nms-thresholdNMS 阈值0.4

七、推理结果解读

运行成功后,输出结果示例:

Input: demo_rdkx5_fcos_detect.jpg (512x512) Model: fcos_efficientnetb0 Detected objects: 5 - person: 0.92 (x1=120, y1=45, x2=380, y2=500) - car: 0.88 (x1=50, y1=200, x2=200, y2=350) ... Inference time: 3.1 ms (BPU) + 9 ms (post-process)

八、性能数据

下表展示 FCOS 系列模型在 RDK X5 上的实测性能(BPU 推理):

模型尺寸类别数BPU 吞吐量Python 后处理
fcos_efficientnetb0512×51280323.0 FPS9 ms
fcos_efficientnetb2768×7688070.9 FPS16 ms
fcos_efficientnetb3896×8968038.7 FPS20 ms

测试平台:RDK X5,CPU 8×A55@1.8G,BPU 1×Bayes-e@1G (10TOPS INT8)

解读

  • fcos_efficientnetb0 以 512×512 分辨率实现323 FPS的惊人吞吐,适合实时视频流检测
  • 随着模型增大和分辨率提高,精度提升但吞吐下降
  • 后处理(Python)耗时 9-20ms,对于 30 FPS 应用场景是可接受的

九、FCOS vs YOLO:Anchor-Free 的优势

对比维度FCOSYOLO 系列
Anchor 设计❌ 无需 anchor✅ 需要预设 anchor
超参数调优多(anchor 数量/尺寸/比例)
小目标检测天然优势(逐像素预测)依赖 anchor 密度
模型复杂度较低中等
RDK X5 BPU 吞吐323 FPS (b0)100-200 FPS (nano)

十、应用场景

在 RDK X5 上部署 FCOS 后,可实现以下边缘侧目标检测应用:

场景说明
实时视频监控323 FPS 满足 30 路并发检测
工业缺陷检测小目标检测能力强,适合 PCB/布匹检测
自动驾驶感知80 类 COCO 目标,覆盖行人/车辆/交通标志
机器人视觉低延迟 + 高吞吐,适合 SLAM 前端目标检测

十一、常见问题

Q1:运行时提示找不到模型文件?

cdmodel/&&bashdownload_model.sh

Q2:BPU 推理失败?

  • 确认 RDK OS 版本 ≥ 3.5.0
  • 确认使用hbm_runtime接口(非旧版bpu_infer_lib

Q3:如何切换不同尺寸的模型?

修改--model-path参数指向对应的.bin文件即可。


十二、总结

本文详细介绍了在 RDK X5 上部署 FCOS 目标检测模型的完整流程:

  1. ✅ FCOS 算法原理(anchor-free + center-ness)
  2. ✅ 模型转换(OpenExplorer Docker → ONNX → PTQ → BIN)
  3. ✅ 环境配置 + 模型下载
  4. ✅ 一键运行 + 自定义参数
  5. ✅ 性能数据(最高 323 FPS)
  6. ✅ 应用场景(监控/工业/自动驾驶/机器人)

FCOS 是 RDK X5 Model Zoo 中检测类模型的重要选项,其 anchor-free 设计和小目标检测能力使其在工业检测和实时监控场景中具有独特优势。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询