0%

beyond-part-models

PCB:
https://github.com/huanghoujing/beyond-part-models

1
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
9
partitions: 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