165 lines
6.6 KiB
Plaintext
165 lines
6.6 KiB
Plaintext
project-4cdad308_rk3588 相对 AAPGS_model_20260714 变更记录
|
||
================================================================
|
||
|
||
对比基准
|
||
--------
|
||
旧包:AAPGS_model_20260714.tar.gz
|
||
新包:project-4cdad308_rk3588.tar.gz
|
||
对比日期:2026-08-04
|
||
|
||
一、总体结论
|
||
------------
|
||
新包不是对旧包的简单重命名,而是包含新模型、新运行时 ABI、新版公共 C API、
|
||
新版示例程序和更新验证记录的一次完整升级。新旧包的二进制接口不兼容,使用旧包
|
||
头文件或链接 libyolo_runtime.so.2 的应用程序不能直接替换为新包,必须依据新版
|
||
头文件重新适配并重新编译。
|
||
|
||
二、包信息变更
|
||
--------------
|
||
1. 包名称由 AAPGS_model_20260714 变更为 project-4cdad308_rk3588。
|
||
2. 压缩包大小由 14,199,356 字节减小为 6,859,304 字节,减少 7,340,052 字节,
|
||
约减少 51.7%。
|
||
3. 解压后文件总大小由约 41.37 MiB 减小为约 14.50 MiB。
|
||
4. 普通文件数量由 37 个变为 38 个。
|
||
5. 两包存在 31 个相同相对路径,其中 11 个文件内容完全一致,20 个文件内容已修改。
|
||
|
||
三、模型及配置变更
|
||
------------------
|
||
1. 模型名称:
|
||
旧:model_20260712T020258_0000_6339d04b
|
||
新:project-4cdad308
|
||
|
||
2. 模型版本:
|
||
旧:1.0.0
|
||
新:20260804_000209_109_cb390eaf
|
||
|
||
3. 模型文件:
|
||
旧:models/model_20260712T020258_0000_6339d04b/
|
||
model_20260712T020258+0000_6339d04b.rknn,3,547,568 字节
|
||
新:models/primary/model.rknn,3,550,128 字节
|
||
|
||
4. 分类标签:
|
||
旧:a320、b737,共 2 类
|
||
新:a320、b737、other,共 3 类
|
||
|
||
5. RKNN 输出张量:
|
||
旧:[1, 2],输出结果 2 项
|
||
新:[1, 3],输出结果 3 项
|
||
|
||
6. 模型配置新增或调整:
|
||
- 新包明确增加 model_family: "yolo8"。
|
||
- 新包明确增加 output_contract: "task_specific"。
|
||
- 后处理适配器由 ultralytics_yolov8_cls 调整为 ultralytics_yolo8_cls。
|
||
- 新包增加 bbox_edge_tolerance_px 和 pose_keypoint_tolerance_px 验证参数。
|
||
- 模型配置路径统一为 models/primary/model.yaml。
|
||
|
||
四、运行时及 ABI 变更
|
||
--------------------
|
||
1. 公共 Runtime ABI 由 3 升级为 5。
|
||
2. 主要运行库 SONAME 由 libyolo_runtime.so.2 升级为 libyolo_runtime.so.5。
|
||
3. libyolo_runtime.so 大小由 263,440 字节变为 297,920 字节。
|
||
4. libyolo_backend_cls.so 大小由 957,664 字节变为 961,832 字节。
|
||
5. 新包额外保留 libyolo_runtime.so.3 和 libyolo_runtime.so.3.0.2 文件;
|
||
但未包含旧包所需的 libyolo_runtime.so.2,因此不具备旧 ABI 2/3 应用的直接
|
||
二进制替换条件。
|
||
6. librga.so 和 librknnrt.so 的内容未发生变化。
|
||
|
||
五、公共 C API 变更
|
||
------------------
|
||
1. 增加 YOLO_RUNTIME_API 导出符号宏。
|
||
2. yolo_runtime_create() 增加结构化错误信息参数。
|
||
3. 原 yolo_runtime_get_capabilities() 被新版 yolo_runtime_get_info() 取代。
|
||
4. 推理输入结构由 yolo_image_view_t 升级为带版本号的 yolo_image_view_v1_t。
|
||
5. 增加 yolo_infer_options_v1_t,可指定分割几何计算方式。
|
||
6. 推理结果由调用方持有的固定 yolo_result_list_t 数组,改为运行时返回的不透明
|
||
yolo_result_set_t 对象。
|
||
7. 增加结果数量、性能数据、公共结果、检测框、旋转框、分割掩码、分割几何和
|
||
姿态关键点等独立读取接口。
|
||
8. 增加 yolo_result_set_release(),调用方必须显式释放结果集。
|
||
9. 增加 ABI 不匹配、缓冲区过小、结果不可用、配置无效、索引越界等状态码。
|
||
10. 数据结构统一增加 struct_size、version 和 reserved 字段,以支持后续扩展。
|
||
|
||
六、示例程序变更
|
||
----------------
|
||
1. C/C++ 示例已适配 Runtime ABI 5 和新的结果集接口。
|
||
2. 预编译示例程序已重新构建:
|
||
- yolo_c_example:18,808 字节变为 23,432 字节。
|
||
- yolo_cpp_example:23,912 字节变为 24,544 字节。
|
||
3. 新示例增加 --seg-geometry rect|circle 参数支持。
|
||
4. 新示例使用 yolo_error_info_v1_t 返回创建及推理错误信息。
|
||
5. result_json 模块已改为通过新版结果查询接口生成 JSON,并扩展对不同任务结果
|
||
类型的支持。
|
||
6. 交叉编译检查目标由 libyolo_runtime.so.2 调整为 libyolo_runtime.so.5。
|
||
|
||
七、示例资源变更
|
||
----------------
|
||
1. 旧包包含:
|
||
- examples/assets/a320.bmp,15,040,566 字节
|
||
- examples/assets/b737.bmp,15,040,566 字节
|
||
2. 新包改为:
|
||
- examples/assets/sample.bmp,1,228,854 字节
|
||
3. 旧包的 package.env、manifest.json 和运行脚本声明使用
|
||
examples/assets/sample.bmp,但旧压缩包实际未包含该文件。因此按旧包自带脚本
|
||
直接运行会找不到示例图片。
|
||
4. 新包中的 PACKAGE_SAMPLE_IMAGE 与实际 sample.bmp 文件一致,消除了该资源路径
|
||
不一致问题。
|
||
5. 示例图片精简是新包体积明显下降的主要原因。
|
||
|
||
八、文档及交付元数据变更
|
||
------------------------
|
||
以下文件均已更新:
|
||
- README.md
|
||
- docs/C_API.md
|
||
- docs/DEB_INTEGRATION.md
|
||
- docs/INSTALL.md
|
||
- docs/MODEL_CONFIG.md
|
||
- manifest.json
|
||
- package.env
|
||
- verification.json
|
||
- build/cross-build.log
|
||
|
||
新 manifest.json 额外记录:
|
||
- projectId
|
||
- projectKey
|
||
- modelVersionId
|
||
- deliveryContractVersion
|
||
- modelSlot
|
||
- compatibilityFingerprint
|
||
- layoutFingerprint
|
||
|
||
九、验证记录变更
|
||
----------------
|
||
1. 两个包的 manifest.json 和 verification.json 均记录:
|
||
- 已完成 AArch64 交叉编译。
|
||
- 已在 RK3588 上验证。
|
||
- 设备内核为 5.10.209。
|
||
|
||
2. 旧包记录的验证时间为 2026-07-15,推理输出为 2 类。
|
||
3. 新包记录的验证时间为 2026-08-04,C/C++ 示例均输出 3 类结果;记录的单次
|
||
RKNN 推理时间约为 3.78~3.92 ms。
|
||
|
||
十、保持不变的主要内容
|
||
----------------------
|
||
以下 11 个共有文件的 SHA256 完全一致:
|
||
- examples/c/build.sh
|
||
- examples/c/CMakeLists.txt
|
||
- examples/c/run.sh
|
||
- examples/common/bmp_loader.c
|
||
- examples/common/bmp_loader.h
|
||
- examples/cpp/build.sh
|
||
- examples/cpp/CMakeLists.txt
|
||
- examples/cpp/run.sh
|
||
- lib/librga.so
|
||
- lib/librknnrt.so
|
||
- scripts/install.sh
|
||
|
||
十一、迁移注意事项
|
||
------------------
|
||
1. 旧应用不能只替换 .so 文件;需要同时更新头文件、调用代码并重新编译。
|
||
2. 业务代码需要处理新增的 other 分类,不能继续假定结果恒为 2 类。
|
||
3. 推理结果使用完毕后必须调用 yolo_result_set_release()。
|
||
4. 应按新 package.env 使用 models/primary/model.yaml 和
|
||
examples/assets/sample.bmp。
|
||
5. 上述“设备已验证”结论来自两个交付包内的历史验证记录。本次工作完成了压缩包
|
||
清单、文件哈希、配置和源码的静态比对,但未重新连接 RK3588 进行现场复测。
|