#include "../nodes/vp_file_src_node.h" #include "../nodes/infers/vp_trt_vehicle_detector.h" #include "../nodes/infers/vp_trt_vehicle_color_classifier.h" #include "../nodes/infers/vp_trt_vehicle_type_classifier.h" #include "../nodes/infers/vp_trt_vehicle_feature_encoder.h" #include "../nodes/track/vp_sort_track_node.h" #include "../nodes/vp_sync_node.h" #include "../nodes/vp_split_node.h" #include "../nodes/osd/vp_osd_node.h" #include "../nodes/vp_screen_des_node.h" #include "../utils/analysis_board/vp_analysis_board.h" /* * ## 1-N-1_sample_sample ## * 1 input video, detect vehicles first,classify by colors and types in parallel, then sync data and output on screen. */ int main() { VP_SET_LOG_LEVEL(vp_utils::vp_log_level::INFO); VP_LOGGER_INIT(); // create nodes for 1-N-1 pipeline auto file_src_0 = std::make_shared("file_src_0", 0, "./vp_data/test_video/vehicle_count.mp4", 0.6); auto trt_vehicle_detector_0 = std::make_shared("trt_detector_0", "./vp_data/models/trt/vehicle/vehicle_v8.5.trt"); auto split = std::make_shared("split", false, true); // split by deep-copy not by channel! auto trt_vehicle_color_classifier_0 = std::make_shared("trt_color_cls_0", "./vp_data/models/trt/vehicle/vehicle_color_v8.5.trt", std::vector{0, 1, 2}); auto trt_vehicle_type_classifier_0 = std::make_shared("trt_type_cls_0", "./vp_data/models/trt/vehicle/vehicle_type_v8.5.trt", std::vector{0, 1, 2}); auto sync = std::make_shared("sync", vp_nodes::vp_sync_mode::UPDATE, 160); auto osd_0 = std::make_shared("osd_0"); auto screen_des_0 = std::make_shared("screen_des_0", 0); // construct 1-N-1 pipeline trt_vehicle_detector_0->attach_to({file_src_0}); split->attach_to({trt_vehicle_detector_0}); trt_vehicle_color_classifier_0->attach_to({split}); trt_vehicle_type_classifier_0->attach_to({split}); sync->attach_to({trt_vehicle_color_classifier_0, trt_vehicle_type_classifier_0}); osd_0->attach_to({sync}); screen_des_0->attach_to({osd_0}); /* the format of pipeline: / trt_vehicle_color_classifier_0 \ file_src_0 -> trt_vehicle_detector_0 -> split -> -> sync -> osd_0 -> screen_des_0 \ trt_vehicle_type_classifier_0 / */ // start 1-N-1 pipeline file_src_0->start(); // visualize pipelines for debug vp_utils::vp_analysis_board board({file_src_0}); board.display(); }