
一、FCOS 算法概览FCOSFully Convolutional One-Stage Object Detection是经典的 anchor-free 单阶段检测算法由 Tian 等人在 2019 年提出。与 YOLO/SSD 等 anchor-based 方法不同FCOS 直接在特征图的每个像素位置预测类别分数classification score边界框回归bounding box regressionCenter-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.mdFCOS 模型在 RDK X5 上的部署分为两个阶段3.1 图像 BackboneBPUFCOS 使用 EfficientNet 系列作为 backbone在 BPU 上通过hbm_runtime接口执行推理。输入输出规格输入数据类型形状布局imageFP321 × 3 × H × WNCHW输出数据类型说明检测结果FP32类别分数 框坐标 center-ness3.2 转换流程Model Zoo 已提供可直接使用的.bin模型文件。如需自定义转换参数使用 OpenExplorer Docker 编译环境ONNX 导出 → 2. 校准PTQ→ 3. 编译为 BIN → 4. 验证提示Docker 镜像可从 地瓜开发者社区 获取。四、环境准备4.1 克隆仓库 切换到 rdk_x5 分支gitclone https://github.com/D-Robotics/rdk_model_zoo.gitcdrdk_model_zoogitcheckout rdk_x54.2 安装依赖cdsamples/vision/fcos python3-mpipinstall--usernumpy opencv-python4.3 下载模型文件cdmodel/bashdownload_model.sh五、快速运行进入 runtime 目录一键运行cdsamples/vision/fcos/runtime/pythonchmodx run.sh ./run.shrun.sh会完成以下操作检查模型文件是否存在不存在则自动下载使用默认参数执行main.py输入测试图片输出检测结果六、手动运行与参数说明6.1 使用默认参数python3 main.py6.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.46.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 (x1120, y145, x2380, y2500) - car: 0.88 (x150, y1200, x2200, y2350) ... Inference time: 3.1 ms (BPU) 9 ms (post-process)八、性能数据下表展示 FCOS 系列模型在 RDK X5 上的实测性能BPU 推理模型尺寸类别数BPU 吞吐量Python 后处理fcos_efficientnetb0512×51280323.0 FPS9 msfcos_efficientnetb2768×7688070.9 FPS16 msfcos_efficientnetb3896×8968038.7 FPS20 ms测试平台RDK X5CPU 8×A551.8GBPU 1×Bayes-e1G (10TOPS INT8)解读fcos_efficientnetb0 以 512×512 分辨率实现323 FPS的惊人吞吐适合实时视频流检测随着模型增大和分辨率提高精度提升但吞吐下降后处理Python耗时 9-20ms对于 30 FPS 应用场景是可接受的九、FCOS vs YOLOAnchor-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.shQ2BPU 推理失败确认 RDK OS 版本 ≥ 3.5.0确认使用hbm_runtime接口非旧版bpu_infer_libQ3如何切换不同尺寸的模型修改--model-path参数指向对应的.bin文件即可。十二、总结本文详细介绍了在 RDK X5 上部署 FCOS 目标检测模型的完整流程✅ FCOS 算法原理anchor-free center-ness✅ 模型转换OpenExplorer Docker → ONNX → PTQ → BIN✅ 环境配置 模型下载✅ 一键运行 自定义参数✅ 性能数据最高 323 FPS✅ 应用场景监控/工业/自动驾驶/机器人FCOS 是 RDK X5 Model Zoo 中检测类模型的重要选项其 anchor-free 设计和小目标检测能力使其在工业检测和实时监控场景中具有独特优势。