Code Monkey home page Code Monkey logo

consnet's Introduction

ConsNet

DOI arXiv PyPI License

This repository maintains the official implementation of the paper ConsNet: Learning Consistency Graph for Zero‐Shot Human‐Object Interaction Detection by Ye Liu, Junsong Yuan and Chang Wen Chen, which has been accepted by ACM Multimedia 2020.

Installation

The ConsNet package could be installed directly from PyPI or manually from source for different uses. Please refer to the following environmental settings that we use.

Install from PyPI

You may install ConsNet from PyPI and import it in your own project as a Python package. This library implements several useful functionalities including Pair IoU, Pair NMS and unified APIs for HICO-DET dataset.

Simply run the following command to install the latest version of ConsNet.

pip install consnet

For more details about consnet.api, please refer to our documentation.

Install from source

By installing ConsNet from source, you may access the full capabilities of this project, including pooling object features, constructing the consistency graph and benchmarking the ConsNet model.

  1. Clone the repository from GitHub.
git clone https://github.com/yeliudev/ConsNet.git
cd ConsNet
  1. Install full dependencies and the package.
pip install -e .[full]

Getting Started

We pre-extract the visual features of all the humans and objects in the dataset and save them for training as well as testing. These features are also used to construct the consistency graph. Please refer to our paper for more details about feature extraction and data sampling.

Build dataset and construct the consistency graph

  1. Download the checkpoints of object detector and ELMo.
ROOT='https://s3-us-west-2.amazonaws.com/allennlp/models/elmo'
ELMO='2x4096_512_2048cnn_2xhighway_5.5B'

# Download object detector checkpoints
wget https://huggingface.co/yeliudev/ConsNet/resolve/main/faster_rcnn_r50_fpn_3x_coco-26df6f6b.pth
wget https://huggingface.co/yeliudev/ConsNet/resolve/main/faster_rcnn_r50_fpn_20e_hico_det-77b91312.pth

# Download ELMo options and weights
wget ${ROOT}/${ELMO}/elmo_${ELMO}_options.json
wget ${ROOT}/${ELMO}/elmo_${ELMO}_weights.hdf5
  1. Download HICO-DET dataset and prepare the files in the following structure.
ConsNet
β”œβ”€β”€ configs
β”œβ”€β”€ consnet
β”œβ”€β”€ tools
β”œβ”€β”€ checkpoints
β”‚   β”œβ”€β”€ faster_rcnn_r50_fpn_3x_coco-26df6f6b.pth
β”‚   β”œβ”€β”€ faster_rcnn_r50_fpn_20e_hico_det-77b91312.pth
β”‚   β”œβ”€β”€ elmo_2x4096_512_2048cnn_2xhighway_5.5B_options.json
β”‚   └── elmo_2x4096_512_2048cnn_2xhighway_5.5B_weights.hdf5
β”œβ”€β”€ data
β”‚   └── hico_20160224_det
β”‚       β”œβ”€β”€ anno_bbox.mat
β”‚       └── images
β”‚           β”œβ”€β”€ train2015
β”‚           └── test2015
β”œβ”€β”€ README.md
β”œβ”€β”€ setup.py
└── Β·Β·Β·
  1. Convert the annotations to COCO format. The results will be saved in data/hico_det/annotations.
python tools/convert_anno.py
  1. Build dataset and construct the consistency graph. The results will be saved in data/hico_det.
python tools/build_dataset.py --checkpoint <path-to-checkpoint>

Train a model

Run the following command to train a model using specified configs.

python tools/launch.py --config <path-to-config>

Test a model and evaluate results

Run the following command to test a model and evaluate results.

python tools/launch.py --config <path-to-config> --checkpoint <path-to-checkpoint> --eval

Model Zoo

We provide multiple HICO-DET pre-trained models here. All the models are trained using a single NVIDIA Tesla V100-SXM2 GPU and are evaluated under the default metric of HICO-DET dataset.

Detector Model Type Performance (mAP) Download
Full Rare Non-Rare Seen Unseen
COCO ConsNet UC 19.78 14.43 21.37 20.69 16.13 model | metrics
ConsNet UO 20.71 16.81 21.87 20.99 19.27 model | metrics
ConsNet UA 19.04 14.54 20.38 20.02 14.12 model | metrics
ConsNet GT 53.04 38.79 57.3 β€” β€” model | metrics
ConsNet β€” 22.15 17.55 23.52 β€” β€”
HICO-DET ConsNet-F β€” 25.94 19.35 27.91 β€” β€” model | metrics

Note that: Type UC, UO, UA and GT represent unseen action-object combination, unseen object, unseen action and ground truth scenarios respectively.

Customization

Thanks to the modulized implementation based on NNCore, this project is highly customizable with a number of replaceable modules. You may play with the hyperparameters in configs or construct your own HOI detection pipeline by replacing the dataset, detector, embedder, etc. Please check the documentation of NNCore for more details about customizing the engine and modules.

Citation

If you find this project useful for your research, please kindly cite our paper.

@inproceedings{liu2020consnet,
  title={ConsNet: Learning Consistency Graph for Zero-Shot Human-Object Interaction Detection},
  author={Liu, Ye and Yuan, Junsong and Chen, Chang Wen},
  booktitle={Proceedings of The ACM International Conference on Multimedia (MM)},
  pages={4235--4243},
  year={2020}
}

consnet's People

Contributors

yeliudev avatar

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.