行人重识别 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代码运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_41857532/article/details/122976706
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/572011

相关文章

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

如何通过海康威视设备网络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是一个工具,