Reid Strong Baseline 代码解析

文章介绍了如何设置自己的数据集,包括使用作者提供的数据集格式或创建新格式。在训练阶段,讲解了修改模型参数和使用预训练模型的方法。此外,还提到了测试时选择样本的策略以及权重模型的使用。然而,文章未涉及数据增强、Rerank和Ignite.engine的详细用法。
摘要由CSDN通过智能技术生成

目录

1 设置自己的数据集

1.1使用作者提供的dataset格式

1.2新建dataset格式

 2 测试时设置是否只采用跨相机的样本

 3 训练

 3.1 修改模型

3.1.1参数解读

3.1.2使用自己的模型

 4测试

5本篇博客的不足


1 设置自己的数据集

1.1使用作者提供的dataset格式

也就是说不修改输入输出格式,直接改路径

1)修改数据集的路径。红色部分是之前的,绿色部分是修改后的。我这里使用的的是绝对路径。

   

2)检查数据集格式和正则化规则

假设使用的数据为1501格式的数据集。

configs/softmax_triplet_with_center.yml:

 则去找到其对应的class。

data/datasets/__init__.py

训练集和测试集的路径是在代码中设置的 

data/datasets/market1501.py

下面是正则化规则,也就是如何根据文件名读取标签,输出为文件路径,人物id,相机id

data/datasets/market1501.py

 

 检查上述规则是否符合自己的数据集,不符合则修改代码。market1501 数据集的格式为pid_camid_frameid.jpg

1.2新建dataset格式

market1501返回了三项,但没有返回frame id。作者测试时只把跨相机的样本作为gallery,但我考虑全部样本.。因此我需要frame id 这个属性,测试时把不同frame id 的全部图像作为gallery,也就是除去他本身外的所有图像。

(1)新建一个类Market1501_ignore_cam,类似于market1501.py中的代码,只不过改下正则化规则。然后在_init_.py 中引用此类。

 (2)修改dataloader

 (3)修改train和test 的读数据部分

 

 engine/inference.py:

 

  

 2 测试时设置是否只采用跨相机的样本

  utils/reid_metric.py

 3 训练

训练修改cfg文件

tools/train.py

 3.1 修改模型

修改name  预训练类型 目前有self imagenet random 三种。random不指定预训练路径。

3.1.1参数解读

 

 self 是自己的模型,类型为self时会接续训练,只需把start设置为0,则可以当作第0个epoch。

 数据集 名称 batch数 线程数

 

  数据集resize后的大小 以及数据增强

 

 模型保存路径

 

  更多参数对照configa/defaults.py添加到yaml文件。例如 MODEL是组名,NECK等是属性名。

 

3.1.2使用自己的模型

首先将配置文件的model name 改为定义的模型名称

然后去modeling/baseline.py定义该模型,并赋值给self.base

inplane是网络最后一层输出的通道数目

 4测试

修改权重路径

权重模型要和MODEL一致。

此时OUTPUT_DIR为测试结果保存的路径

5本篇博客的不足

笔者暂时没搞懂代码中的  ignite.engine 的使用方法。另外,没涉及数据增强和Rerank。

本文修复了作者的若干bug,若有代码需求请在评论区回复。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值