[深度学习] 搭建行人重识别系统心得

普通的行人reid,分为特征提取和向量检索两大部分。其他一些商用技术是普通项目接触不到,大概用这两部分,再搜集数据,换换检测模型,提高reid模型就可以了。

1 特征提取

对于特征提取,通常步骤如下:

  1. 目标检测
    目标检测提取图像中的行人,一般会使用输入图像尺寸较大的yolo模型。
  2. 目标跟踪
    仅仅使用目标检测往往会出现目标检测框不稳定的情况。所以会利用目标跟踪算法,跟踪行人以稳定行人识别结果。现有常用的reid目标跟踪算法有deepsort,bytetrack,oc-sort。这些目标跟踪算法分为两种情况:
    • deepsort:这类算法会根据目标检测模型的行人检测框和其对应的行人图像特征来实现行人跟踪,这类算法会有一定的耗时而且需要计算对应的行人图像特征。
    • bytetrack/oc-sort:这两种算法直接根据目标检测模型的行人检测框来完成行人的多目标跟踪,所以对目标检测算法的精度要求较高。使用这类算法,再送入向量检索之前还需要提取行人特征。
  3. 规则过滤
    目标跟踪后会通过一些规则过滤行人,或者采用多镜头行人融合技术降低误报率。这一部分可有可无,看各家的技术。

目标检测很耗时,通过会每隔几帧进行检测。没有目标检测的中间帧,则使用上一帧的结果进行目标跟踪即可。行人特征提取开源的项目常用的demo有:

  • PP-Human,这个项目提供reid的一键式特征提取方案,缺点是paddle的东西不稳定,而且代码修改难度很大。

  • Yolov5-Deepsort-Fastreid,这个项目通过yolov5识别行人,deepsort基于fastreid特征提取结果进行目标跟踪。这个项目较老,可以参考该项目搭建自己的特征提取项目。

  • ByteTrack、ByteTrack_ReID、OC-SORT。如果追求检测速度,可以看看这三个项目。

2 向量检索

向量检索会涉及到很多东西,出库入库检索之类的。底库特别大会严重影响检索性能。不要自己写检索系统,用成熟的向量检索系统非常好,一方面可以方便管理,另外一方面可以加快检索速度。推荐两个:

  1. milvus,milvus是一个很完备的向量搜索引擎,能无脑搭建向量检索库,支持分布式处理,而且检索速度极快。缺点是,东西太多过于臃肿,搭建也不容易。可以照着milvus官方提供的以图搜图系统案例,搭建自己的行人向量检索系统。
  2. faiss,faiss是一个底层的向量检索库,提供一些基础的功能,但是得费点时间搭建向量检索库。不会用的话可以看看向量检索库Faiss使用指北。

向量检索库涉及很多内容,多看看官方文档。无脑就用milvus,想自己弄或者要求不多就用faiss。

你可能感兴趣的:(深度学习,图像处理,深度学习,目标跟踪,人工智能)