[具身智能-562]:RDK FCOS 目标检测 Python Demo:哪些是地平线提供的,哪些是第三方提供的? 哪些是开源的,哪些是闭源的?
·
分类梳理:地平线自研 / 第三方、开源 / 闭源
运行平台:地平线 RDK(X3/X5);模型:fcos_512x512_nv12.bin
先给核心结论:
- 地平线闭源组件(官方提供,无源码):底层 SDK、BPU 模型、libpostprocess.so;
- 地平线开源代码:这份 Python demo 源码(示例应用,Apache2.0);
- 第三方开源组件:Python 标准库、OpenCV、NumPy 等;
- 无第三方闭源商业库。
一、地平线官方提供模块拆分
1)闭源(二进制分发,不开放源码)【地平线自研】
- hobot_dnn (pyeasy_dnn)
- 提供方:地平线
- 性质:闭源 SDK
- 作用:加载
.bin离线模型、调用 BPU 硬件推理 - 来源:RDK 固件内置,仅能在旭日 BPU 平台运行
- hobot_vio (libsrcampy)
- 提供方:地平线
- 性质:闭源 SDK
- 作用:HDMI 硬件输出、显示管理
/usr/lib/libpostprocess.so- 提供方:地平线
- 性质:闭源动态库
- 作用:FCOS 后处理(解码网络输出、NMS)
重点:
你看不到 FcosdoProcess / FcosPostProcess C 源码;只能通过 ctypes 调用接口。
- fcos_512x512_nv12.bin
- 提供方:地平线 ModelZoo
- 性质:闭源编译后 BPU 模型
- 说明:由 ONNX 经过地平线 OX 工具编译生成,是 BPU 专属机器码,无法直接还原网络权重。
- 平台底层固件、BPU 驱动
- 提供方:地平线,闭源。
2)开源(地平线发布示例源码,Apache 2.0 协议)
贴出来的这份完整 python 脚本本身
- 归属:地平线官方示例 Demo
- 许可证:文件头部
Apache License 2.0(开源) - 实现内容:
- ctypes 结构体封装(适配 libpostprocess.so)
- BGR2NV12 转换函数
- 摄像头采集、画框、坐标映射、HDMI 调度、FPS 统计
注意:
开源的只是上层业务胶水代码,上面依赖的底层 SDK、后处理 so 仍然是闭源二进制。
二、第三方开源组件(不属于地平线,通用开源生态)
全部都是开源软件,可以自由获取源码:
- Python 标准库
sys / signal / os / time / ctypes / json - OpenCV
import cv2开源(Apache2),第三方,用于图像采集、resize、色彩空间转换 - NumPy
import numpy as np开源 BSD 协议,数组运算 colorsysPython 内置库
不存在第三方闭源库。
三、表格汇总一目了然
表格
| 模块 | 提供者 | 开源 / 闭源 | 备注 |
|---|---|---|---|
| hobot_dnn pyeasy_dnn | 地平线 | 闭源(二进制 SDK) | BPU 模型推理核心 |
| hobot_vio libsrcampy | 地平线 | 闭源(二进制 SDK) | HDMI 显示驱动封装 |
| libpostprocess.so | 地平线 | 闭源动态库 | FCOS 后处理 C 实现 |
| fcos_512x512_nv12.bin | 地平线 ModelZoo | 闭源编译模型 | BPU 离线模型文件 |
| 当前整套.py 源码 | 地平线 | 开源 Apache2.0 | 应用层 demo 胶水代码 |
| cv2 (OpenCV) | 开源社区 | 开源 | 第三方图像处理 |
| numpy | 开源社区 | 开源 | 第三方数值计算 |
| sys/ctypes/json/time 等 python 内置库 | Python 官方 | 开源 | 标准库 |
四、几个极易混淆的关键点(实战重点)
-
“Demo 代码开源 ≠ 底层 SDK 开源” 你能修改这份 py 脚本,但是不能修改 libpostprocess.so 内部的 FCOS 解码逻辑,无法调试后处理底层;如果想自定义 FCOS 解码,只能自己用 Python 重写后处理,抛弃 libpostprocess.so。
-
NV12 转换函数归属
bgr2nv12_opencv()是地平线 demo 里自己写的开源代码;不属于 OpenCV 内置函数。 -
ctypes 一大段 class 结构体是什么? 属于地平线开源 demo 代码。目的:在 Python 层模拟 C 结构体内存布局,用来和闭源
libpostprocess.so互通参数,没有这部分代码就传不了张量指针。 -
模型.bin 文件不能逆向 它不是通用 ONNX/PyTorch 权重,是地平线 OX 编译器针对 BPU 架构生成的二进制指令,闭源格式。
五、延伸建议
如果你有二次开发 / 商用交付场景:
- 可以自由修改这份 python 源码(遵守 Apache2.0);
- 底层 hobot 系列 SDK、libpostprocess.so 分发必须遵循地平线 RDK 平台最终用户协议;
- 如果不想依赖闭源
libpostprocess.so,方案:移除所有 ctypes 代码,纯 Python 实现 FCOS 后处理(代价:CPU 占用上升、帧率下降)。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)