行人重识别Reid(一):Person_reID_baseline_pytorch

行人重识别Reid(一):Person_reID_baseline_pytorch



前言

最近项目上有人员轨迹识别的需求,传统使用手机基站定位法数据获取难度大,后来确定还是用图像识别的方法来做,据了解可以借助REID技术来实现。


一、reid 定义

1、什么是reid

简单理解就是,我们需要根据某行人A的图像,在图像候选集中找到该行人A的其他图像。reid 技术在实际场景中有着很重要的作用。

使用 reid 技术,我们便可以在一个监控系统中,构建行人的运动轨迹,并应用到各种下游任务。比如在小区监控系统中,我们在某个时刻锁定犯人A,根据 reid 技术,我们就可以在整个监控系统的中,自动的找出犯人A在整个小区监控中出现的图片,并确定他的运动轨迹,最终辅助警察抓捕。再比如在智慧商业场景中,我们可以根据 reid 技术描绘出每个消费者的商场运动轨迹和区域驻留时间,从而优化客流、辅助商品推荐等。。

reid 算法可以分解为以下3步:

  1. 特征提取:给定一个查询图片(query image)和大量的数据库图片(gallery
    images),提取出它们的语义特征。在这个特征空间,同一个人的图片距离尽可能小,不同人图片距离尽可能大。目前主流的 reid算法使用深度卷机神经网络(CNN,如 ResNet50)提取特征。
  2. 距离计算:得到查询特征(query feature)和数据库特征(gallery
    features)后,计算查询图片和数据库图片的距离。通常使用欧式(euclidean)、余弦(cosine)距离等。
  3. 排序返回:得到距离后,我们可以使用排序算法对样本进行排序,通过卡距离阈值或者K近邻的方法,返回最终样本。一般使用快速排序算法,其复杂度是
    O(NlogN),N 为数据库图片数量。

2、reid_baseline

reid_baseline(Person_reID_baseline_pytorch):reid_baseline 是一个基于pytorch实现的,小巧、友好并且强大的 reid baseline。它的性能媲美当前最好的公开方法(强大),支持fp16精度用2GB显存进行训练(小巧),并且提供了一个8分钟快速教程入门reid(新手友好)。该 baseline 由 Zhezhong Zheng 博士于2017年发布,至今 github star 数量已经超过 2k。

二、准备工作

1、环境

依赖pytorch环境,之前已配置好,在这复用即可,配置方法参考文章:图像识别(二):anaconda 配置pytorch环境,运行yolov5

2、code

项目地址:https://github.com/layumi/Person_reID_baseline_pytorch

3、数据

下载地址Market-1501

数据集简介:
Market-1501数据集在清华大学校园中采集,夏天拍摄,在2015年构建并公开。它包括由6个摄像头(其中5个高清摄像头和1个低清摄像头)拍摄的1501个行人的32217张图片。图片分辨率统一为128X64。每个行人至少由2个摄像头捕获到,并且在一个摄像头中可能具有多张图像。
训练集bounding_box_train有751人,包含12,936张图像,平均每个人有17.2张训练数据;
测试集bounding_box_test有750人,包含19,732张图像,平均每个人有26.3张测试数据;
查询集query有3368张查询图像。
该数据集提供的固定数量的训练集和测试集均可以在single-shot或multi-shot测试设置下使用。
参考文章行人重识别Market1501数据集介绍

三、训练

1、生成训练数据

MARK数据集下载解压后,文件分布如下:
在这里插入图片描述
准备训练数据需要通过prepare.py,将第五行的地址改为自己本地的地址
在这里插入图片描述
然后运行prepare.py文件,会生成一个pytorch文件夹
在这里插入图片描述
进入pytorch文件夹,文件分布如下:
在这里插入图片描述
现在我们已经成功准备好了图像来做后面的训练了。

2、开始训练

我们可以输入如下命令开始训练:

python train.py --gpu_ids 0 --name ft_ResNet50 --train_all --batchsize 32  --data_dir your_data_path

修改后

python train.py --gpu_ids 0 --name ft_ResNet50 --train_all --batchsize 32  --data_dir ./Market/pytorch/

默认训练60代,可修改train.py文件中默认参数
在这里插入图片描述

四、测试

1、特征提取

这一部分, 我们载入我们刚刚训练的模型 来抽取每张图片的视觉特征

python test.py --gpu_ids 0 --name ft_ResNet50 --test_dir your_data_path  --batchsize 32 --which_epoch 59

修改后

python test.py --gpu_ids 0 --name ft_ResNet50 --test_dir ./Market/pytorch/  --batchsize 32 --which_epoch 59

–gpu_ids which gpu to run.

–name the dir name of the trained model.

–batchsize batch size.

–which_epoch select the i-th model.

–data_dir the path of the testing data.

2、评测

现在我们有了每张图片的特征。 我们需要做的事情只有用特征去匹配图像。

python evaluate_gpu.py

mAP:0.7
在这里插入图片描述

五、简单的可视化

可视化结果,

python demo.py --query_index 600

在这里插入图片描述
–query_index which query you want to test. You may select a number in the range of 0 ~ 3367.

在这里插入图片描述
上图显示最相似的10张图片,可应用的场景很多。在实际人员轨迹应用中,可通过输出的摄像头编号,以及拍摄时间描述目标人员的行为轨迹。

六、总结

按照教程体验了一下reid_baseline,这个步骤比较简单,特记录一下,正在学习其他reid,希望后续能有所突破。

  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
### 回答1: person_reid_baseline_pytorch是一个基于PyTorch框架的人员识别基线模型。它可以用于训练和测试人员识别模型,以识别不同人员之间的差异和相似之处。该模型提供了一些基本的功能,如数据加载、模型训练、模型测试等,可以帮助用户快速搭建和测试自己的人员识别模型。 ### 回答2: person_reid_baseline_pytorch是一个基于PyTorch框架的人体重识别模型。该模型采用卷积神经网络(Convolutional Neural Network,简称CNN)架构,采用多个卷积层和池化层进行特征提取,最后经过全连接层得到人物特征向量,实现了对人体进行识别。 该模型的训练数据集一般采用Market1501数据集,它包含超过1501个不同身份的超过32000张图片,是一个非常大且具有代表性的数据集,训练出的模型能够具有很好的泛化能力。 在训练过程中,除了使用标准的交叉熵损失作为损失函数外,还使用Triplet Loss作为损失函数的一种变形。该损失函数能够比较好地处理重识别中的最大间隔问题,并且能够实现对同一身份的多张图片之间的特征相似度比较。 对于测试集的预测部分,该模型采用的是余弦相似度进行特征向量相似度计算,相似度越高则说明两个图片中的人物越有可能是同一个人,可以实现良好的识别结果。 总的来说,person_reid_baseline_pytorch基于PyTorch框架实现的人体重识别模型,通过CNN架构进行特征提取,使用Triplet Loss进行训练,使用余弦相似度进行特征向量相似度计算,能够实现对人体进行高效准确的识别。 ### 回答3: person_reid_baseline_pytorch 是一个基于 PyTorch 框架的行人重识别算法基线模型,它实现了一个简单但功能齐全的行人重识别框架,可以训练和测试基于清晰照片的行人重识别任务。 该模型包含了基本卷积神经网络(CNN)的搭建和训练,其中包括几个关键部分:数据加载、模型定义、训练和测试。它使用数据增强技术和三元损失函数来训练模型,目的是使相同人的图像对与不同人的图像对之间的距离最大化。 person_reid_baseline_pytorch 采用 Market-1501 数据集进行测试,并在该数据集上取得了不错的结果。该数据集包含 1501 个行人,共有 12936 张图像,其中包括 6 种视角和多种行为。该算法读取图像数据并将之前处理后的行人图像输入神经网络,以便为每个图像计算行人的特征向量。然后,使用相关算法来比较图像对的距离,并确定它们是否属于同一人。该算法的性能指标包括准确度、精度和召回率等。 总之,person_reid_baseline_pytorch 提供了一个简单但完整的框架和基线模型,可以作为进一步解决行人重识别问题的基础。无论是学术界还是商业界,这种算法都有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后知前觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值