GithubHelp home page GithubHelp logo

feymanpriv / pymetric Goto Github PK

View Code? Open in Web Editor NEW
77.0 6.0 8.0 983 KB

pytorch metric learning tools and pycls

License: MIT License

Shell 0.33% Python 99.67%
metric-learning classification pytorch retrieval

pymetric's Introduction

pymetric

pymetric tries to build a metric learning and retrieval codebase based on PyTorch. It refers from pycls On Network Design Spaces for Visual Recognition project and fast-reid from (https://github.com/JDAI-CV/fast-reid).

Introduction

Installation

Requirements:

  • NVIDIA GPU, Linux, Python3(tested on 3.6.10)
  • PyTorch, various Python packages; Instructions for installing these dependencies are found below

Notes:

  • pymetric does not currently support running on CPU; a GPU system is required
  • pymetric has been tested with CUDA 10.2 and cuDNN 7.1

PyTorch

To install PyTorch with CUDA support, follow the installation instructions from the PyTorch website.

pymetric

Clone the pymetric repository:

# PYMETRIC=/path/to/clone/pymetric
git clone https://github.com/feymanpriv/pymetric $PYMETRIC

Install Python dependencies:

pip install -r $PYMETRIC/requirements.txt

Set PYTHONPATH:

cd $PYMETRIC && export PYTHONPATH=`pwd`:$PYTHONPATH

Datasets

Same with pycls, pymetric finds datasets via symlinks from metric/datasets/data to the actual locations where the dataset images and annotations are stored. Refer to DATA.md.

Getting Started

Training a metric model:

python tools/train_metric.py \
    --cfg configs/metric/R-50-1x64d_step_8gpu.yaml \
    OUT_DIR ./output \
    PORT 12001 \
    TRAIN.WEIGHTS path/to/pretrainedmodel

Resume training:

python tools/train_metric.py \
    --cfg configs/metric/R-50-1x64d_step_8gpu.yaml \
    OUT_DIR ./output \
    PORT 12001 \
    TRAIN.AUTO_RESUME True

Extracting features(labels) and evaluation

set ${total_num} = n*(gpu_cards)
sh tools/metric/eval/infer.sh
python search.py search_gpu ${queryfea_path}, ${referfea_path}, ${output}

Convert to tensorflow2.3 (please refer onnx and onnx-tensorflow)
examples: tools/convert/torch2onnx.py tools/convert/onnx2tf.py

Pretrained weights

-resnet50 (c3l3)

-resnet101 (t3ln)

-resnest269 (3c5a)

Results

2nd place on Google Landmark Retrieval Challenge 2020

Backbone Scale Margin Size Public Score Private Score
ResNeSt269 30 0.15 224/224 0.35129 0.30819
ResNeSt269 30 0.15 448/448 0.36972 0.33015
ResNeSt269 30 0.15 640/448 0.39040 0.34718

License

pymetric is released under the MIT license. Please see the LICENSE file for more information.

pymetric's People

Contributors

feymanpriv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pymetric's Issues

The provided resnest269 checkpoint does not have the embedding_layer weights

Nice work.

I downloaded the provided resnest269 pretrained checkpoint, but find it only has the weights for backbone and a 1000-class classificaiton header, but not the expected embedding layer weights. Any chance to share a version with the embedding layer weights as well?

For reference, here is the name of the last few layers in the state_dict loaded from the provided checkpoint

layer4.7.conv2.bn1.running_var                                                                                                 
layer4.7.conv2.bn1.num_batches_tracked                         
layer4.7.conv2.fc2.weight                                                                                                      
layer4.7.conv2.fc2.bias
layer4.7.conv3.weight                                                                                                          
layer4.7.bn3.weight                                                                                                            
layer4.7.bn3.bias                                              
layer4.7.bn3.running_mean                                      
layer4.7.bn3.running_var                                                                                                       
layer4.7.bn3.num_batches_tracked                               
fc.weight                                                                                                                      
fc.bias      

The fc.weight has shape [1000,2048]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.