项目地址:https://github.com/sherlockchou86/video_pipe_c
往期文章:https://www.cnblogs.com/xiaozhi_5638/p/16857995.html
11月有3个更新,有兴趣的扫码加群交流。
支持推理结果序列化(vp_message_broker插件)
基于creal第三方库,对pipeline中的推理结果进行序列化输出。 序列化格式支持json和xml,输出位置支持Console、File、Socket(UDP)以及Kafka。
针对普通检测目标,序列化属性包括:
1 通道号channel_index 2 帧序列号frame_index 3 原始帧宽度width 4 原始帧高度height 5 原始帧fps 6 目标集合 [ 7 目标一级推理检测ID primary_class_id 8 目标一级推理标签 primary_label 9 目标一级推理置信度 primary_score 10 目标位置x 11 目标位置y 12 目标宽度width 13 目标高度height 14 目标二级推理分类ID集合 secondary_class_ids 15 目标二级推理分类标签集合 secondary_labels 16 目标二级推理分类置信度集合 secondary_scores 17 目标包含子目标 sub_targets集合 [ 18 子目标位置x 19 子目标位置y 20 子目标宽度width 21 子目标高度height 22 子目标检测ID class_id 23 子目标检测标签 label 24 子目标检测置信度 score 25 子目标附加数据 attachments 26 ] 27 目标特征 embeddings 28 目标跟踪ID track_id 29 ]
适配jetson嵌入式设备(或其他arm64平台)
代码在jetson tx2上调通运行,推理后端支持opencv::dnn 和 tenssorrt(其他硬件平台使用对应的推理SDK),下面是代码运行在jetson tx2上的效果:
新增15个sample说明
1-1-1_sample ↓
1个视频源输入,1种推理任务,1个输出。
1-1-N_sample ↓
1个视频源输入,1种推理任务,2个输出。
1-N-N_sample ↓
1个视频源输入,然后拆分成2个分支、2种推理任务,最后各自1个输出。
N-1-N_sample ↓
2个视频源输入,然后合并成1个分支、1种推理任务,最后拆开各自有多个输出。
N_N_sample ↓
各个pipeline独立运行互不干扰,每个pipe都是1-1-1结构(也可以是其他结构)。
paddle_infer_sample ↓
基于paddle推理后端的ocr文字识别。
trt_infer_sample ↓
基于tenssorrt推理后端的车辆检测。
src_des_sample ↓
演示SRC节点和DES节点如何工作,3种SRC节点(FILE,RTSP,UDP)和3种DES节点(SCREEN,RTMP,FAKE)。
face_tracking_sample ↓
演示基于vp_tracker_node的人脸跟踪。
vehicle_tracking_sample ↓
演示基于vp_tracker_node的车辆跟踪。
message_broker_sample ↓
演示推理结果序列化(xml->socket)
message_broker_sample2 ↓
演示推理结果序列化(json->console)
interaction_with_pipe_sample ↓
演示如何控制pipelien,比如开始、暂停某个通道。
record_sample ↓
演示录像功能。
vp_logger_sample ↓
演示日志接口使用。