Home

Awesome

Label, Verify, Correct: A Simple Few-Shot Object Detection Method

Code for our paper: Label, Verify, Correct: A Simple Few-Shot Object Detection Method

Abstract: The objective of this paper is few-shot object detection (FSOD) – the task of expanding an object detector for a new category given only a few instances for training. We introduce a simple pseudo-labelling method to source high-quality pseudo-annotations from the training set, for each new category, vastly increasing the number of training instances and reducing class imbalance; our method finds previously unlabelled instances. Naïvely training with model predictions yields sub-optimal performance; we present two novel methods to improve the precision of the pseudo-labelling process: first, we introduce a verification technique to remove candidate detections with incorrect class labels; second, we train a specialised model to correct poor quality bounding boxes. After these two novel steps, we obtain a large set of high-quality pseudo-annotations that allow our final detector to be trained end-to-end. Additionally, we demonstrate our method maintains base class performance, and the utility of simple augmentations in FSOD. While benchmarking on PASCAL VOC and MS-COCO, our method achieves state-of-the-art or second-best performance compared to existing approaches across all number of shots.

Alt text

Code For COCO Experiments now available!

If you find this repository useful for your own research, please consider citing our paper.

@InProceedings{Kaul22,
  author       = "Prannay Kaul and Weidi Xie and Andrew Zisserman",
  title        = "Label, Verify, Correct: A Simple Few-Shot Object Detection Method",
  booktitle    = "IEEE Conference on Computer Vision and Pattern Recognition",
  year         = "2022",
}

This repo began from the excellent Fsdet repo.

Updates

Table of Contents

Installation

Requirements

Build lvc We recommend using conda to create an enviroment for this project

conda create --name lvc
conda activate lvc
pip install torch==1.7.1 torchvision==0.8.2

This code uses Detectron2 v0.2.1, however for ease we have modified this code and a self-contained version exists in this repo.

python -m pip install -e .

The installation of our Detectron2 code is identical to the official Detectron2 code, so if you run into errors at the above step please see the installation docs for Detectron2, specifically the common issues.

python -m pip install -r requirements.txt

Code Structure

Data Preparation

We evaluate our models on three datasets:

See datasets/README.md for more details.

Getting Started

Full Training & Evaluation in Command Line

LVC is conceptually simple but the full run involves many commands. For a full explanation of how to train for LVC, see TRAIN_FULL.md.