Files
VideoPipe/nodes/README.md
2026-06-03 12:43:14 +08:00

8.0 KiB
Raw Permalink Blame History

important tips when using node

Most nodes support multi-channel, which means that multiple channels of data can be used as its input. In addition, some nodes do not support multi-channel by default, that is, there can only be one channel of data as its input (the input channel index cannot be changed once it is determined), otherwise an error will occur. The following are common examples:

support multi-channel

  • all infer nodes, broker nodes, because they work independently of the channel index.
  • split node, it works independently of channel index too. it could be used to split pipeline into multi branches accordding to different channel index.
  • some nodes which has been designed to support multi-channel, such as record nodes, track nodes, ba nodes, which are able to distinguish different channels inside logic code (such as using std::map<int, ...> to maintain different data of channels).

do NOT support multi-channel

  • all src node and all des node, you MUST specify channel index when initializing instances of them.
  • part of osd nodes, because they work dependently of channel index, you can do some work to let them support multi-channel, for example just use some data structure like std::map<int, ...> to maintain different data of channels inside code of nodes.

Note, although some nodes support multi-channel, you'd better be careful because using single instance of node to deal with multiple channels of data would have lower performance(process data serially ). On the contrary, one instance dealing with only one channel of data (multiple channels use multiple instances of the SAME node) have higher performance(process data in parallel). below is an example of 2 methods to create pipeline:

single instance of track/ba node works on 2 channels
file_src_0                                                                                             --> osd_0 --> screen_des_0
           --> detector --> multi-classifiers --> tracker --> ba_crossline --> split(by channel index)
file_src_1                                                                                             --> osd_1 --> screen_des_1 

2 instances of track/ba node work on 2 channels:
file_src_0                                                                --> tracker_0 --> ba_crossline_0 --> osd_0 --> screen_des_0
           --> detector --> multi-classifiers --> split(by channel index) 
file_src_1                                                                --> tracker_0 --> ba_crossline_0 --> osd_1 --> screen_des_1 

节点目录

ba
  • vp_ba_crossline_node跨线判断
  • vp_ba_jam_node拥堵判断
  • vp_ba_stop_node停止判断
broker
  • vp_ba_socket_broker_node使用udp转发行为分析结果
  • vp_embeddings_properties_socket_broker_node使用udp转发目标特征、属性结果
  • vp_embeddings_socket_broker_node使用udp转发目标特征结果
  • vp_expr_socket_broker_node使用udp转发数学表达式检查结果
  • vp_json_console_broker_node以json格式将结构化数据输出到控制台
  • vp_json_kafka_broker_node以json格式将结构化数据通过kafka发送给第三方
  • vp_msg_broker_node数据代理基类节点
  • vp_plate_socket_broker_node使用udp转发车牌识别结果
  • vp_xml_file_broker_node以xml格式将结构化数据存储到文件
  • vp_xml_socket_broker_node以xml格式将结构化数据通过udp发送给第三方
infers
  • vp_classifier_node基于resnet系列的图像分类节点opencv::dnn
  • vp_enet_seg_node基于ENet网络的图像分割节点opencv::dnn
  • vp_face_swap_node基于insightface的人脸替换节点opencv::dnn
  • vp_feature_encoder_node基于resnet系列的目标特征提取节点opencv::dnn
  • vp_lane_detector_node基于CenterNet的车道线检测节点opencv::dnn
  • vp_mask_rcnn_detector_node基于maskrcnn的目标检测节点opencv::dnn
  • vp_openpose_detector_node基于openpose的肢体检测节点opencv::dnn
  • vp_ppocr_text_detector_node基于paddleocr的文字检测节点paddleinference
  • vp_restoration_node基于real-esrgan的图像增强修复节点opencv::dnn
  • vp_sface_feature_encoder_node基于sface网络的人脸特征提取节点opencv::dnn
  • vp_trt_vehicle_color_classifier基于resnet18的车辆颜色分类节点tensorrt
  • vp_trt_vehicle_detector基于yolov5s的车辆检测节点tensorrt
  • vp_trt_vehicle_feature_encoder基于fastreid的车辆特征提取节点tensorrt
  • vp_trt_vehicle_plate_detector_v2基于yolov5s的车牌检测识别节点一级推理tensorrt
  • vp_trt_vehicle_plate_detector基于yolov5s的车牌检测识别节点二级推理tensorrt
  • vp_trt_vehicle_scanner基于yolov5s的车身扫描节点tensorrt
  • vp_trt_vehicle_type_classifier基于resnet18的车辆车型分类节点tensorrt
  • vp_yolo_detector_node基于yolov3含tiny的目标检测节点opencv::dnn
  • yolo_yunet_face_detector_node基于yunet网络的人脸检测节点opencv::dnn
osd
  • vp_ba_crossline_osd_node跨线判断结果绘制节点
  • vp_ba_jam_osd_node拥堵判断结果绘制节点
  • vp_ba_stop_osd_node停止判断结果绘制节点
  • vp_cluster_node目标聚类结果绘制节点
  • vp_expr_osd_node数学表达式检查结果绘制节点
  • vp_face_osd_node_v2人脸检测结果绘制节点含相似度显示
  • vp_face_osd_node人脸检测结果绘制节点
  • vp_lane_osd_node车道线检测结果绘制节点
  • vp_osd_node_v2目标绘制节点含子目标
  • vp_osd_node_v3目标绘制节点含目标mask
  • vp_osd_node目标绘制节点
  • vp_plate_osd_node车牌检测识别结果绘制节点
  • vp_pose_osd_node肢体检测结果绘制节点
  • vp_seg_osd_node图像分割结果绘制节点
  • vp_text_osd_node文字检测识别结果绘制节点
proc
  • vp_expr_check_node数学等式准确性判断节点
  • vp_frame_fusion_node视频帧按像素比融合节点支持2个通道
record
  • vp_record_node视频/图片录制节点
track
  • vp_dsort_track_node基于deepsort的跟踪节点
  • vp_sort_track_node基于sort的跟踪节点
common
  • vp_app_des_node将图片数据推送给application的目标节点
  • vp_app_src_node从application接收图片数据的原始节点
  • vp_des_node所有目标节点基类
  • vp_fake_des_node虚拟目标节点不做任何事
  • vp_file_des_node将视频数据存入文件的目标节点
  • vp_file_src_node从文件读取视频数据的原始节点
  • vp_image_des_node将数据以图片的形式发送给socket或者file的目标节点
  • vp_image_src_node从file或者socket读取图片数据的原始节点
  • vp_infer_node所有推理节点基类
  • vp_message_broker_node所有数据代理节点基类
  • vp_node所有节点基类
  • vp_placeholder_node虚拟中间节点不做任何事
  • vp_primary_infer_node所有一级推理节点基类
  • vp_rtmp_des_node将视频数据以rtmp格式推送到rtmp服务器的目标节点
  • vp_rtsp_des_node将视频数据以rtsp格式推送无需rtsp服务器的目标节点
  • vp_rtsp_src_node以rtsp格式读取网络流的原始节点
  • vp_screen_des_node将视频/图片显示到屏幕的目标节点
  • vp_secondary_infer_node所有二级推理节点基类
  • vp_split_node管道拆分节点
  • vp_src_node所有原始节点基类
  • vp_sync_node管道分支同步节点
  • vp_udp_src_node以udp格式读取网络流的原始节点