背景知识介绍

ReID,全拼为Re-identification,目的是利用各种智能算法在图像数据库中找到与要搜索的目标相似的对象。ReID本质上是做图像的检索。

fast-reid是一个强悍的目标重识别Reid开源库,由京东开源管理。本文主要是介绍fast-reid的使用及相关代码介绍,随着技术的发展,对于cv从业人员有必要了解不同智能算法技术的应用。而且ReID是相对下游的任务,了解ReID的相关技术应用能学到很多东西。

以行人重识别Person re-identification为例,行人重识别主要目的是针对出现在监控摄像头内的某个目标行人,准确快速地从监控网络其他摄像头内的大量行人中将这个目标行人标识出来。如下图所示(图片来自网络)。

lyegp

工程上,最简单的行人重识别的技术流程如下所示。

行人检测(目标识别) --> 特征提取 --> 行人跟踪(目标跟踪)--> 跨镜头行人跟踪 --> 向量存储与检索 

简单的一个技术解决方案为:

  1. 行人检测:通过Yolov5这类目标模型提取当前帧的行人图像。
  2. 特征提取:基于特征提取模型,如通过faster-reid基于度量学习训练得到的模型提取行人区域图片的特征向量。
  3. 目标跟踪:结合行人区域特征,通过deepsort进行行人跟踪
  4. 跨镜头行人跟踪:基于深度学习的全局特征和数据关联实现跨镜头行人目标跟踪。
  5. 向量存储与检索:对于给定的行人查询向量,与行人特征库中所有的待查询向量进行向量检索,即计算特征向量间的相似度。通常我们可以通过faiss处理这部分的操作。

在以上步骤中,特征提取是最关键的一环,它的作用是将输入的行人图片转化为固定维度的特征向量,以用于后续的目标跟踪和向量检索。好的特征需要具备良好的相似度保持性,即在特征空间中,相似度高的图片之间的向量距离比较近,而相似度低的图片对的向量距离比较远。通常用于训练这种模型的方式叫做度量学习,度量学习很简单可以自己查查。

fast-reid是一个面向学术界和工业界的ReID工具箱,是京东的开源项目之一。如果想要了解更多关于fast-reid的信息,可以直接去看作者的论文FastReID: A Pytorch Toolbox for Real-world Person Re-identification。fast-reid基于python和pytorch实现各种模型,同时提供一些脚本将pytorch训练的模型转到caffe和TensorRT上。所以非常推荐使用fast-reid进行学习。

fast-reid是一个很不错的ReID工具箱,提供了丰富的代码接口,但是代码有许多小bug,使用的时候要多注意。本文只介绍了fast-reid的基础使用,没有进一步的介绍fast-red的工程项目,以及相关的理论知识。关于fast-reid的使用,最好多单步调试进入源代码,可以学到很多的东西。fast-reid项目中提供的工程示例代码也是值得一看的。

qoqcb