--- license: mit language: - en tags: - person-reid - deep-learning - image-recognition --- This repo contains the pre-trained weights of OSNet, specialized for person recognition (i.e., person re-identification). Related work: - [Omni-Scale Feature Learning for Person Re-Identification](https://arxiv.org/abs/1905.00953) - [Learning Generalisable Omni-Scale Representations for Person Re-Identification](https://arxiv.org/abs/1910.06827) # Get started Install the [Torchreid](https://github.com/KaiyangZhou/deep-person-reid) package. ```bash # cd to your preferred directory and clone this repo git clone https://github.com/KaiyangZhou/deep-person-reid.git # create environment cd deep-person-reid/ conda create --name torchreid python=3.7 conda activate torchreid # install dependencies # make sure `which python` and `which pip` point to the correct path pip install -r requirements.txt # install torch and torchvision (select the proper cuda version to suit your machine) conda install pytorch torchvision cudatoolkit=9.0 -c pytorch # install torchreid (don't need to re-build it if you modify the source code) python setup.py develop ``` Download OSNet models. ```python from huggingface_hub import snapshot_download # This will download the entire repo (containing all models) to cache_dir snapshot_download(repo_id="kaiyangzhou/osnet", cache_dir="./") ``` Use Torchreid as a feature extractor in your project. ```python from torchreid.utils import FeatureExtractor extractor = FeatureExtractor( model_name='osnet_x1_0', model_path='a/b/c/model.pth', device='cuda' ) image_list = [ 'a/b/c/image001.jpg', 'a/b/c/image002.jpg', 'a/b/c/image003.jpg', 'a/b/c/image004.jpg', 'a/b/c/image005.jpg' ] features = extractor(image_list) print(features.shape) # output (5, 512) ``` # Model list Models pre-trained on ImageNet are named in the following format: `osnet_x_imagenet.pth`. Available re-id models: - osnet_ain_x1_0_msmt17_256x128_amsgrad_ep50_lr0.0015_coslr_b64_fb10_softmax_labsmth_flip_jitter.pth - osnet_ibn_x1_0_msmt17_combineall_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip_jitter.pth - osnet_x1_0_msmt17_combineall_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip_jitter.pth - osnet_x0_75_msmt17_combineall_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip_jitter.pth - osnet_x0_5_msmt17_combineall_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip_jitter.pth - osnet_x0_25_msmt17_combineall_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip_jitter.pth `ain` and `ibn` models are more generalizable. Please refer to https://arxiv.org/abs/1910.06827. `osnet_x1_0`, `osnet_x0_75`, `osnet_x0_5`, and `osnet_x0_25` are OSNet models of different sizes. Please refer to https://arxiv.org/abs/1905.00953.