Reid Strong Baseline 代码解析及训练测试

1.下载项目:

GitHub - michuanhaohao/reid-strong-baseline: Bag of Tricks and A Strong Baseline for Deep Person Re-identificationicon-default.png?t=N7T8https://github.com/michuanhaohao/reid-strong-baseline

该项目的文件目录:

 |-----config

 |-----configs

 |-----data

 |-----engine

 |-----imgs

 |-----layers

 |-----modeling

 |-----solver

 |-----tests

 |-----tools

 |-----utils

以及一些.sh文件

2.pycharm中环境配置:

 

#conda create -n XXX python=3.6

# CUDA 10.1
pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

#ignite 0.1.2的安装包
https://github.com/pytorch/ignite/tree/v0.1.2

或者pip install pytorch-ignite

#yacs     pip install yacs

3.数据集与预训练模型

# 需要准备Market501数据集:

链接: https://pan.baidu.com/s/1I7mZLCOoY2ltzR73gN1UjQ 提取码: ab12 

注:将该数据集下载后解压并将文件名改为‘market501’,放入data文件夹中。

 #准备Resnet50的预训练模型:

链接: https://pan.baidu.com/s/1ryVTfgXw0oNDL-5Ud9ZI4g 提取码: cd34 

注:在该项目中新建一个‘models’文件夹,将下载的resnet50-19c8e357.pth(Resnet50预训练模型)放入‘models’文件夹中。

4.修改代码参数

#config/defaults.py:
_C.MODEL.PRETRAIN_PATH = " "(添加预训练模型所在的文件夹路径)

#configs/softmax-triplet.yml:

MODEL:

   PRETRAIN_PATH: ‘ ’(添加resnet50-19c8e357.pth的路径)

#tools/train.py:

在开头处sys.path.append('.')之前,添加两行代码:

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

#修改Experiment-all_tricks-without_center-market.sh:

python tools/train.py --config_file='configs/softmax_triplet.yml' MODEL.DEVICE_ID "('0')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "('XXXXXXXX/data')" OUTPUT_DIR "('XXXXXXXX/output')"

注:MODEL.DEVICE_ID:需要使用的GPU

DATASETS.NAMES:要训练的数据集文件夹名(‘market1501’)

DATASETS.ROOT_DIR:数据集所在的文件夹

OUTPUT_DIR:自己创建一个文件夹,用于查看训练完后数据(我创建的是‘output’)

5.开始训练:

使用上面修改的Experiment-all_tricks-without_center-market.sh文件:

$ sh Experiment-all_tricks-without_center-market.sh

注:configs/softmax-triplet.yml:

SOLVER:

 MAX_EPOCHS: 120 设置训练的轮数

训练结果:

 该图为训练完120轮后的结果。

6.进行测试:

训练完后打开’output‘:

resnet50_model_120.pth为训练完120轮后的权重模型。

#tools/test.py:

在开头处sys.path.append('.')之前,添加两行代码:

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

#configs/softmax_triplet_with_center.yml:

OUTPUT_DIR: "XXXXX"测试结果输出的路径,按自己的喜好即可

#测试依然使用.sh命令,将Test-reranking-all_tricks-tri_center-feat_after_bn-cos-market.sh
进行修改:

python tools/test.py --config_file='configs/softmax_triplet_with_center.yml' MODEL.DEVICE_ID "('1')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "('XXXX/data')" TEST.RE_RANKING "('yes')" MODEL.PRETRAIN_CHOICE "('self')" TEST.WEIGHT "('XXXXXX/resnet50_model_120.pth')"

注:MODEL.DEVICE_ID:需要使用的GPU

DATASETS.NAMES:要训练的数据集文件夹名(‘market1501’)

DATASETS.ROOT_DIR:数据集所在的文件夹

TEST.WEIGHT:训练120后的权重模型路径

#在服务器中输入以下命令进行测试:

$ sh Test-reranking-all_tricks-tri_center-feat_after_bn-cos-market.sh

注:测试中出现的问题:

#TypeError: 'Baseline' object is not iterable

将modeling/baseline.py中最下面的 param_dict = torch.load(trained_path)
改为:param_dict = torch.load(trained_path).state_dict()

测试结果:

该测试结果采用的 --config_file='configs/softmax_triplet_with_center.yml'

 该测试结果采用的 --config_file='configs/softmax_triplet.yml'

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: person_reid_baseline_pytorch是一个基于PyTorch框架的人员识别基线模型。它可以用于训练测试人员识别模型,以识别不同人员之间的差异和相似之处。该模型提供了一些基本的功能,如数据加载、模型训练、模型测试等,可以帮助用户快速搭建和测试自己的人员识别模型。 ### 回答2: person_reid_baseline_pytorch是一个基于PyTorch框架的人体重识别模型。该模型采用卷积神经网络(Convolutional Neural Network,简称CNN)架构,采用多个卷积层和池化层进行特征提取,最后经过全连接层得到人物特征向量,实现了对人体进行识别。 该模型的训练数据集一般采用Market1501数据集,它包含超过1501个不同身份的超过32000张图片,是一个非常大且具有代表性的数据集,训练出的模型能够具有很好的泛化能力。 在训练过程中,除了使用标准的交叉熵损失作为损失函数外,还使用Triplet Loss作为损失函数的一种变形。该损失函数能够比较好地处理重识别中的最大间隔问题,并且能够实现对同一身份的多张图片之间的特征相似度比较。 对于测试集的预测部分,该模型采用的是余弦相似度进行特征向量相似度计算,相似度越高则说明两个图片中的人物越有可能是同一个人,可以实现良好的识别结果。 总的来说,person_reid_baseline_pytorch基于PyTorch框架实现的人体重识别模型,通过CNN架构进行特征提取,使用Triplet Loss进行训练,使用余弦相似度进行特征向量相似度计算,能够实现对人体进行高效准确的识别。 ### 回答3: person_reid_baseline_pytorch 是一个基于 PyTorch 框架的行人重识别算法基线模型,它实现了一个简单但功能齐全的行人重识别框架,可以训练测试基于清晰照片的行人重识别任务。 该模型包含了基本卷积神经网络(CNN)的搭建和训练,其中包括几个关键部分:数据加载、模型定义、训练测试。它使用数据增强技术和三元损失函数来训练模型,目的是使相同人的图像对与不同人的图像对之间的距离最大化。 person_reid_baseline_pytorch 采用 Market-1501 数据集进行测试,并在该数据集上取得了不错的结果。该数据集包含 1501 个行人,共有 12936 张图像,其中包括 6 种视角和多种行为。该算法读取图像数据并将之前处理后的行人图像输入神经网络,以便为每个图像计算行人的特征向量。然后,使用相关算法来比较图像对的距离,并确定它们是否属于同一人。该算法的性能指标包括准确度、精度和召回率等。 总之,person_reid_baseline_pytorch 提供了一个简单但完整的框架和基线模型,可以作为进一步解决行人重识别问题的基础。无论是学术界还是商业界,这种算法都有广泛的应用前景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值