使用VideoPipe视频分析框架做车辆检索

阅读: 评论:0

使用VideoPipe视频分析框架做车辆检索

使用VideoPipe视频分析框架做车辆检索

车辆检索是ReID技术的一种具体实现,跟以图搜图类似,需要使用CNN网络预提取海量车辆样本特征并进行存储(附带一些结构化属性),在检索阶段,再使用向量比对技术从海量样本中查询Top N的相似结果并返回。那么前期预提取海量车辆样本特征(以及结构化属性)该如何实现呢?VideoPipe视频分析框架能够胜任99%的视频结构化需求,覆盖了人脸识别、目标行为分析、车辆检索等等应用场景。VideoPipe完全开源(仅供学习),github地址(vx:zhzhi78)

下面介绍使用VideoPipe实现车辆检索的过程。

车辆检索应用主要环节

  1. 提取特征&结构化属性
  2. 海量特征存储&结构化数据存储
  3. 海量特征比对&关系型数据库检索

其中第2、3步骤暂不涉及,重点讲述第一步。一般提取得到的车辆图像特征都是高维数据,比如256维float型数组、甚至1204维float数组。这些高维数据一般无法被人类直观理解。在提取特征的同时,我们还可以为车辆图像提取结构化属性,比如是白车还是黑车、是小卡车还是大卡车、有天窗还是没天窗等等。我们将提取到的高维特征数据和结构化属性同时存档(存入不同类型数据库),当作待检索数据集。下面列举车辆检索第一步骤提取到的数据可能有哪些:

  1. 颜色:白色、黑色、蓝色、灰色、黄色、红色
  2. 车型:轿车、SUV、皮卡、大卡、小卡、厢式货车、大巴、依维柯
  3. 天窗:有、无
  4. 车牌:未知、具体车牌值
  5. 图像特征:[0.231230, -0.092778, 0.289908 …]

提取特征&结构化属性的实现

VideoPipe视频分析框架可以快速集成目标检测、图像分类、特征提取等神经网路图像算法,支持多种视频(图片)接入方式,下面代码读取指定目录下的图片,先后进行车辆检测、车型分类、特征提取等操作,最后基于车辆检测和分类的结果、以及提取得到的特征值做显示和聚合。

#include "VP.h"#include "../nodes/vp_image_src_node.h"
#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/osd/vp_osd_node.h"
#include "../nodes/osd/vp_cluster_node.h"
#include "../nodes/vp_screen_des_node.h"
#include "../nodes/vp_fake_des_node.h"#include "../utils/analysis_board/vp_analysis_board.h"/*
* ## vehicle_cluster_based_on_classify_encoding_sample ##
* vehicle cluster based on classify(categories) and encoding(features), pipeline would display 3 windows (cluster by t-SNE, cluster by categories, detect osd result)
*/#if vehicle_cluster_based_on_classify_encoding_sampleint main() {VP_SET_LOG_LEVEL(vp_utils::vp_log_level::INFO);VP_LOGGER_INIT();// create nodesauto image_src_0 = std::make_shared<vp_nodes::vp_image_src_node>("image_src_0", 0, "./images/vehicle/%d.jpg");//auto file_src_0 = std::make_shared<vp_nodes::vp_file_src_node>("file_src_0", 0, "./test_video/22.mp4");auto trt_vehicle_detector = std::make_shared<vp_nodes::vp_trt_vehicle_detector>("trt_detector", "./models/trt/vehicle/vehicle_");auto trt_vehicle_color_classifier = std::make_shared<vp_nodes::vp_trt_vehicle_color_classifier>("trt_color_cls", "./models/trt/vehicle/vehicle_color_", std::vector<int>{0, 1, 2});auto trt_vehicle_type_classifier = std::make_shared<vp_nodes::vp_trt_vehicle_type_classifier>("trt_type_cls", "./models/trt/vehicle/vehicle_type_", std::vector<int>{0, 1, 2});auto trt_vehicle_feature_encoder = std::make_shared<vp_nodes::vp_trt_vehicle_feature_encoder>("trt_encoder", "./models/trt/vehicle/vehicle_embedding_", std::vector<int>{0, 1, 2});auto osd_0 = std::make_shared<vp_nodes::vp_osd_node>("osd_0");auto screen_des_0 = std::make_shared<vp_nodes::vp_screen_des_node>("screen_des_0", 0);auto cluster_0 = std::make_shared<vp_nodes::vp_cluster_node>("cluster_0", true, std::vector<std::string>{"red", "white", "black", "blue", "yellow", "bus", "small_truck", "van", "tanker"}, 1000);auto fake_des_0 = std::make_shared<vp_nodes::vp_fake_des_node>("fake_des_0", 0);// construct pipelinetrt_vehicle_detector->attach_to({image_src_0});//trt_vehicle_detector->attach_to({file_src_0});trt_vehicle_color_classifier->attach_to({trt_vehicle_detector});trt_vehicle_type_classifier->attach_to({trt_vehicle_color_classifier});trt_vehicle_feature_encoder->attach_to({trt_vehicle_type_classifier});// split into 2 branches automatically/* branch of osd -> screen des*/osd_0->attach_to({trt_vehicle_feature_encoder});screen_des_0->attach_to({osd_0});/* branch of cluster -> fake des*/cluster_0->attach_to({trt_vehicle_feature_encoder});fake_des_0->attach_to({cluster_0});  // to keep pipeline complete// start pipelineimage_src_0->start();//file_src_0->start();// visualize pipeline for debug//vp_utils::vp_analysis_board board({file_src_0});vp_utils::vp_analysis_board board({image_src_0});board.display();
}#endif

上面代码运行后,可以显示4个窗口,分别是:

  1. Pipeline管道运行状态
  2. 车辆检测结果
  3. 车辆按分类标签(车型、颜色)显示
  4. 车辆按特征自动聚合(相似车辆聚合到一起)

本文发布于:2024-02-03 22:35:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170697102151473.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:框架   车辆   视频   VideoPipe
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23