作者链接:GitHub - BoseungJeong/ASMR-ICCV-2021: This repository is official implementation of "ASMR: Learning Attribute-Based Person Search with Adaptive Semantic Margin Regularizer" (ICCV 2021)
conda env create -f ASMR.yaml
conda create -n ASMR
conda activate ASMR
#python prepare_Market.py中修改目录格式为D:/dataset/Market-1501
python prepare_Market.py
#python prepare_Market_Attribute.py中修改目录格式为D:/dataset/Market-1501
python prepare_Market_Attribute.py
#train_AR.py中修改目录格式为D:/dataset/Market-1501/tmp_2
#train_AR.py顶端加入如下代码
import multiprocessing
if __name__ == '__main__':
multiprocessing.freeze_support()
#避免多进程报错,将参数num_workers设置为0
num_workers=0
#手动创建/model/Pretrained_AR_Market目录
#改小了训练参数
python train_AR.py --AR --train_all --lr 0.001 --batchsize 16 --num_epoch 15
#test.py及train.py中修改目录格式为D:/dataset/Market-1501/tmp_2/
#自己创建config.yaml文件,内容如下:
# dataset configuration
dataset:
name: Market1501
root: D:/dataset/Market-1501/
train_all: true
cuhk03_labeled: false
cuhk03_classic_split: false
# model configuration
model:
name: resnet50_ibn_a
last_stride: 1
pretrained: true
num_classes: 751
# training configuration
train:
epochs: 10
batch_size: 16
lr: 0.001
momentum: 0.9
weight_decay: 0.0005
print_freq: 20
eval_freq: 10
#Train_and_Test_ASMR_Market.sh中代码更改如下:
#!/bin/bash
#Basic range in for loop
SET=$(seq 1 10)
ids=0
pre_epoch=4
echo Training is start.
lamb=6
name=Market_pretrained_${pre_epochs}_s12_m02_lambda_${lamb}
python train.py --MA_loss --batchsize 16 --seed 1 --decay 5 --gpu_ids $ids --name $name --num_epoch 10 --s 12 --m 0.2 --lr 0.001 --lamd $lamb --Pretrained --pre_epoch $pre_epoch --train_all
for epochs in $SET
do
echo Evaluation at $epochs
python test.py --batchsize 16 --which_epoch $epochs --gpu_ids $ids --name $name
done
echo All done
#执行sh Train_and_Test_ASMR_Market.sh
#报告:
Epoch 10/10
----------
Train Epoch: 10 [809/809 (100%)] Loss: 0.446990 Cos_mu: 0.000428 Acc: 100.000%: 100%|██████████████████████████████████████████████████████████████████| 809/809 [07:01<00:00, 1.92it/s]
train Loss: 0.6211 R@1: 0.9982
tensor([3.8435, 7.5290, 8.2935, 8.9338, 2.6598, 5.0313, 1.1629, 4.3981, 0.5412,
4.7621], device='cuda:0', grad_fn=<SqueezeBackward1>)
Training complete in 70m 44s
但报错:
File "D:\code\code_reid\ASMR-ICCV-2021-main\test.py", line 51, in <module>
config = yaml.load(stream)
TypeError: load() missing 1 required positional argument: 'Loader'
#考虑将config = yaml.load(stream)替换为:
config = yaml.load(stream, Loader=yaml.FullLoader)
#预训练模型保存在D:\code\code_reid\ASMR-ICCV-2021-main\model\Market_pretrained__s12_m02_lambda_6
python test.py --batchsize 16 --which_epoch 10 --gpu_ids 0 --name Market_pretrained__s12_m02_lambda_6
#成功出结果!!!
R@1: 44.835
R@5: 61.777
R@10: 67.975
mAP: 29.268