行人重识别 reid-strong-baseline代码运行

2024-01-05 06:50

本文主要是介绍行人重识别 reid-strong-baseline代码运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为刚入门的小白,先找了reid方向的一个baseline来学习,我找的是浙江大学罗浩老师在2019发表的一篇CVPR论文,该论文利用一些tricks来提出了一个更强的baseline,本文主要是运行该论文的代码。
论文题目:《Bag of Tricks and A Strong Baseline for Deep Person Re-identification》
论文地址:https://arxiv.org/abs/1903.07071
代码地址:https://github.com/michuanhaohao/reid-strong-baseline

下面就开始来跑代码,我用的环境配置是:
python3.6+pytorch1.6.0+cuda 10.1+torchvision 0.7.0
我因为是在家,所以是租的服务器,我用的是下面这个,感觉还很不错,注册还送十元代金券,租3090可以免费用四个小时左右,我租的是2080ti。
https://www.autodl.com/register?code=5eb4c04b-ba17-4bb7-9e95-be2c55309631

步骤:

1、先cd到你要存储到的文件夹下,再运行git clone https://github.com/michuanhaohao/reid-strong-baseline,将项目下载下来。
2、安装项目需要的包,该项目需要安装ignite和yacs这两个包,运行conda install yacs,对于ignite这个包,作者GitHub上说要安装0.1.2版本,不然可能出错,我试过直接安装,确实后面有点问题,而0.1.2版本好像是python3.7(包括)以下才能用,所以我上面用的是python3.6。我准备来手动安装:
(1)用下面的地址先下载ignite的0.1.2版本的包:
https://github.com/pytorch/ignite/tree/v0.1.2
(2)解压之后cd到文件夹目录下,运行python setup.py install
这里有一个情况,我运行的时候报了time out错误(但是我后来运行又没出错,如果没有出错就忽略下面这些)
经过查询之后,是因为访问国外网站超时了,将报错的那一串链接复制到浏览器,下载future-0.18.2.tar.gz压缩包,然后解压,cd到这个文件夹,运行python setup.py install,再回到ignite-0.1.2文件夹,继续运行python setup.py install,这样就不报错了。
3、准备数据集,这里我因为是想将这个项目先跑通,所以就只下载了Market1501数据集,没有的可以从我之前的博客里去取:
https://blog.csdn.net/qq_41857532/article/details/122968857?spm=1001.2014.3001.5501
下载好后新建一个data文件夹,然后将Market1501数据集放到里面。
4、从下面链接下载预训练权重:
https://download.pytorch.org/models/resnet50-19c8e357.pth
我将其放到了我自己建的models文件夹/root/project/models/resnet50-19c8e357.pth中,然后将configs文件夹下的四个.yml文件中的PRETRAIN_PATH改为:PRETRAIN_PATH: '/root/project/models/resnet50-19c8e357.pth'
5、开始训练。项目中有很多.sh文件,可以用pycharm打开来进行选择,这里需要新建一个文件夹来存放输出,OUTPUT_DIR就是新建的文件夹路径。
我选择的是Experiment-all_tricks-without_center-market.sh
使用的指令是:

python3 /root/project/reid-strong-baseline/tools/train.py --config_file='/root/project/reid-strong-baseline/configs/softmax_triplet.yml' MODEL.DEVICE_ID "('0')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "('/root/project/data')" OUTPUT_DIR "('/root/project/outputs/softmax_triplet.yml_outputs')"

但是出现报错,如下:

找不到config模块,查询之后,需要在test.py中sys.path.append('.')前加入下面代码:

parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
sys.path.insert(0,parentdir) 

训练完成后,我的结果如下:在这里插入图片描述
6、进行测试,和训练一样,要在test.py中sys.path.append('.')前加入上面那两行代码。TEST.WEIGHT的值是上面你新建的文件夹路径里保存的训练120次的模型的路径,也就是:/root/project/outputs/softmax_triplet.yml_outputs/resnet50_model_120.pth,然后将configs文件夹下的四个.yml文件中的OUTPUT_DIR改为:/root/project/outputs/softmax_triplet.yml_outputs,我的指令是

python3 /root/project/reid-strong-baseline/tools/test.py --config_file='/root/project/reid-strong-baseline/configs/softmax_triplet_with_center.yml' MODEL.DEVICE_ID "('0')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "('/root/project/data')" TEST.RE_RANKING "('yes')" MODEL.PRETRAIN_CHOICE "('self')" TEST.WEIGHT "('/root/project/outputs/softmax_triplet.yml_outputs/resnet50_model_120.pth')"

这是加入了re_rangking来进行测试的,运行时报了‘Baseline’ object is not iterable的错误,查找资料需要将
将modeling文件夹中的baseline文件中,最下面的param_dict = torch.load(trained_path)
替换成param_dict = torch.load(trained_path).state_dict()
最后测试的结果是:
在这里插入图片描述
7、可以看到,这个baseline十分强大,取得了非常好的结果。对于其他的.sh文件,也可以自己来进行测试。

参考链接:https://blog.csdn.net/MRZHUGH/article/details/108467892
https://blog.csdn.net/m0_55460164/article/details/118580418?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164507131916780274173890%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164507131916780274173890&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-10-118580418.first_rank_v2_pc_rank_v29&utm_term=reid+strong+baseline+%E4%BB%A3%E7%A0%81&spm=1018.2226.3001.4187

这篇关于行人重识别 reid-strong-baseline代码运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

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

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

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

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

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

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

T1打卡——mnist手写数字识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.定义GPU import tensorflow as tfgpus=tf.config.list_physical_devices("GPU")if gpus:gpu0=gpus[0]tf.config.experimental.set_memort_groth(gpu0,True) #设置GPU现存用量按需

使用 VisionTransformer(VIT) FineTune 训练驾驶员行为状态识别模型

一、VisionTransformer(VIT) 介绍 大模型已经成为人工智能领域的热门话题。在这股热潮中,大模型的核心结构 Transformer 也再次脱颖而出证明了其强大的能力和广泛的应用前景。Transformer 自 2017年由Google提出以来,便在NLP领域掀起了一场革命。相较于传统的循环神经网络(RNN)和长短时记忆网络(LSTM), Transformer 凭借自注意力机制

T7:咖啡豆识别

T7:咖啡豆识别 **一、前期工作**1.设置GPU,导入库2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型**1、手动搭建2、直接调用官方模型 **四、编译模型****五、训练模型****六、模型评估****七、预测**八、暂时总结 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K