PCB:
https://github.com/huanghoujing/beyond-part-models1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38.
├── bpm
│ ├── dataset
│ │ ├── Dataset.py
│ │ ├── __init__.py
│ │ ├── Prefetcher.py
│ │ ├── PreProcessImage.py
│ │ ├── TestSet.py
│ │ └── TrainSet.py
│ ├── __init__.py
│ ├── model
│ │ ├── __init__.py
│ │ ├── PCBModel.py
│ │ └── resnet.py
│ └── utils
│ ├── dataset_utils.py
│ ├── distance.py
│ ├── __init__.py
│ ├── metric.py
│ ├── re_ranking.py
│ ├── utils.py
│ └── visualization.py
├── example_rank_lists_on_Market1501
│
└── script
├── dataset
│ ├── combine_trainval_sets.py
│ ├── mapping_im_names_duke.py
│ ├── mapping_im_names_market1501.py
│ ├── transform_cuhk03.py
│ ├── transform_duke.py
│ └── transform_market1501.py
└── experiment
├── train_pcb.py
└── visualize_rank_list.py
bpm:正式的模型训练
script:主要用于数据的预处理和训练的对外借口
以market1501为例
数据的预处理
第一个表示id,第二个表示cam,第三个表示同id同cam的第几张图片,对zip_file中的*.jpg移动到save_dir+images中,并且重命名,将所有图片重命名保存到save_dir+images
分为
——trainval name+label
|——train name+label
|——val name+mask
|——query 0
|——gallery 1
——test name+mask
|——query 0
|——multi-query 2
|——gallery 1
保存到save_dir, ‘partitions.pkl’中
trainval提取val的时候,val中的id只提取100个id,并且会自动跳过只在一个cam下的id。1
2
3
4
5
6
7
8
9partitions: dict
{'trainval_im_names': train_test_split['trainval_im_names'],
'trainval_ids2labels': trainval_ids2labels,
'train_im_names': train_im_names,
'train_ids2labels': train_ids2labels,
'val_im_names': val_im_names,
'val_marks': val_marks,
'test_im_names': test_im_names,
'test_marks': test_marks}
数据集
对于数据集是怎么加载、转化的,还是没有头绪,写法之前没有遇到过,这一部分有待提高
模型
模型是一致的
模型训练
test好像是re-ranking了
val没有re-ranking
lr: 0.1 0.01
factor: 0.1
epochs: 60
staircase_decay_at_epochs: 41