探索 TorchRe-ID--基于 Python 的人员再识别库

导言

人员再识别(re-ID)是计算机视觉中的一项重要任务,在监控系统、零售分析和人机交互中有着广泛的应用。TorchRe-ID 是一个功能强大、用户友好的 Python 库,它为人员再识别任务提供了一套全面的工具和模型。在本文中,我们将探索 TorchRe-ID 的主要功能,并深入研究模型训练、评估和可视化。

什么是人员再识别?

人员重新识别的目的是在多摄像头监控系统中匹配非重叠摄像头视图中的个人。它涉及从不同角度、光线条件和视点识别同一个人,因此是一项极具挑战性的计算机视觉任务。

TorchRe-ID 的主要功能

  1. 数据集支持:TorchRe-ID 提供对流行的人物再识别数据集的开箱即用支持,包括 Market-1501、DukeMTMC-reID、CUHK03 和 MSMT17。
  2. 模型动物园:该库提供各种预训练模型,如 ResNet、DenseNet 和 Inception、OSNet,这些模型可在自定义数据集上进行微调,或用作基准测试的基线。
  3. 评估指标:TorchRe-ID 实现了人员重新识别任务中常用的各种评估指标,包括 Rank-1、Rank-5、Rank-10 和平均精度 (mAP)。
  4. 数据增强:该库包括功能强大的数据增强技术,如随机裁剪、翻转和颜色抖动,以提高模型的通用性和鲁棒性。
  5. 可视化工具:TorchRe-ID 提供了可视化工具,用于检查和分析人物再识别模型的性能,包括特征可视化和排名可视化。

开始使用 TorchRe-ID

要开始使用 TorchRe-ID,您需要安装该库及其依赖项。您可以通过 pip 进行安装:

pip install torchreid

模型培训

TorchRe-ID 简化了人员再识别模型的训练过程。下面是如何在 Market-1501 数据集上训练 osnet_x1_0 模型的示例:

if __name__ == '__main__':
	import torchreid
	from multiprocessing import freeze_support
	from torchreid.utils import load_pretrained_weights
	import torch
	freeze_support()

	device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

  datamanager = torchreid.data.ImageDataManager(
    root='reid-data', #path to market1501
    sources='market1501',
    height=256,
    width=128,
    batch_size_test=32,
    batch_size_train=100,
    market1501_500k=False,
    combineall=True 
  )
  model = torchreid.models.build_model(
    name="osnet_x1_0",
    num_classes=datamanager.num_train_pids,
    loss="softmax",
    pretrained=True
  )
  model.to(device)
  optimizer = torchreid.optim.build_optimizer(
    model,
    optim="sgd",
    lr=0.01,
    staged_lr=True,
    new_layers='classifier',
    base_lr_mult=0.1
  )
  scheduler = torchreid.optim.build_lr_scheduler(
    optimizer,
    lr_scheduler="single_step",
    stepsize=20
  )
  engine = torchreid.engine.ImageSoftmaxEngine(
    datamanager,
    model,
    optimizer=optimizer,
    scheduler=scheduler,
    label_smooth=True
  )
  engine.run(
    save_dir="log/osnet",
    max_epoch=100,
    eval_freq=10,
    print_freq=10,
    fixbase_epoch=5,
    open_layers='classifier'
  )

此示例演示了如何加载 Market-1501 数据集、创建 osnet_x1_0 模型、设置优化器和学习率调度器,并使用 ImageSoftmaxEngine 启动训练过程。

tensorboard - logdir=/Users/xx/SSRIP/log

首先,用 pip 安装 tensorboard,然后在 CMD 上运行该命令。

在训练模型时,tensorboard 的 SummaryWriter() 会在 engine.run() 中自动初始化。因此,你不需要做额外的工作。训练完成后,tf.events 文件将保存在 save_dir。然后,只需在终端中调用 tensorboard --logdir=your_save_dir并在网络浏览器中访问 http://localhost:6006/ 即可。更多信息,请参阅 pytorch tensorboard: https://pytorch.org/docs/stable/tensorboard.html。

img

This Type of Evaluation Parameters will be shown after model training.

可视化排名结果

这可以通过在 engine.run() 中将 visrank 设置为 true 来实现。 visrank_topk 决定要可视化的前 k 张图片(默认为 visrank_topk=10)。请注意,visrank 只能在测试模式下使用,即在 engine.run() 中设置 test_only=true。输出结果将保存在 save_dir\visrank_DATASETNAME,其中每个图都包含查询到的前 k 张相似图库图片。下图是一个示例,红色和绿色分别表示不正确和正确的匹配。可视化代码示例如下,请将以下代码粘贴到上层代码中。

path='/Users/xx/SSRIP/MultiCamera/osnet_x1_0_market_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip.pth'
load_pretrained_weights(model, path)
engine.run(
  save_dir="log/osnet",
  max_epoch=100,
  eval_freq=10,
  print_freq=10,
  test_only=True,
  fixbase_epoch=5,
  open_layers='classifier',
  visrank=True,
  visrank_topk=20
)

img

img

img

img

激活地图可视化

要了解 CNN 重点提取 ReID 特征的位置,可以像在 OSNet(https://arxiv.org/abs/1905.00953) 中一样可视化激活图。该功能在 tools/visualize_actmap.py 中实现(更多详情请查看代码)。运行命令示例如下

python tools/visualize_actmap.py - root 'Multi-Camera' -d market1501 -m osnet_x1_0 - weights /Users/xx/Multi_Camera/osnet_x1_0_market_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip.pth - save-dir /Users/xx/Multi_Camera

img

Model Zoo

Model Zoo 的超链接中提到了一些预训练模型。提到的模型在多个单独数据集上进行了训练,有些模型还进行了组合训练,以获得更好的准确性和未见数据预测。

引文

@article{torchreid,
title={Torchreid: A Library for Deep Learning Person Re-Identification in Pytorch},
author={Zhou, Kaiyang and Xiang, Tao},
journal={arXiv preprint arXiv:1910.10093},
year={2019}
}1

@inproceedings{zhou2019osnet,
title={Omni-Scale Feature Learning for Person Re-Identification},
author={Zhou, Kaiyang and Yang, Yongxin and Cavallaro, Andrea and Xiang, Tao},
booktitle={ICCV},
year={2019}
}2

@article{zhou2021osnet,
title={Learning Generalisable Omni-Scale Representations for Person Re-Identification},
author={Zhou, Kaiyang and Yang, Yongxin and Cavallaro, Andrea and Xiang, Tao},
journal={TPAMI},
year={2021}
}3


  1. http://twitter.com/article ↩︎

  2. http://twitter.com/inproceedings ↩︎

  3. http://twitter.com/article ↩︎

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茶桁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值