跳到主要内容

示例概述

本项目包含多个基于 Python 编写的 AI 示例程序,适用于 RDK S100平台,覆盖图像分类、目标检测、实例分割、姿态估计、OCR、语音识别等常见 AI 任务。示例使用 .hbm 格式的量化模型进行推理,便于开发者快速验证模型效果并开展应用开发。

本项目的板端代码位置:/app/pydev_demo/

概述

环境要求

本项目基于 Python 编写并依赖多个第三方库。请确保您的环境满足以下要求:

Python 环境

  • Python 版本:建议使用 Python 3.10.x(当前已在 3.10.12 下测试通过)

依赖库

  • 依赖库列表

    库名说明推荐版本
    numpy科学计算库,用于张量、矩阵处理>=1.26.4
    opencv-python图像处理和可视化(cv2)>=4.11.0.86
    scipy包含数学函数库,如 softmax>=1.15.3
  • 依赖安装

    # 安装依赖
    pip install -r requirements.txt
  • 注意

    以上依赖库列表和安装文件仅列举了模型运行的基本库,部分示例程序需要额外的三方库,可通过相应示例的README.md文档或此文档的相应章节查看。

其他组件

  • hbm_rumtime:用于加载和运行.hbm模型,系统默认已安装,如需自行安装可参考 4.1 Python 接口 部分。

  • Hobot VIO:用于访问相机图像流(hobot_vio,如 libsrcampy)

目录结构

.
├── 01_classification_sample/ # 图像分类样例
├── 02_detection_sample/ # 目标检测样例
├── 03_instance_segmentation_sample/ # 实例分割样例
├── 04_pose_sample/ # 姿态估计样例
├── 05_open_instance_seg_sample/ # 开放词表实例分割样例
├── 06_lane_detection_sample/ # 车道线检测样例
├── 07_speech_sample/ # 语音识别样例
├── 08_OCR_sample/ # OCR 文字识别样例
├── 09_usb_camera_sample/ # USB 摄像头 + 目标检测样例
├── 10_mipi_camera_sample/ # MIPI 摄像头 + 目标检测样例
├── 11_web_display_camera_sample/ # 摄像头 + Web + 目标检测样例
├── utils/ # 通用预处理、后处理工具模块
├── requirements.txt # Python 环境依赖
└── README.md # 顶层使用说明文档(本文件)

快速运行

以图像分类示例 resnet18 为例:

  • 进入sample目录
    cd 01_classification_sample/01_resnet18
  • 运行模型
    python3 resnet18.py \
    --model-path /opt/hobot/model/s100/basic/resnet18_224x224_nv12.hbm \
    --test-img /app/res/assets/zebra_cls.jpg
  • 查看结果
    Top-5 Predictions:
    zebra: 0.9979
    impala, Aepyceros melampus: 0.0005
    cheetah, chetah, Acinonyx jubatus: 0.0005
    gazelle: 0.0004
    prairie chicken, prairie grouse, prairie fowl: 0.0002

通用工具说明

项目中使用了统一的工具模块以简化样例开发,路径为 utils/:

  • preprocess_utils.py:图像预处理,如 resize、颜色格式转换等

  • postprocess_utils.py:模型后处理逻辑,如 NMS、框变换等

  • draw_utils.py:绘制检测框、关键点、分割掩码等

  • common_utils.py:模型信息打印、颜色定义等

注意事项

  • 所有示例程序均使用.hbm格式模型,需配合平台hbm_runtime的python推理接口使用。

  • 注意:各子目录下提供的README.md会详细介绍对应模型所需环境说明、命令行参数、运行方式等内容。