Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/layumi/person-reid-triplet-loss
Person re-ID baseline with triplet loss
https://github.com/layumi/person-reid-triplet-loss
cnn image-retrieval open-reid personreid pytorch triplet-loss
Last synced: 16 days ago
JSON representation
Person re-ID baseline with triplet loss
- Host: GitHub
- URL: https://github.com/layumi/person-reid-triplet-loss
- Owner: layumi
- Created: 2018-07-25T20:28:04.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-03T04:14:07.000Z (almost 5 years ago)
- Last Synced: 2023-10-20T21:10:27.295Z (about 1 year ago)
- Topics: cnn, image-retrieval, open-reid, personreid, pytorch, triplet-loss
- Language: Python
- Size: 46.9 KB
- Stars: 183
- Watchers: 6
- Forks: 42
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Person_reID_triplet-loss-baseline
Baseline Code (with bottleneck) for Person-reID (pytorch).
We arrived **Rank@1=86.45%, mAP=70.66%** with ResNet stride=2.
SGD optimizer is used.Any suggestion is welcomed.
## Model Structure
You may learn more from `model.py`. We use the L2-norm 2048-dim feature as the input.## Tips
- News: I added the fp16 support.
- I did not optimize the code. I strongly suggest use fp16 and use `with torch.no_grad()`. I will update the code later.
- Larger margin may lead to a worse local minimum. (margin = 0.1-0.3 may provide a better result.)
- Per-class sampler (Satisfied sampler)is not neccessary.
- Adam optimizer is not neccessary.## Prerequisites
- Python 3.6
- GPU Memory >= 6G
- Numpy
- Pytorch 0.3+**(Some reports found that updating numpy can arrive the right accuracy. If you only get 50~80 Top1 Accuracy, just try it.)**
We have successfully run the code based on numpy 1.12.1 and 1.13.1 .## Getting started
### Installation
- Install Pytorch from http://pytorch.org/
- Install Torchvision from the source
```
git clone https://github.com/pytorch/vision
cd vision
python setup.py install
```
Because pytorch and torchvision are ongoing projects.Here we noted that our code is tested based on Pytorch 0.3.0/0.4.0 and Torchvision 0.2.0.
## Dataset & Preparation
Download [Market1501 Dataset](http://www.liangzheng.org/Project/project_reid.html)Preparation: Put the images with the same id in one folder. You may use
```bash
python prepare.py
```
Remember to change the dataset path to your own path.Futhermore, you also can test our code on [DukeMTMC-reID Dataset](https://github.com/layumi/DukeMTMC-reID_evaluation).
Our baseline code is not such high on DukeMTMC-reID **Rank@1=64.23%, mAP=43.92%**. Hyperparameters are need to be tuned.To save trained model, we make a dir.
```bash
mkdir model
```## Train
Train a model by
```bash
python train_new.py --gpu_ids 0 --name ft_ResNet50 --train_all --batchsize 32 --data_dir your_data_path
```
`--gpu_ids` which gpu to run.`--name` the name of model.
`--data_dir` the path of the training data.
`--train_all` using all images to train.
`--batchsize` batch size.
`--erasing_p` random erasing probability.
Train a model with random erasing by
```bash
python train_new.py --gpu_ids 0 --name ft_ResNet50 --train_all --batchsize 32 --data_dir your_data_path --erasing_p 0.5
```## Test
Use trained model to extract feature by
```bash
python test.py --gpu_ids 0 --name ft_ResNet50 --test_dir your_data_path --which_epoch 59
```
`--gpu_ids` which gpu to run.`--name` the dir name of trained model.
`--which_epoch` select the i-th model.
`--data_dir` the path of the testing data.
## Evaluation
```bash
python evaluate.py
```
It will output Rank@1, Rank@5, Rank@10 and mAP results.
You may also try `evaluate_gpu.py` to conduct a faster evaluation with GPU.For mAP calculation, you also can refer to the [C++ code for Oxford Building](http://www.robots.ox.ac.uk/~vgg/data/oxbuildings/compute_ap.cpp). We use the triangle mAP calculation (consistent with the Market1501 original code).
## Related Repos
1. [Pedestrian Alignment Network](https://github.com/layumi/Pedestrian_Alignment)
2. [2stream Person re-ID](https://github.com/layumi/2016_person_re-ID)
3. [Pedestrian GAN](https://github.com/layumi/Person-reID_GAN)
4. [Language Person Search](https://github.com/layumi/Image-Text-Embedding)