赞
踩
人员再识别(re-ID)是计算机视觉中的一项重要任务,在监控系统、零售分析和人机交互中有着广泛的应用。TorchRe-ID 是一个功能强大、用户友好的 Python 库,它为人员再识别任务提供了一套全面的工具和模型。在本文中,我们将探索 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。
这可以通过在 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
)
要了解 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
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
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。