行人重识别Reid(一):Person_reID_baseline_pytorch

2024-03-20 21:20

本文主要是介绍行人重识别Reid(一):Person_reID_baseline_pytorch,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

行人重识别Reid(一):Person_reID_baseline_pytorch


文章目录

  • 行人重识别Reid(一):Person_reID_baseline_pytorch
  • 前言
  • 一、reid 定义
    • 1、什么是reid
    • 2、reid_baseline
  • 二、准备工作
    • 1、环境
    • 2、code
    • 3、数据
  • 三、训练
    • 1、生成训练数据
    • 2、开始训练
  • 四、测试
    • 1、特征提取
    • 2、评测
  • 五、简单的可视化
  • 六、总结


前言

最近项目上有人员轨迹识别的需求,传统使用手机基站定位法数据获取难度大,后来确定还是用图像识别的方法来做,据了解可以借助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,希望后续能有所突破。

这篇关于行人重识别Reid(一):Person_reID_baseline_pytorch的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830754

相关文章

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记)

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 ##一、 缘由及解决方法 把这个pytorch-ddpg|github搬到jupyter notebook上运行时,出现错误Nn criterions don’t compute the gradient w.r.t. targets error。注:我用

【超级干货】2天速成PyTorch深度学习入门教程,缓解研究生焦虑

3、cnn基础 卷积神经网络 输入层 —输入图片矩阵 输入层一般是 RGB 图像或单通道的灰度图像,图片像素值在[0,255],可以用矩阵表示图片 卷积层 —特征提取 人通过特征进行图像识别,根据左图直的笔画判断X,右图曲的笔画判断圆 卷积操作 激活层 —加强特征 池化层 —压缩数据 全连接层 —进行分类 输出层 —输出分类概率 4、基于LeNet

pytorch torch.nn.functional.one_hot函数介绍

torch.nn.functional.one_hot 是 PyTorch 中用于生成独热编码(one-hot encoding)张量的函数。独热编码是一种常用的编码方式,特别适用于分类任务或对离散的类别标签进行处理。该函数将整数张量的每个元素转换为一个独热向量。 函数签名 torch.nn.functional.one_hot(tensor, num_classes=-1) 参数 t

BERN2(生物医学领域)命名实体识别与命名规范化工具

BERN2: an advanced neural biomedical named entity recognition and normalization tool 《Bioinformatics》2022 1 摘要 NER和NEN:在生物医学自然语言处理中,NER和NEN是关键任务,它们使得从生物医学文献中自动提取实体(如疾病和药物)成为可能。 BERN2:BERN2是一个工具,

行为智能识别摄像机

行为智能识别摄像机 是一种结合了人工智能技术和监控摄像技术的先进设备,它能够通过深度学习算法对监控画面进行实时分析,自动识别和分析监控画面中的各种行为动作。这种摄像机在安防领域有着广泛的应用,可以帮助监控人员及时发现异常行为,并采取相应的措施。 行为智能识别摄像机可以有效预防盗窃事件。在商场、超市等公共场所安装这种摄像机,可以通过识别异常行为等情况,及时报警并阻止不安全行为的发生

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题 GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。 最近通过flutter build web,通过发布到GitHu

pytorch计算网络参数量和Flops

from torchsummary import summarysummary(net, input_size=(3, 256, 256), batch_size=-1) 输出的参数是除以一百万(/1000000)M, from fvcore.nn import FlopCountAnalysisinputs = torch.randn(1, 3, 256, 256).cuda()fl