00000609
sftp -P 29880 iluvatar_mr@iftp.iluvatar.com.cn
密码:请咨询天数售后
获取基础镜像
docker run -dit \
-v /usr/src:/usr/src \
-v /lib/modules:/lib/modules \
-v /dev:/dev \
-v /data:/data \
-v /home:/home \
--network=host \
--name=test \
--ipc=host \
--privileged \
--cap-add=ALL \
--pid=host \
基础镜像名称 \
/bin/bash
搭建ixstream环境步骤,参考
4.3.8版本环境下基于官方发布的base镜像搭建ixstream环境-天数智芯知识库系统
#进入容器
docker exec -it test bash
天数的 IXStream 是基于 GStream 框架开发的支持天数产品硬件编解码器和 GPU 推理的多媒体框架,与 DeepStream 的用法类似。
测试目录
python:/opt/ixstream_samples/python/
C++: /opt/ixstream_samples/C++/
| 示例程序 | 功能 |
|---|---|
ixstream_sample1 |
基于 yolov10 模型进行检测的简单示例,并对检测到的对象进行画框等操作。输入为 720P 的 h264 视频文件,输出为 jpeg 图片 |
ixstream_sample1_osd |
基于 ixstream_sample1 增加了目标物体的统计功能,并将结果显示在图片上 |
ixstream_sample1_rtsp_out |
基于 ixstream_sample1 将输出更改为 rtsp 流 |
ixstream_sample1_usbcam |
基于 ixstream_sample1 将输入更改为摄像头输入 |
ixstream_sample2 |
基于 ixstream_sample1 增加 tracker 和二级推理功能 |
ixstream_sample3 |
基于 ixstream_sample1 增加多路输入/输出支持 |
ixstream_sample4 |
基于 ixstream_sample3 将输出更改为输出到屏幕 |
ixstream_sample5 |
基于 ixstream_sample3 支持更多的输入输出(输入:h264 视频文件,mp4 视频文件,rtsp 流;输出:jpeg 图片,h264 视频文件) |
ixstream_sample_analytics |
基于 ixstream_sample1 增加 tracker 和分析功能 |
ixstream_sample_custom_binding |
如何添加并访问用户自定义元数据 |
ixstream_sample_get_buffer |
如何获取 GST buffer数据 |
ixstream_sample_infer_yolo |
基于 ixstream_sample1 增加更多 yolo 模型的支持 |
ixstream_sample_pause_and_switch_input |
如何动态暂停和切换输入源 |
ixstream_sample_preprocess |
针对插件 Gst-IxPreprocess 的预处理功能测试 |
ixstream_sample_segmentation |
使用 unet 分割模型对图片进行分割,并对分割结果进行可视化 |
ixstream_sample_tiler |
获取多路 rtsp 流,解码后将多路数据拼接成一路,最后将拼接后的图片保存为 jpeg 图片 |
这是一个 ixstream 基础应用示例,展示了如何通过 ixstream 相关插件构建简单的智能视频分析(IVA)流水线。 该示例以 h264 视频文件作为输入,依次经过解码、推理、OSD 等功能单元处理,最终生成 jpeg 格式的输出文件。
下边以python代码为例,C++代码流程是一样的,只是需要编译一下,
cd /opt/ixstream_samples/python/ixstream_sample1
配置文件在config目录下
config_sample1.json: sample1的主配置文件,需要注意加载的本地视频文件的帧的分辨率
{
"file-src":{
"blocksize": 131072,
"location": "../../streams/sample_720p.h264"
},
"vpu-decode":{
"drop-frame-interval": 1
},
"stream-mux":{
"width": 1280,
"height": 720,
"live-source": false
},
"infer-pgie":{
"config-file-path": "./config/config_pgie.json"
},
"osd":{
"display-text": true,
"display-bbox": true
},
"jpu-encode": {
"save-file-path": "./jpeg_out"
}
}
config_pgie.json : 模型推理相关配置文件,需要注意引擎文件路径、模型的输入、输出名称、batch的大小、后处理的bbox name、以及class-attrs-all参数
{
"property":{
"gpu-id": 0,
"net-scale-factor": 0.003921569,
"model-color-format": 0,
"model-engine-file": "../../engines/yolov10s_batchsize_1_fp16.so",
"infer-dims": [3, 640, 640],
"labelfile-path": "../../labels/coco_labels.txt",
"input-blob-name": "images",
"output-blob-names": "output0",
"batch-size": 1,
"num-detected-classes": 80,
"interval": 0,
"gie-unique-id": 1,
"process-mode": 1,
"network-type": 0,
"cluster-mode": 2,
"maintain-aspect-ratio": true,
"symmetric-padding": false,
"parse-bbox-func-name": "IxInferParseCustomYoloV10",
"custom-lib-path": "/usr/local/corex/lib64/libgst_ixstream_infer_custom_impl_Yolo.so",
"filter-out-class-ids": [1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]
},
"class-attrs-all":{
"post-cluster-threshold": 0.1
}
}
这里我们需要修改的地方,我标红了
1 是要准备的测试文件(不改使用默认文件)
2 推理需要的engine文件
cd /opt/ixstream_samples/python/ixstream_sample1
mkdir -p ../../engines
cd ../../engines/
wget https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10s.pt
将pt模型转换为onnx模型
将以下代码保存为一个 export.py文件,然后执行 python3 export.py --weight ./yolov10s.pt --batch 1 ,执行成功会在当前目录下生成 yolov10s.onnx 文件
import argparse
from ultralytics import YOLO
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--weight", type=str, required=True, help="pytorch model weight.")
parser.add_argument("--batch", type=int, required=True, help="batchsize of the model.")
args = parser.parse_args()
return args
def main():
args = parse_args()
model = YOLO(args.weight).cpu()
model.export(format='onnx', batch=args.batch, imgsz=(640, 640), optimize=True, simplify=True, opset=13)
if __name__ == "__main__":
main()
onnxsim yolov10s.onnx yolov10s.onnx
### 生成精度为fp16的engine:关于 igie-exec 工具的用法,可以执行 igie-exec --help 命令查看
igie-exec --model_path yolov10s.onnx --input images:1,3,640,640 --precision fp16
当前目录,会生成yolov10s_batchsize_1_fp16.so
cd /opt/ixstream_samples/python/ixstream_sample1
python3 ixstream_sample1.py
输出
**********************FPS*****************************************
Fps of plugin stream-mux is 31.90
**********************FPS*****************************************
Fps of plugin stream-mux is 212.32
**********************FPS*****************************************
Fps of plugin stream-mux is 215.13
**********************FPS*****************************************
Fps of plugin stream-mux is 212.39
**********************FPS*****************************************
Fps of plugin stream-mux is 212.63
**********************FPS*****************************************
Fps of plugin stream-mux is 206.58
其它测试用例使用,参考每个用例下的README文件