跳转至

DLA Demo 程序说明


1. 功能场景介绍

1.1 程序概述

DLA这一系列算法是sgs对开源模型进行优化后的板端算法库与头文件,DLA demo 是基于算法库相关的演示程序。

1.2 Demo 列表

Demo 功能描述 目录
det 目标检测 - 多路视频实时目标检测与显示 demo/dla/det
fr 人脸识别 - 人脸注册与识别 demo/dla/fr
mot 多目标跟踪 - 视频中人员/车辆的实时检测与跟踪 demo/dla/mot
reid 以图搜图 - 人员/车辆重识别 demo/dla/reid
ret 以文搜图 - 文本检索图像 demo/dla/ret
sgptv 以图生文 - 图片自动生成文字描述 demo/dla/sgptv
sot 单目标跟踪 - 视频中单一人员/车辆的自动锁定与跟踪 demo/dla/sot
vret 文搜视频 - 文本检索视频并定位匹配片段 demo/dla/vret

1.3 DET Demo - 目标检测

相关算法文档:目标检测算法详细文档

1.3.1. 功能介绍

多路 H.264 视频文件实时目标检测与显示功能:

  • 多路视频播放:支持最多16路 H.264 视频文件同时播放
  • VDEC 双端口架构:Port 0 输出到 DISP 显示,Port 1 输出到检测算法
  • 实时目标检测:使用 sgs_det_api 对 VDEC 输出进行目标检测
  • 检测框显示:通过 SGS_GL 库在 framebuffer 上绘制检测框
  • 多线程架构:每个视频通道独立的 VideoThread(视频解码)和 DetThread(目标检测)
  • 自动布局:根据视频数量自动选择最优显示布局

1.3.2. Pipeline 流程

Video Files (最多16路 H.264)
┌──────────────┐
│              │ Port 0 (原始分辨率)    Port 1 (640x352)
│    VDEC      ├────────────────────┬──────────────────┐
│              │                    │                  │
└──────────────┘                    │                  │
                                    ▼                  ▼
                             ┌──────────────┐   ┌──────────────┐
                             │              │   │              │
                             │    DISP      │   │     DET      │ 检测算法
                             │              │   │              │
                             └──────┬───────┘   └──────┬───────┘
                                    │                  │
                                    ▼                  ▼
                             ┌──────────────┐   ┌──────────────┐
                             │              │   │              │
                             │   视频显示    │   │    SGS_GL    │ 绘制检测框
                             │              │   │              │
                             └──────────────┘   └──────┬───────┘
                                                 ┌──────────────┐
                                                 │              │
                                                 │    MI_FB     │
                                                 │              │
                                                 └──────┬───────┘
                                                 ┌──────────────┐
                                                 │              │
                                                 │   检测框显示  │
                                                 │              │
                                                 └──────────────┘

1.3.3. 自动布局规则

视频数量 自动布局
1 1x1
2 2x1
3~4 2x2
5~6 3x2
7~9 3x3
10~16 4x4

1.4 FR Demo - 人脸识别

相关算法文档:人脸识别算法详细文档

1.4.1. 功能介绍

人脸注册与识别功能:

  • 人脸注册:从含人脸的裸流 ES 中提取 512 维特征向量以及 112x112 ARGB 裁剪图
  • 人脸识别:实时检测画面,完成对齐、特征提取并与注册模板比对
  • 双路 SCL 输出:Channel0 Port 0(1920x1080,用于显示)和 Channel1 Port 0(算法分辨率)
  • HDMI 显示:DISP->HDMI 本地显示
  • 帧缓冲叠加:MI_FB 根据比对结果绘制绿色(匹配)或白色(未匹配)矩形框

1.4.2. Pipeline 流程

H264/H265 ES --> VDEC (H264/H265 decode)
                 |
                 v
              MI_SCL
        +--------+------------------------------+
        |                                       |
        v                                       v
Channel0 Port0 --> DISP Layer --> HDMI
Channel1 Port0 --> FR Detect --> Align --> Feature --> Compare --> MI_FB --> HDMI OSD
                                      |
                                      '-- Feature / crop files (registration)

1.5 REID Demo - 以图搜图

相关算法文档:重识别算法详细文档

1.5.1. 功能介绍

基于视频码流的目标检测与重识别功能:

  • 视频解码显示:从 ES 文件读取 H.264/H.265 码流,解码后通过 HDMI 输出显示
  • 目标检测及保存:对视频帧进行检测,保存检测到目标的帧和裁剪图
  • 以图搜图:支持 jpg 格式输入图片,支持在线/离线搜索
  • 特征数据库生成:将识别特征和码流原图路径关联,生成 bin 文件
  • 搜索结果展示:通过 PIP 方式将搜索结果显示在显示器画面上

1.5.2. Pipeline 流程

数据库 Pipeline (mode=0)

+-----------+     +-------+     +------+     +-----+
| ES File   | --> | VDEC  | --> | DISP | --> | HDMI|
+-----------+     +-------+     +------+     +-----+
                  |      |
                  |      v
                  |  +----------+     +-----+     +------+
                  |  | SCL DET  | --> | DET | --> | RECT |
                  |  +----------+     +-----+     +------+
                  |                                |
                  |       |------------------------|
                  |       v
                  |     +----------+     +-----+
                  |-->  | SCL REID | --> | REID|
                  |     +----------+     +-----+
                  |         |
                  |         v
                  |     +-----------+      +--------------+
                  |     | VENC CROP |----> | source Files |
                  |     +-----------+      +--------------+
                  |
                  |     +------+      +------------+
                  |-----| VENC |----> | orgin Files |
                        +------+      +------------+

搜索 Pipeline (mode=1)

+------+     +------------+    +------------+    +--------------+    +--------------+    +------+    +------+    +---------+    +----------+
| IMAGE|---> | JPD SEARCH |--> | SCL SEARCH |--> | REID EXTRACT |--> | REID COMPARE |--->| FILE |--->| JPD  |--->| SCL PIP |--->| DISP PIP |
+------+     +------------+    +------------+    +--------------+    +--------------+    +------+    +------+    +---------+    +----------+

1.6 RET Demo - 以文搜图

相关算法文档:文本检索算法详细文档

1.6.1. 功能介绍

基于视频码流进行人形检测与文本检索图像功能:

  • 视频解码显示:从 ES 文件读取 H.264/H.265 码流,解码后通过 HDMI 输出显示
  • 目标检测及保存:对视频帧进行人形检测,保存检测到目标的帧
  • 以文搜图:支持输入文字,从保存的图片中进行搜索
  • 数据库生成:将识别结果保存为数据库文件
  • PIP 轮播:画中画轮播显示与文字最匹配的 5 张图片

1.6.2. Pipeline 流程

数据库 Pipeline

+-----------+     +-------+     +------+     +-----+
| ES File   | --> | VDEC  | --> | DISP | --> | HDMI|
+-----------+     +-------+     +------+     +-----+
                  |      |
                  |      v
                  |  +-------+     +-----+     +------+
                  |  | SCL   | --> | DET | --> | RECT |
                  |  +-------+     +-----+     +------+
                  |                                |
                  |       |------------------------|
                  |       v
                  |     +------+     +-----+
                  |-->  | SCL  | --> | RET |
                  |     +------+     +-----+
                  |                     |
                  |                     v
                  |     +------+      +------------+
                  |-----| VENC |----> | JPEG Files |
                        +------+      +------------+

搜索 Pipeline

+------+      +------+     +------+    +------+    +-----+    +----------+
| TEXT |--->  | RET  |---> | FILE |--->| JPD  |--->| SCL |--->| DISP PIP |
+------+      +------+     +------+    +------+    +-----+    +----------+

1.7 MOT Demo - 多目标跟踪

相关算法文档:VLM 算法详细文档

1.7.1. 功能介绍

基于视频码流进行多目标检测与跨帧跟踪功能:

  • 视频解码显示:从 H.264 文件读取码流,解码后通过 HDMI 输出显示
  • 多目标检测:对视频帧进行目标检测,识别行人与轿车
  • 跨帧跟踪:自动完成跨帧跟踪,为每个检测目标分配持久的 track_id,同一目标在所有帧中保持同一个 id
  • 跟踪框与标签显示:按 track_id 取色绘制彩色跟踪框(5 色循环:红、绿、蓝、黄、白)并标注 id:<track_id> 文字标签,叠加显示在 HDMI 画面上

1.7.2. Pipeline 流程

H264 ES --> VDEC (H264 解码)
              |
              +-- Port 0 (1920x1080) --> DISP Layer --> HDMI
              |
              +-- Port 1 (源分辨率)  --> MOT 算法线程
                                            |
                                            v
                                       ALGO_VLM_Run (run_det + run_mot)
                                            |
                                            v
                                       MI_FB 绘制跟踪框 --> HDMI OSD

1.8 SOT Demo - 单目标跟踪

相关算法文档:VLM 算法详细文档

1.8.1. 功能介绍

基于视频码流进行目标检测、自动选择并持续跟踪单个目标功能:

  • 视频解码显示:从 H.264 文件读取码流,解码后通过 HDMI 输出显示
  • 目标检测:对视频帧进行目标检测,将检测到的可跟踪目标(人或轿车)以黄色框标出
  • 自动选择跟踪目标:在检测结果中自动选取面积最大的目标作为跟踪对象,无需人工框选
  • 单目标跟踪:对选中的目标进行跨帧跟踪,以绿色粗框高亮显示
  • 丢失自动重选:目标离开画面或丢失后自动回退到检测,并在下一帧重新选择面积最大的目标继续跟踪

1.8.2. Pipeline 流程

  H.264 文件
┌──────────┐    Port 0 (显示)         ┌──────────┐      ┌──────────┐
│          ├─────────────────────────►│          │      │          │
│   VDEC   │                          │   DISP   ├─────►│   HDMI   │
│          │                          │          │      │          │
└────┬─────┘                          └──────────┘      └──────────┘
     │ Port 1 (算法)
┌──────────────┐
│              │
│  算法线程     │
│              │
│  VLM_Run     │── 检测模式: 找出所有目标,自动选最大目标
│  (检测/跟踪)  │── 跟踪模式: 跨帧跟踪单个目标
│              │
└──────┬───────┘
┌──────────────┐
│              │
│  Framebuffer │── 绘制跟踪/检测边界框
│  叠加层       │
│              │
└──────────────┘

1.9 SGPTV Demo - 以图生文

相关算法文档:VLM 算法详细文档

1.9.1. 功能介绍

基于指定目录的 JPEG 图片自动生成文字描述功能:

  • 图片扫描:扫描指定目录下的 JPEG 图片(.jpg / .jpeg),按文件名排序后依次处理
  • 图片描述生成:对每张图片自动生成一段文字描述其画面内容
  • 串口结果输出:将生成的文字描述通过串口终端打印输出(无 HDMI 显示通路)
  • 交互式浏览:自动预加载并描述首张图片,按 n 切换并描述下一张,按 q 退出

1.9.2. Pipeline 流程

JPEG 文件 -> 读取 -> JPD 解码(NV12) -> GetBuf -> ALGO_VLM_Run(SGPTV) -> 输出文字描述
                                               |
                                               +-> crop_func -> MI_SCL_StretchBuf

1.10 VRET Demo - 文搜视频

相关算法文档:VLM 算法详细文档

1.10.1. 功能介绍

基于文本查询对目录下的 H.264 视频进行检索并定位匹配片段功能:

  • 码流扫描:扫描指定目录下的 H.264 视频码流(.h264 / .264),逐条作为待检索目标
  • 文本特征编码:将查询文本编码为文本特征,扫描前仅编码一次
  • 视频检索打分:逐条解码视频并提取视觉特征,与查询文本计算相似度,保留每条码流得分最高的片段
  • 最佳匹配定位:在所有码流中选出得分最高的一条,并按帧率换算出最佳片段对应的实际时间段
  • 串口结果输出:检索结果通过串口终端打印(无 HDMI 显示通路),扫描完成后自动退出

1.10.2. Pipeline 流程

                              文本查询 ----------------------------------> ALGO_VLM_Run(文本) -> 文本特征
                                       (扫描前仅编码一次)

  H.264 目录 -> (逐文件)-> MI_VDEC(H264 -> NV12) -> [逐解码帧] ALGO_VLM_Run(vret)
                                                                |
                                            每填满 8 帧 -> 视觉特征  (step k)
                                                                |
                                  ALGO_VLM_GetCosSimi(视觉特征, 文本特征) -> 得分
                                                                |
                                       保留该文件得分最高 / 对应 step
                                                                |
                                       时间段 = [上一个特征帧号/fps , 本特征帧号/fps](实测)
                                                                |
                                       所有码流排序 -> 打印最佳码流 + 时间段

2. 编译环境说明

2.1 编译环境设置

在项目根目录下设置 arm64 编译环境:

export PATH=/tools/toolchain/aarch64-unknown-linux-gcc-12.4.0-glibc-2.37-gnu/bin:$PATH
export CROSS_COMPILE=aarch64-unknown-linux-gnu-12.4.0-
export ARCH=arm64
cd project
make linux-comake_mhera.emmc.glibc-12.4.0-arm64-ext4.d3.2048.fccsp16_lpddr4x_defconfig

注意! 如果板子ddr是2GB的,defconfig使用 linux-comake_mhera.emmc.glibc-12.4.0-arm64-ext4.d3.2048.fccsp16_lpddr4x_defconfig 如果板子ddr是4GB的,defconfig使用 linux-comake_mhera.emmc.glibc-12.4.0-arm64-ext4.d3.4096.fccsp16_lpddr4x_defconfig

2.2 编译命令

# 编译整个project
cd project
make clean;make image -j16

# 编译所有 DLA demo
cd sdk/verify/sample_code
make demo/dla

# 编译单个 demo(选择其一)
make demo/dla/det
make demo/dla/fr
make demo/dla/mot
make demo/dla/reid
make demo/dla/ret
make demo/dla/sgptv
make demo/dla/sot
make demo/dla/vret

# 清理编译产物
make demo/dla_clean

2.3 编译产物

  • sgs_demo_dla_det 可执行文件位于 out/arm64/app 目录下
  • sgs_demo_dla_fr 可执行文件位于 out/arm64/app 目录下
  • sgs_demo_dla_mot 可执行文件位于 out/arm64/app 目录下
  • sgs_demo_dla_reid 可执行文件位于 out/arm64/app 目录下
  • sgs_demo_dla_ret 可执行文件位于 out/arm64/app 目录下
  • sgs_demo_dla_sgptv 可执行文件位于 out/arm64/app 目录下
  • sgs_demo_dla_sot 可执行文件位于 out/arm64/app 目录下
  • sgs_demo_dla_vret 可执行文件位于 out/arm64/app 目录下

3. 运行环境说明

所有 DLA Demo 均运行在 SGS 系列芯片平台上,依赖 MI (Module Interface) 系统驱动和相应的算法库。

3.1 硬件要求

  • 开发板: SGS 系列开发板平台(如 Comake Pi D3)
  • 显示设备: 支持 HDMI 输出的显示器
  • 存储设备:
    • DET/FR/MOT/SOT Demo: 可使用板端 Flash 或 NFS 挂载目录
    • SGPTV/VRET Demo: 可使用板端 Flash 或 NFS 挂载目录(仅需存放模型与少量输入文件)
    • REID/RET Demo: 强烈建议使用 SATA 硬盘。由于需要存储大量图片和特征数据库,板端内存不足,NFS 网络存储速度较慢可能导致图片存储与数据库同步失败

具体连接可参考下图

图片描述

3.2 DET Demo 运行环境

目录结构要求:

DET Demo 需要模型文件和视频文件在同一目录下。建议在运行目录下创建如下结构:

./det/
├── sgs_demo_dla_det        # 可执行文件
├── spdy36s.img             # 检测模型文件
├── video1.h264             # 视频文件1(可多路)
├── video2.h264             # 视频文件2
├── video3.h264             # 视频文件3
└── video4.h264             # 视频文件4

3.3 FR Demo 运行环境

目录结构要求:

FR Demo 依赖特定的目录结构来存放输入码流、模型文件和输出特征文件。建议在运行目录下创建如下结构:

./fr/
├── sgs_demo_dla_fr        # 可执行文件
├── input/                 # 输入目录
│   ├── face.hevc          # H.265 示例码流
│   ├── face.avc           # H.264 示例码流
│   ├── fr_det_y24s.img    # 检测模型
│   ├── fr_feature_as.img  # 特征模型
│   └── fr_cos256.img      # 余弦模型
└── output/                # 输出目录 (可写)
    ├── FaceFeatureData    # 注册生成的特征文件
    └── FaceCrop.argb8888  # 注册生成的裁剪图

3.4 REID Demo 运行环境

存储要求 (非常重要):

  • 必须挂载 SATA 硬盘: 由于 REID Demo 需要保存大量 JPEG 图片和特征数据库,网络存储 (NFS) 延迟高,会导致特征数据库记录了图片路径但实际图片未保存成功的问题。

硬盘挂载步骤:

# 挂载 SATA 硬盘到 /home (或其他目录)
mount -t ext2 /dev/sda /home/

# 创建运行目录
mkdir -p /home/reid

目录结构要求:

REID Demo 需要将所有文件放在硬盘挂载目录下。建议目录结构:

/home/reid/
├── sgs_demo_dla_reid           # 可执行文件
├── video.h264                  # 输入码流文件
├── video.h265                  # 输入码流文件(可选)
├── reid_person_12y.img         # 人员重识别模型
├── reid_vehicle_22y.img        # 车辆重识别模型
├── sdy36s.img                  # 检测模型
├── query.jpg                   # 搜索查询图片(可选)
└── out/                        # 输出目录 (可写)
    ├── crop/                   # 裁剪图目录
    │   ├── 000001_crop.jpg
    │   ├── 000002_crop.jpg
    │   └── ...
    ├── origin/                 # 原始帧目录
    │   ├── 000001_org.jpg
    │   ├── 000002_org.jpg
    │   └── ...
    ├── person_bin              # 人员特征数据库
    └── vehicle_bin             # 车辆特征数据库

3.5 RET Demo 运行环境

存储要求:

  • 推荐使用 SATA 硬盘: 如果码流复杂且帧率较高,对存储性能要求较高。推荐使用 SATA 硬盘。如果存储介质性能不足,可以通过降低帧率 (-f 参数) 来缓解。

硬盘挂载步骤:

mount -t ext2 /dev/sda /home/

目录结构要求:

RET Demo 需要将所有文件放在硬盘挂载目录下。建议目录结构:

/home/ret/
├── sgs_demo_dla_ret                # 可执行文件
├── video.h264                      # 输入码流文件
├── video.h265                      # 输入码流文件(可选)
├── ret_zh_img_256as.img            # 中文图像模型
├── ret_zh_text77s.img              # 中文文本模型
├── cn_vocab.txt                    # 中文词表
├── ret_en_img_256as.img            # 英文图像模型
├── ret_en_text77s.img              # 英文文本模型
├── en_vocab.txt                    # 英文词表
├── sdy36s.img                      # 检测模型
└── out/                            # 输出目录 (可写)
    ├── frame_000001.jpg            # 检测到目标的视频帧
    ├── frame_000002.jpg
    ├── ...
    ├── image_bin                   # 图像特征数据库
    └── box_bin                     # 边界框数据库

输出目录:

建议输出目录 (-o 参数) 设置在硬盘路径下,例如 /home/ret/out/

3.6 MOT Demo 运行环境

目录结构要求:

MOT Demo 使用相对路径加载模型、字库和输入。建议目录结构:

mot/
├── sgs_demo_dla_mot        # 可执行文件
├── models/
│   └── sdy36s.img          # 检测模型
├── resource/
│   └── default.ttf         # TTF 字库(track_id 文字标签)
└── input/
    └── hqb.h264            # H264 裸流(每帧 16 字节帧头)

3.7 SOT Demo 运行环境

目录结构要求:

SOT Demo 需要检测模型、SOT 内部重检测模型和 SOT 跟踪模型。建议目录结构:

sot/
├── sgs_demo_dla_sot            # 可执行文件
├── models/
│   ├── sdy48s.img              # 检测模型 / SOT 内部重检测模型
│   ├── reid_person_12yxs.img   # SOT 人形跟踪模型
│   └── reid_vehicle_22yxs.img  # SOT 车跟踪模型(跟踪车时使用)
└── input/
    └── hqb.h264                # H264 测试视频(预封装格式)

3.8 SGPTV Demo 运行环境

目录结构要求:

测试时须在可执行文件同级目录创建 source 文件夹,把所有 JPEG 图片放入该文件夹。建议目录结构:

sgptv/
├── sgs_demo_dla_sgptv          # 可执行文件
├── source/                     # JPEG 输入目录
│   ├── image1.jpg
│   ├── image2.jpeg
│   └── ...
├── sgptv_vision.img            # 视觉模型
├── sgptv_head.img              # head 模型
├── sgptv_decoder.img           # decoder 模型
├── sgptv_embedding.npy         # embedding 模型
└── sgptv_json/                 # tokenizer JSON 配置目录
    ├── generation_config.json
    ├── tokenizer_config.json
    └── tokenizer.json

注意! SGPTV Demo 无 HDMI 显示通路,通过串口终端输出文字描述,需要串口线用于调试、网络用于文件传输。

3.9 VRET Demo 运行环境

目录结构要求:

测试时须在可执行文件同级目录创建 source 文件夹,把所有待搜索码流放入该文件夹。建议目录结构:

vret/
├── sgs_demo_dla_vret           # 可执行文件
├── source/                     # 待搜索 H.264 码流目录
│   ├── clip_a.h264
│   ├── clip_b.h264
│   └── ...
├── vret_vision.img             # 视觉模型
├── vret_text.img               # 文本模型
└── vret_json/                  # 分词器 JSON 目录
    ├── preprocessor_config.json
    ├── tokenizer_config.json
    └── tokenizer.json

注意! VRET Demo 无 HDMI 显示通路,扫描完所有码流后自动退出,匹配结果通过串口终端打印。


4. 运行说明

4.1 DET Demo - 目标检测

4.1.1 运行指令

# 基本用法
./sgs_demo_dla_det [选项]

# 命令行参数
-m <model_path>     # 检测模型文件路径(必选)
-v <video_list>     # 视频文件列表,逗号分隔(必选)
-d <threshold>      # 检测置信度阈值(可选,默认0.5)
-r <resolution>     # 显示分辨率:0=1920x1080(默认),1=3840x2160

# 使用示例
# 单路视频检测
./sgs_demo_dla_det -m ./spdy36s.img -v test.h264

# 4. 四路视频检测
./sgs_demo_dla_det -m ./spdy36s.img -v video1.h264,video2.h264,video3.h264,video4.h264

# 自定义检测阈值
./sgs_demo_dla_det -m ./spdy36s.img -v test.h264 -d 0.7

# 4K 分辨率显示
./sgs_demo_dla_det -m ./spdy36s.img -v test.h264 -r 1

4.1.2 测试用例

用例ID 测试目标 操作步骤 执行命令 预期结果
DET-01 单路视频检测功能 1. 准备单个H.264视频文件
2. 执行检测命令
3. 验证检测框准确性
./sgs_demo_dla_det -m ./spdy36s.img -v test.h264 自动选择1x1布局,准确检测人形目标并绘制人脸、人头和人身三个黄色检测框
DET-02 置信度阈值调节(低) 1. 测试低阈值设置
2. 验证检测灵敏度
3. 检查误检和漏检率
./sgs_demo_dla_det -m ./spdy36s.img -v test.h264 -d 0.1 低阈值检测更宽松,对人形要求低,容易检测人形并绘制较多的检测框
DET-03 置信度阈值调节(高) 1. 测试高阈值设置
2. 验证检测灵敏度
3. 检查误检和漏检率
./sgs_demo_dla_det -m ./spdy36s.img -v test.h264 -d 0.9 高阈值检测更严格,对人形要求高,较难检测人形并绘制较少的检测框
DET-04 4K分辨率显示 1. 使用4K显示器
2. 执行4K分辨率命令
3. 验证显示效果
./sgs_demo_dla_det -m ./spdy36s.img -v test.h264 -r 1 日志中打印Display width: 3840;Display height: 2160,显示分辨率为3840x2160,视频和检测框正常显示
DET-05 最大路数测试 1. 准备16个H.264视频文件(可重复使用同一个h264文件)
2. 执行检测命令
3. 验证系统性能
./sgs_demo_dla_det -m ./spdy36s.img -v video1.h264,...,video16.h264 自动选择4x4布局,所有视频正常播放和检测,准确检测人形并绘制人脸、人头、人身三个检测框

4.1.3 验证方法

终端输出验证

Parsed arguments:
  Model path: ./spdy36s.img
  Video count: 4
  Video 1: video1.h264
  Video 2: video2.h264
  Video 3: video3.h264
  Video 4: video4.h264
  Detection threshold: 0.500000
  Display width: 1920
  Display height: 1080

Auto-selected layout 2 for 4 video(s)

Display initialized: screen=1920x1080, layerSize=1920x1080...

Detection algorithm initialized with input 640x352.

Video playback started. Press 'q' to quit.

显示效果验证

  • HDMI显示设备上显示视频播放画面
  • 检测到的目标周围绘制黄色检测框(人脸、人头、人身)
  • 多路视频按照自动布局显示在屏幕上

程序退出

  • 在终端输入 q 并按回车退出
  • 程序会清理所有资源并正常退出

4.2 FR Demo - 人脸识别

4.2.1 运行指令

# 通用格式
./sgs_demo_dla_fr <mode> [image <es_path>] [type <codec_type>] [featuredatanum <num>] [featuredata <file> <...> <file>] [cropdata <file>] [timeout <seconds>]

# 参数说明
<mode>              # 0=注册,1=识别
image <es_path>     # VDEC 循环播放的 ES 文件(默认 input/face.hevc)
type <codec_type>   # 1=H264,2=H265(默认 2)
featuredatanum <num>    # 特征文件数量,范围1~5(默认 1)
featuredata <file>  # 特征文件路径(默认 output/FaceFeatureData)
cropdata <file>     # 112x112 ARGB 裁剪图片(默认 output/FaceCrop.argb8888)
timeout <seconds>   # 运行秒数,-1 表示等待 q 键(默认 -1)

# 使用示例
# 注册人脸模板并保留裁剪图
./sgs_demo_dla_fr 0 image input/face.hevc type 2 featuredata output/face1.feature cropdata output/face1.argb timeout 20

# 使用已保存的模板进行识别
./sgs_demo_dla_fr 1 image input/face.hevc type 2 featuredata output/face1.feature timeout 60

# 使用多个模板进行识别
./sgs_demo_dla_fr 1 image input/face.hevc type 2 featuredatanum 3 featuredata output/face1.feature output/face2.feature output/face3.feature timeout 60

4.2.2 测试用例

用例ID 测试场景 操作步骤 执行命令 预期结果
FR-01 单人脸注册 1. 将目标 ES 文件拷贝到设备
2. 使用指定输出路径运行注册命令
3. 查看生成的特征与裁剪文件
./sgs_demo_dla_fr 0 image input/face.hevc type 2 featuredata output/face1.feature cropdata output/face1.argb timeout 15 生成 face1.featureface1.argb;串口打印 Face detectedwrite file xx success 等信息;HDMI 显示绿色框
FR-02 H.264码流人脸匹配/不匹配识别 1. 确认 FR-01 的输出文件存在
2. 运行识别命令
3. 观察相似度与叠加框颜色
./sgs_demo_dla_fr 1 image input/face.avc type 1 featuredata output/face1.feature timeout 30 匹配时串口打印 Match found (similarity: X.XX) 且相似度 >0.45,画面绘制绿色框;不匹配时串口打印 No match found (max similarity: X.XX) 且相似度 < 0.45,画面绘制白色框
FR-03 H.265码流人脸匹配/不匹配识别 1. 确认 FR-01 的输出文件存在
2. 运行识别命令
3. 观察相似度与叠加框颜色
./sgs_demo_dla_fr 1 image input/face.hevc type 2 featuredata output/face1.feature timeout 30 匹配时串口打印 Match found (similarity: X.XX) 且相似度 >0.45,画面绘制绿色框;不匹配时串口打印 No match found (max similarity: X.XX) 且相似度 < 0.45,画面绘制白色框
FR-04 多个人脸白名单的匹配/不匹配识别 1. 使用 FR-01 case 输出多个人脸特征文件并确认输出文件存在
2. 运行识别命令
3. 观察相似度与叠加框颜色
./sgs_demo_dla_fr 1 image input/face.hevc type 2 featuredatanum 3 featuredata output/face1.feature output/face2.feature output/face3.feature timeout 30 匹配时串口打印 Match found (similarity: X.XX) 且相似度 >0.45,画面绘制绿色框;不匹配时串口打印 No match found (max similarity: X.XX) 且相似度 < 0.45,画面绘制白色框
FR-05 超时退出 1. 设置较短 timeout 运行识别
2. 等待程序自动退出
./sgs_demo_dla_fr 1 image input/face.hevc type 2 featuredata output/face1.feature timeout 10 约 10 秒后自动退出,无需人工干预;线程正确结束,串口打印清理日志

4.2.3 验证方法

显示效果验证

  • HDMI 上循环播放 ES流
  • 绿色框 表示匹配成功
  • 白色框 表示未匹配

文件输出验证

  • 注册模式产生 50,176 字节的 ARGB 文件(112x112)
  • 产生 512 个 MI_S16 组成的特征文件

程序退出

  • 手动:在串口终端输入 q 并回车
  • 自动:依赖 timeout 设置,时间到达后自行退出

4.3 REID Demo - 以图搜图

4.3.1 运行指令

# 生成人员数据库
./sgs_demo_dla_reid -i <input_stream> -W <width> -H <height> -f <fps> -t <codec_type> -O <output_path> -m 0 -o 0 -P <person_model> -D <det_model>

# 生成车辆数据库
./sgs_demo_dla_reid -i <input_stream> -W <width> -H <height> -f <fps> -t <codec_type> -O <output_path> -m 0 -o 1 -V <vehicle_model> -D <det_model>

# 使用已有数据库进行人员搜索
./sgs_demo_dla_reid -i <input_stream> -W <width> -H <height> -f <fps> -t <codec_type> -I <input_picture> -w <pic_width> -h <pic_height> -b <feature_bin> -m 1 -o 0 -P <person_model> -T <threshold>

# 使用已有数据库进行车辆搜索
./sgs_demo_dla_reid -i <input_stream> -W <width> -H <height> -f <fps> -t <codec_type> -I <input_picture> -w <pic_width> -h <pic_height> -b <feature_bin> -m 1 -o 1 -V <vehicle_model> -T <threshold>

# 动态以图搜图(人员)
./sgs_demo_dla_reid -i <input_stream> -W <width> -H <height> -f <fps> -t <codec_type> -I <input_picture> -w <pic_width> -h <pic_height> -O <output_path> -m 0 -o 0 -P <person_model> -T <threshold> -D <det_model>

# 示例
./sgs_demo_dla_reid -i ./hqb.h264 -W 1920 -H 1080 -f 20 -t 0 -O /home/reid/out -m 0 -o 0 -P reid_person_12y.img -D sdy36s.img

4.3.2 参数说明

参数 说明
-i 输入 ES 码流文件路径
-t 编码类型:0=H.264,1=H.265
-W 视频宽度(1-3840)
-H 视频高度(1-2160)
-f 视频帧率(1-30)
-m 运行模式:0=生成新数据库,1=使用已有数据库
-o 目标类型:0=人员,1=车辆
-P 人员重识别模型文件
-V 车辆重识别模型文件
-O 输出目录
-D 检测模型文件
-I 输入图片文件(搜索用)
-w 输入图片宽度
-h 输入图片高度
-b 特征数据库文件
-T REID 模型阈值(0.0~1.0)

4.3.3 测试用例

用例ID 测试目标 操作步骤 执行命令 预期结果
REID-01 测试人员数据库生成(H.264) 1. 执行程序
2. 等待码流播放完成
3. 检查输出目录
./sgs_demo_dla_reid -i ./hqb.h264 -W 1920 -H 1080 -f 20 -t 0 -O /home/reid/out -m 0 -o 0 -P reid_person_12y.img -D sdy36s.img 1. HDMI 显示视频画面
2. /home/reid/out目录生成 person.bin
3. /home/reid/out/person路径生成 frame_.jpg 原始图片
4. /home/reid/out/person_source路径生成 source/source
.jpg 裁剪图片
REID-02 测试车辆数据库生成(H.264) 1. 执行程序
2. 等待码流播放完成
3. 检查输出目录
./sgs_demo_dla_reid -i ./hqb.h264 -W 1920 -H 1080 -f 20 -t 0 -O /home/reid/out -m 0 -o 1 -V reid_vehicle_22y.img -D sdy36s.img 1. HDMI 显示视频画面
2. /home/reid/out目录生成 vehicle.bin
3. /home/reid/out/vehicle生成 frame_.jpg 原始图片
4. /home/reid/out/vehicle_source目录生成 source/source
.jpg` 裁剪图片
REID-03 测试暂停/恢复功能 1. 执行 REID-01 命令
2. 播放过程中输入 0 暂停
3. 再次输入 0 恢复
4. 输入 q 正常退出
同 REID-01 命令 1. 第一次输入 0,视频暂停
2. 第二次输入 0,视频恢复
3. 输入 q 后正常退出,数据库生成成功
REID-04 测试人员离线搜索功能(mode=1) 1. 在 REID-01 完成后执行
2. 输入 1 执行搜索
./sgs_demo_dla_reid -i ./hqb.h264 -W 1920 -H 1080 -f 20 -t 0 -I ./test_person.jpg -w 256 -h 128 -b /home/reid/out/person.bin -m 1 -o 0 -P reid_person_12y.img -T 0.7 1. HDMI 显示视频画面
2. 输入 1 后执行搜索,主码流会暂停播放
3. 终端打印 Top 5 搜索结果
4. 左上角 PIP 显示搜索结果轮播
REID-05 测试车辆离线搜索功能(mode=1) 1. 在 REID-02 完成后执行
2. 输入 1 执行搜索
3. 验证搜索结果
./sgs_demo_dla_reid -i ./hqb.h264 -W 1920 -H 1080 -f 20 -t 0 -I ./test_vehicle.jpg -w 256 -h 128 -b /home/reid/out/vehicle.bin -m 1 -o 1 -V reid_vehicle_22y.img -T 0.3 1. HDMI 显示视频画面
2. 输入 1 后执行搜索
3. 终端打印 Top 5 搜索结果
4. 左上角 PIP 显示搜索结果轮播
REID-06 测试 PIP 轮播控制功能 1. 执行 REID-04 命令
2. 输入 1 执行搜索进入 PIP 显示
3. 按 n 查看下一张
4. 按 p 查看上一张
5. 按 s 切换自动/手动模式
6. 按 q 退出 PIP 显示
在 REID-01 完成后执行 1. 输入 1 后进入 PIP 轮播模式(自动播放)
2. 按 s 切换自动播放/手动模式
3. 按 n 切换到下一张图片
4. 按 p 切换到上一张图片
5. 按 q 退出 PIP 显示模式
REID-07 测试人员动态搜索功能(H.264) 1. 执行程序
2. 程序自动边生成数据库边搜索
3. 验证搜索结果
./sgs_demo_dla_reid -i ./hqb.h264 -W 1920 -H 1080 -f 20 -t 0 -I ./test_person.jpg -w 256 -h 128 -O /home/reid/out -m 0 -o 0 -P reid_person_12y.img -T 0.7 -D sdy36s.img 1. HDMI 显示视频画面
2. 程序边播放边生成数据库
3. 输入 1后码流暂停播放,显示针对当前已播放码流的搜索结果
4. 当画面中出现更匹配的画面时,搜索结果会更新

4.4 RET Demo - 以文搜图

4.4.1 运行指令

# 基本用法
./sgs_demo_dla_ret -i <input_file> -o <output_dir> -W <width> -H <height> -f <fps> -I <img_model> -T <txt_model> -V <vocab_file> -D <det_model> -l <language> -t <codec_type>

# 中文识别(H.264)
./sgs_demo_dla_ret -i ./hqb.h264 -o /home/ret/out -W 1920 -H 1080 -f 20 -I ./ret_zh_img_256as.img -T ./ret_zh_text77s.img -V ./cn_vocab.txt -D ./sdy36s.img -l 0 -t 0

# 英文识别(H.264)
./sgs_demo_dla_ret -i ./hqb.h264 -o /home/ret/out -W 1920 -H 1080 -f 20 -I ./ret_en_img_256as.img -T ./ret_en_text77s.img -V ./en_vocab.txt -D ./sdy36s.img -l 1 -t 0

4.4.2 参数说明

参数 说明
-i 输入 ES 码流文件路径
-o 输出目录
-W 视频宽度(1-3840)
-H 视频高度(1-2160)
-f 视频帧率(1-120)
-I 图像模型文件路径
-T 文本模型文件路径
-V 词表模型文件路径
-D 检测模型文件路径
-l 语言设置:0=中文,1=英文
-t 编码类型:0=H.264,1=H.265

4.4.3 测试用例

用例ID 测试目标 操作步骤 执行命令 预期结果
RET-01 测试码流播放和暂停/恢复功能 1. 执行程序
2. 播放过程中输入 '0' 暂停
3. 再次输入 '0' 恢复
4. 统计图片数量
./sgs_demo_dla_ret -i hqb.h264 -o /home/ret/out/ -W 1920 -H 1080 -f 20 -I ret_zh_img_256as.img -T ret_zh_text77s.img -V cn_vocab.txt -D sdy36s.img -t 0 -l 0 1. HDMI 显示视频画面
2. jpg 图片数量会持续增加
3. 视频成功进入循环播放
4. 程序打印应存储的图片数,实际保存数应一致
5. 视频暂停
6. 视频恢复播放
RET-02 测试数据库生成功能 1. 等待码流第一次播放完毕后自动重复播放
2. 检查数据库文件
等待码流完整播放一次 1. 显示器的码流会开始循环播放
2. 检查应用所在目录是否生成数据库文件 box_bin 和 image_bin
RET-03 测试中文搜索功能 1. 在 RET-02 的基础上输入1进入搜索模式
2. 搜索 穿红衣服的人
1. 输入 1+回车 进入搜索模式
2. 输入 穿红衣服的人+回车
1. 视频暂停播放
2. HDMI 左上角显示搜索结果画面,会轮播与穿红衣服的人匹配度最高的5张图片
3. 串口会持续打印左上角播放图片的名字
RET-04 重复测试搜索功能 1. 输入q退出本次搜索
2. 再次输入穿黄衣服的人进行搜索
3. 输入 q退出,输入骑车的人
1. 输入 q 退出当前搜索
2. 输入 穿黄衣服的人
3. 输入 q 后输入 骑车的人
1. 退出当前搜索和反复搜索的功能正常,无错误日志
RET-05 测试退出搜索 1. 输入 q退出本次搜索
2. 继续输入 q,退出搜索模式
3. 重新输入1进入搜索模式
在搜索模式中按 q 两次 1. 退出本次搜索,仍处于搜索模式中
2. 退出搜索模式,显示器码流恢复播放
3. 再次进入搜索模式后工作正常
RET-06 测试退出 1. 在开始播放码流后输入q退出
2. 暂停后直接退出
3. 搜索后退出
输入 q 退出 这几种退出情况下都会生成对应的数据库文件 box_bin 和 image_bin,程序正常退出,无错误日志
RET-07 测试英文搜索功能 1. 执行程序,等待码流第一次播放完毕后输入1进入搜索模式
2. 搜索 The person wearing red clothes
3. 输入q退出
./sgs_demo_dla_ret -i hqb.h264 -o /home/ret/out/ -W 1920 -H 1080 -f 20 -I ret_en_img_256as.img -T ret_en_text77s.img -V en_vocab.txt -D sdy36s.img -t 0 -l 1 1. 显示器左上角会循环播放与The person wearing red clothes最匹配的5张图
2. 终端会打印图片路径
3. 程序正常退出,无错误打印

4.5 MOT Demo - 多目标跟踪

4.5.1 运行指令

# 通用格式
./sgs_demo_dla_mot -i <input> -m <det_model> [-t <font>] [-W <width>] [-H <height>] [-f <fps>] [--help]

# 使用示例
./sgs_demo_dla_mot -i input/hqb.h264 -t resource/default.ttf -m models/sdy36s.img -W 1920 -H 1080

4.5.2 参数说明

参数 说明 必选 默认值
-i, --input <file> H264 输入文件路径 -
-m, --det-model <path> 检测模型文件(.img) -
-t, --font <path> track_id 文字标签的 TTF 字库(不提供则不画文字标签) -
-W, --disp-width <width> 源视频宽度(1-4096) 1920
-H, --disp-height <height> 源视频高度(1-4096) 1080
-f, --frame-rate <fps> 推流帧率(1-120) 30
--help 显示帮助信息 -

注意! -W / -H 必须与实际码流分辨率一致,否则会出现解码/显示异常。

4.5.3 测试用例

用例ID 测试目标 操作步骤 执行命令 预期结果
MOT-01 正常 MOT 1080p 跟踪 1. 执行程序
2. 等待 HDMI 显示画面
3. 观察彩色跟踪框及 id 文字标签
4. 等待码流至少循环播放一次
./sgs_demo_dla_mot -i input/hqb.h264 -t resource/default.ttf -m models/sdy36s.img -W 1920 -H 1080 -f 20 1. HDMI 显示视频画面
2. 仅行人和轿车有彩色跟踪框,按 track_id 取色(5 色循环)
3. 每个框上方有 id: 文字标签,同一目标 id 与颜色保持一致
4. 文件播放完后自动循环
MOT-02 暂停/恢复/退出功能 1. 执行 MOT-01 命令
2. 播放稳定后输入 p 回车暂停
3. 等待约 5 秒
4. 再次输入 p 回车恢复
5. 输入 q 回车退出
同 MOT-01 命令 1. 第一次按 p:码流暂停发送、算法暂停处理
2. 第二次按 p:播放正常恢复,track_id 跨越暂停边界保持稳定
3. 输入 q 回车无错误打印,正常退出

4.6 SOT Demo - 单目标跟踪

4.6.1 运行指令

# 通用格式
./sgs_demo_dla_sot -i <input> -D <det_model> -s <det4sot_model> -S <sot_model> [-m <0|1>] [-o <0|1>] [-W <width>] [-H <height>] [-T <threshold>] [--help]

# 跟踪人(示例)
./sgs_demo_dla_sot -i hqb.h264 -D ./models/sdy48s.img -s ./models/sdy48s.img -S ./models/reid_person_12yxs.img -m 1 -o 0 -W 1920 -H 1080 -T 0.3

# 跟踪车(示例)
./sgs_demo_dla_sot -i hqb.h264 -D ./models/sdy48s.img -s ./models/sdy48s.img -S ./models/reid_vehicle_22yxs.img -m 1 -o 1 -W 1920 -H 1080 -T 0.3

4.6.2 参数说明

参数 说明 必选 默认值
-i, --input <file> 输入 H.264 文件路径
-D, --det-model <path> 检测模型路径
-s, --det4sot-model <path> SOT 内部检测模型路径
-S, --sot-model <path> SOT 跟踪模型路径
-m, --enable-md <0\|1> 启用运动检测预过滤,0:关 1:开 0
-o, --target-class <0\|1> 跟踪目标类别:0=人 / 1=轿车 0
-W, --disp-width <w> 显示宽度(1-4096) 1920
-H, --disp-height <h> 显示高度(1-4096) 1080
-T, --track-threshold <f> SOT 跟踪置信度阈值,范围 (0, 1.0] 0.3
--help 显示帮助信息

注意! 关于 -D-s-s(det4sot)是 SOT 跟踪过程中内部重新检测时使用的模型,通常与检测模型指定同一文件效果最佳。

4.6.3 测试用例

用例ID 测试目标 操作步骤 执行命令 预期结果
SOT-01 跟踪人 1. 执行程序
2. 观察自动选中目标与绿色跟踪框
3. 观察目标离开/重现行为
./sgs_demo_dla_sot -i hqb.h264 -D sdy48s.img -s sdy48s.img -S reid_person_12yxs.img -m 1 -o 0 -W 1920 -H 1080 -T 0.3 以当前帧面积最大的 作为跟踪目标(日志出现 SetSot auto-pick + SOT tracking started),屏幕显示绿色跟踪框;目标离开画面后绿色框消失、自动回检测态;目标重新出现后自动恢复跟踪
SOT-02 跟踪车 1. 执行程序
2. 观察自动选中目标与绿色跟踪框
./sgs_demo_dla_sot -i hqb.h264 -D sdy48s.img -s sdy48s.img -S reid_vehicle_22yxs.img -m 1 -o 1 -W 1920 -H 1080 -T 0.3 以当前帧面积最大的 轿车 作为跟踪目标(日志出现 SetSot auto-pick + SOT tracking started),屏幕显示绿色跟踪框;丢失后自动回检测态、重现后恢复跟踪
SOT-03 按 q 退出 1. 启动 SOT-01 命令
2. 按 q + 回车退出
同 SOT-01 命令 显示 [INFO]: exit requested,正常退出(return 0)

4.7 SGPTV Demo - 以图生文

4.7.1 运行指令

# 通用格式
./sgs_demo_dla_sgptv -i <input_dir> [-V <vision_model>] [-H <head_model>] [-D <decoder_model>] [-E <embedding_model>] [-J <json_path>] [-h]

# 使用示例
./sgs_demo_dla_sgptv \
    -i source/ \
    -V sgptv_vision.img \
    -H sgptv_head.img \
    -D sgptv_decoder.img \
    -E sgptv_embedding.npy \
    -J sgptv_json/

4.7.2 参数说明

参数 必选/可选 说明
-i, --input 必选 JPEG 输入目录路径
-V, --vision-model 可选 vision 模型路径
-H, --head-model 可选 head 模型路径
-D, --decoder-model 可选 decoder 模型路径
-E, --embedding-model 可选 embedding 模型路径
-J, --json-path 可选 SGPTV JSON 配置目录
-h, --help 可选 打印帮助

4.7.3 测试用例

用例ID 测试目标 操作步骤 执行命令 预期结果
SGPTV-01 验证以图生文流程 1. 准备 JPEG 目录与全部模型/JSON
2. 运行 demo
./sgs_demo_dla_sgptv -i source/ -V sgptv_vision.img -H sgptv_head.img -D sgptv_decoder.img -E sgptv_embedding.npy -J sgptv_json/ 首图预加载成功,VLM 初始化成功,输出 [RESULT_RAW] 文字描述,描述与图片内容匹配
SGPTV-02 交互切图与退出 1. 在 SGPTV-01 基础上输入 n 至少 3 次
2. 验证每张描述与图片匹配
3. 输入 q 退出
交互操作 每次按 n 后解码下一张图片并输出文字描述,描述与图片内容匹配;按 q 后打印 Quit. 并正常退出

4.8 VRET Demo - 文搜视频

4.8.1 运行指令

# 通用格式
./sgs_demo_dla_vret -i <input_dir> -p <prompt> -f <fps> -V <vision_model> -T <text_model> -J <json_path> [-W <width>] [-H <height>] [-s <frame_shift>] [-h]

# 使用示例
./sgs_demo_dla_vret -i source/ -p "Departure video at the airport terminal" -f 30 -V vret_vision.img -T vret_text.img -J vret_json/ -W 1920 -H 1080

4.8.2 参数说明

参数 必选/可选 取值范围/示例 说明
-i, --input 必选 目录路径 待搜索的 H.264 码流所在目录
-p, --prompt 必选 文本字符串 要搜索的文本查询
-f, --fps 必选 1 - 30 码流帧率,用于把 step 换算为实际时间段
-V, --vision-model 必选 文件路径 vret 视觉模型路径
-T, --text-model 必选 文件路径 vret 文本模型路径
-J, --json-path 必选 目录路径 vret 分词器 json 目录
-W, --width 可选 1 - 4096(默认 1920) VDEC 通道宽度;设为 ≥ 目录中最大码流的分辨率
-H, --height 可选 1 - 4096(默认 1080) VDEC 通道高度;设为 ≥ 目录中最大码流的分辨率
-s, --frame-shift 可选 1 - 8(默认 4) 模型缓存移位;值越大单个片段信息越多但精度下降
-h, --help 可选 打印帮助

4.8.3 测试用例

用例ID 测试目标 操作步骤 执行命令 预期结果
VRET-01 搜索指定码流(如交通场景) 1. 准备 source 码流目录与模型/JSON
2. 执行程序
3. 等待扫描完成
./sgs_demo_dla_vret -i source/ -p "Traffic video at the intersection" -f 30 -s 4 -V vret_vision.img -T vret_text.img -J vret_json/ -W 1920 -H 1080 打印 ==================== BEST MATCH ==================== 块,含最佳文件、得分/step 与 time segment;-p 描述词对应的码流应被打印为最佳文件,time segment 为最匹配该描述词的时间段
VRET-02 搜索指定码流(如航站楼场景) 1. 在 VRET-01 基础上更换 -p 文本
2. 执行程序
./sgs_demo_dla_vret -i source/ -p "Departure video at the airport terminal" -f 30 -s 4 -V vret_vision.img -T vret_text.img -J vret_json/ -W 1920 -H 1080 打印 ==================== BEST MATCH ==================== 块,最佳文件应为 -p 描述词对应的码流,并给出匹配时间段

5. 运行结果说明

5.1 正常运行状态

所有 DLA Demo 启动后,会执行以下初始化操作:

  1. 系统初始化:加载 MI 系统驱动,初始化各模块
  2. 模型加载:加载相应的算法模型文件
  3. 资源分配:分配视频通道、显示图层、内存等资源
  4. 开始处理:启动视频解码、算法推理和结果显示

    正常启动后,终端会显示初始化成功信息并开始输出处理日志。

5.2 各功能场景运行结果

5.2.1 DET Demo 运行结果

正常运行状态

  • HDMI 显示器显示多路视频画面
  • 根据视频数量自动选择最佳布局(1x1、2x2、3x3、4x4等)
  • 检测到的目标周围绘制矩形检测框
  • 终端输出检测信息

终端输出示例

[INFO] System initialized successfully
[INFO] Detection model loaded: spdy36s.img
[INFO] Video channels: 4
[INFO] Auto layout: 2x2
[INFO] Start detection...
[INFO] Channel 0: detected 3 objects
[INFO] Channel 1: detected 5 objects

显示效果

  • 视频正常播放
  • 检测框实时叠加在视频上
  • 多路视频按网格布局显示

5.2.2 FR Demo 运行结果

注册模式(mode=0)

  • HDMI 显示器显示人脸视频
  • 检测到人脸后自动提取特征
  • 生成512维特征向量文件
  • 保存112x112 ARGB裁剪图

识别模式(mode=1)

  • HDMI 显示器显示实时人脸识别视频
  • 检测到人脸后进行特征比对
  • 匹配成功:绘制绿色矩形框
  • 未匹配:绘制白色矩形框

终端输出示例

[INFO] Face recognition started
[INFO] Registered features loaded: alice.feature
[INFO] Video codec: H.265
[INFO] Face detected at (x,y,w,h): (100,150,80,80)
[INFO] Feature extracted, comparing...
[INFO] Match found! Confidence: 0.92
[INFO] Draw green rectangle at (100,150,80,80)

5.2.3 REID Demo 运行结果

数据库生成模式(mode=0)

  • HDMI 显示器显示视频解码画面
  • 检测到目标后自动裁剪和保存
  • 生成 JPEG 格式的裁剪图
  • 生成特征数据库文件(.bin)
  • 保存原始帧图片

文件输出结构

output/
├── crop/              # 裁剪图目录
│   ├── 000001_crop.jpg
│   ├── 000002_crop.jpg
│   └── ...
├── origin/            # 原始帧目录
│   ├── 000001_org.jpg
│   ├── 000002_org.jpg
│   └── ...
└── feature.bin        # 特征数据库文件

搜索模式(mode=1)

  • HDMI 显示器显示视频解码画面
  • PIP(画中画)显示搜索结果
  • 按相似度排序显示最匹配的图片
  • 终端输出相似度分数

终端输出示例

[INFO] REID database generation started
[INFO] Target type: Person
[INFO] Detection model loaded
[INFO] REID model loaded
[INFO] Detected object, saving crop...
[INFO] Feature extracted, saving to database...
[INFO] Database saved: feature.bin
[INFO] Total objects: 150

[INFO] REID search started
[INFO] Query image loaded: query.jpg
[INFO] Searching in database...
[INFO] Top 5 matches:
[INFO]   #1: 000123_crop.jpg (similarity: 0.95)
[INFO]   #2: 000045_crop.jpg (similarity: 0.88)
[INFO]   #3: 000089_crop.jpg (similarity: 0.82)

5.2.4 RET Demo 运行结果

数据库生成模式

  • HDMI 显示器显示视频解码画面
  • 检测人形目标并保存帧图片
  • 生成文本-图像特征数据库

搜索模式

  • HDMI 显示器显示视频解码画面
  • PIP 轮播显示与输入文字最匹配的5张图片
  • 终端输出匹配结果

终端输出示例

[INFO] RET demo started
[INFO] Language: Chinese
[INFO] Image model loaded: ret_zh_img_256as.img
[INFO] Text model loaded: ret_zh_text77s.img
[INFO] Vocabulary loaded: cn_vocab.txt
[INFO] Detection started...
[INFO] Person detected, saving frame...
[INFO] Feature extracted and saved
[INFO] Database generation completed

[INFO] Text search started
[INFO] Query text: 穿红色衣服的人
[INFO] Searching...
[INFO] Top 5 results:
[INFO]   #1: frame_00123.jpg (score: 0.91)
[INFO]   #2: frame_00456.jpg (score: 0.85)
[INFO]   #3: frame_00078.jpg (score: 0.79)
[INFO] Displaying results in PIP mode...

5.2.5 MOT Demo 运行结果

正常运行状态

  • HDMI 显示器显示视频画面
  • 仅行人(class_id=0)和轿车(class_id=2)目标绘制彩色跟踪框,按 track_id 取色(5 色循环:红、绿、蓝、黄、白)
  • 每个跟踪框上方显示 id:<track_id> 文字标签
  • 同一目标在所有帧中颜色与 id 保持一致
  • 输入文件播放完后自动循环

终端输出示例

vlm_version:vlm#xxxxx
model path is sdy36s.img
[INFO]:_SGS_DEMO_DispThread[...]: disp thread started, file=input/hqb.h264, fps=30
[INFO]:_SGS_DEMO_MotAlgoThread[...]: algo thread started
[INFO]:_SGS_DEMO_AppRun[...]: MOT demo running. Press 'p' to pause/resume, 'q' to quit.

5.2.6 SOT Demo 运行结果

正常运行状态

  • HDMI 显示器显示视频画面
  • 检测阶段:全部检测框为黄色,自动选中面积最大的可跟踪目标(人/车)
  • 跟踪阶段:被跟踪目标以绿色粗框高亮显示
  • 目标丢失后绿色框消失,自动回检测态并在下一帧重新选择目标

终端输出示例

[INFO]: SOT demo running. Auto-selects the largest target and tracks it.
[INFO]:_SGS_DEMO_AutoPickAndSetSot[...]: SetSot auto-pick idx [0] class=0 score=0.85
[INFO]:_SGS_DEMO_AutoPickAndSetSot[...]: SOT tracking started, class=0

5.2.7 SGPTV Demo 运行结果

正常运行状态

  • 串口终端输出每张图片的文字描述([RESULT_RAW]
  • 首图自动预加载并输出描述
  • n 切换下一张图片并输出对应描述

终端输出示例

[INFO] VLM (sgptv) initialized
[INFO] Found 15 images in source/
[INFO] Pre-loading first image: source/ILSVRC2012_val_00000001.JPEG
[RESULT_RAW] A dog is standing on the grass.

[2/15] source/ILSVRC2012_val_00000002.JPEG
Press 'n' for next image, 'q' to quit: n
[RESULT_RAW] A group of people walking on a street.

5.2.8 VRET Demo 运行结果

正常运行状态

  • 逐条扫描 source 目录中的 H.264 码流,打印每条码流的最佳得分、step 与时间段
  • 所有码流处理完毕后,打印得分最高的码流及其最佳片段对应的实际时间段
  • 扫描完成后自动退出

终端输出示例

[INFO] Found 3 H.264 streams in source/
[INFO] VLM (vret) initialized
[INFO] Query prompt encoded: "Departure video at the airport terminal"
[INFO] searching: source/clip_a.h264
[INFO] source/clip_a.h264 : best score=0.5231 at step 12  [1.60s ~ 1.87s]
[INFO] searching: source/clip_b.h264
[INFO] source/clip_b.h264 : best score=0.8642 at step 30  [4.00s ~ 4.27s]

==================== BEST MATCH ====================
file:        source/clip_b.h264
score:       0.8642 (at step 30)
time segment: 4.00s ~ 4.27s
===================================================

5.3 常见问题

5.3.1 存储相关问题

REID/RET Demo 存储失败

  • 现象:特征数据库记录了图片路径,但实际图片未保存成功
  • 原因:NFS 网络存储延迟高,I/O 速度不足
  • 解决方案:使用 SATA 硬盘,确保硬盘正确挂载

硬盘挂载失败

# 检查硬盘设备
ls /dev/sda*

# 格式化硬盘(如果需要)
mkfs.ext2 /dev/sda

# 挂载硬盘
mount -t ext2 /dev/sda /home/

# 验证挂载
df -h

5.3.2 显示相关问题

HDMI 无显示

  • 检查 HDMI 线缆连接
  • 确认显示器输入源设置正确
  • 验证 MI_DISP 和 MI_HDMI 模块已加载
  • 检查显示分辨率设置

检测框/识别框不显示

  • 确认 /dev/fb0 设备可访问
  • 检查 SGS_GL 库是否正确链接
  • 验证 framebuffer 权限

5.3.3 性能相关问题

检测速度慢

  • 降低输入视频分辨率
  • 减少视频通道数量
  • 调整检测阈值(-d 参数)
  • 使用性能更强的检测模型

多路视频不同步

  • 检查各路视频文件的帧率和分辨率
  • 确保系统资源充足(CPU、内存)
  • 考虑减少视频通道数量

5.3.4 模型相关问题

模型加载失败

  • 确认模型文件路径正确
  • 检查模型文件完整性
  • 验证模型文件权限
  • 确认模型与芯片平台匹配

检测/识别精度低

  • 调整检测阈值(-d 参数)
  • 检查输入视频质量
  • 确认使用正确的模型文件
  • 考虑使用更高精度的模型

5.3.5 FR Demo 特定问题

人脸注册失败

  • 确保输入视频包含清晰人脸
  • 检查输出目录写权限
  • 验证模型文件完整性

识别不匹配

  • 确认注册时使用的特征文件正确
  • 检查特征文件是否损坏
  • 调整识别阈值
  • 确保注册和识别使用相同模型

5.3.6 REID Demo 特定问题

数据库搜索无结果

  • 确认数据库文件(.bin)存在
  • 检查查询图片格式和尺寸
  • 调整相似度阈值(-T 参数)
  • 验证模型文件正确

图片保存不完整

  • 使用 SATA 硬盘而非 NFS
  • 检查硬盘剩余空间
  • 降低输入帧率(-f 参数)

5.3.7 RET Demo 特定问题

文本搜索无结果

  • 确认词表文件(vocab.txt)正确加载
  • 检查输入文字编码(UTF-8)
  • 验证语言设置(-l 参数)与词表匹配
  • 确认数据库已生成

中文搜索乱码

  • 确保终端使用 UTF-8 编码
  • 检查词表文件编码格式
  • 验证输入文字编码正确

5.3.8 MOT Demo 特定问题

VDEC 缓冲区满(0xa008200f)

  • 算法线程消费 Port 1 速度跟不上,可降低推流帧率(-f 参数)

track_id 文字标签不显示

  • 确认通过 -t 指定了有效的 TTF 字库文件,或从 demo/resource/default.ttf 拷贝字库文件

track_id 频繁跳变

  • 检测阈值(代码中默认 0.25)较低可在遮挡时保持检测存活,但可能引入误检
  • stable_bbox=TRUE 配合 stable_sensitive=0.5 有助于跨越短暂遮挡保持 track_id 一致性

5.3.9 SOT Demo 特定问题

目标跟踪漂移或丢失太快

  • 降低跟踪阈值(-T 参数)
  • 增大代码中 lost_times_end_track
  • 确保目标物体足够大(≥ template_min_width 像素)

ALGO_VLM_Create / ALGO_VLM_Init 失败

  • 检查所有模型文件是否存在于指定路径,并与 VLM 库版本兼容
  • 确认 -D-s-S 三个模型参数都已正确指定

FB 绘制的边界框看不到

  • 确保 FB 设备(/dev/fb0)可用
  • 显示分辨率与 HDMI 输出模式匹配(1920x1080@60Hz)

5.3.10 SGPTV Demo 特定问题

输入目录打不开 / 目录里没有 JPEG

  • 确认 -i 指定的目录存在且包含 .jpg / .jpeg 文件
  • 程序会打印 [ERROR] Cannot open directory[ERROR] No JPEG images found 并退出

文字描述与图片不匹配

  • 确认 vision / head / decoder / embedding 四个模型与 JSON 配置目录版本一致
  • 检查模型文件完整性

5.3.11 VRET Demo 特定问题

识别准确度不高

  • 调整 frame_step(编译期常量 G_VRET_DEMO_VRET_FRAME_STEP,默认 4,改后需重新编译):偏小采样越密、越能凸显同一行为;偏大则单片段时间跨度更长、更利于识别连续动作

码流分辨率不一导致解码失败

  • -W / -H 设成目录中最大那条码流的分辨率
  • -W / -H 不能小于最大码流(否则解码失败),也不要填 4096×4096 这种过大值(浪费解码缓冲内存)