Fulin-Gao / OpenGCD

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OpenGCD: Assisting Open World Recognition with Generalized Category Discovery

Bower

A desirable open world recognition (OWR) system requires performing three tasks: (1) Open set recognition (OSR), i.e., classifying the known (classes seen during training) and rejecting the unknown (unseen/novel classes) online; (2) Grouping and labeling these unknown as novel known classes; (3) Incremental learning (IL), i.e., incrementally learning these novel classes and retaining the memory of old classes.

image

๐Ÿ”ฅ Preparation

Dependencies

All dependencies are included in environment.yml. To install, run

conda env create -f environment.yml

Data

You can find the required data from the link below and place them according to the path shown in OpenGCD/config.py.

Pretrained weights

You can download the ViT weights (dino_vitbase16_pretrain.pth) trained on ImageNet with DINO self-supervision at ViT-B/16.

Features

You can run extract_features.py to get the feature embedding for each dataset.

๐Ÿš€ Code

We provide code and models for our experiments on CIFAR10, CIFAR100, and CUB in OpenGCD:

  • Code for exemplar selection in OpenGCD/methods/exemplars_selection
  • Code for closed set recognition in OpenGCD/methods/closed_set_recognition
  • Code for open set recognition in OpenGCD/methods/open_set_recognition
  • Code for generalized category discovery in OpenGCD/methods/novel_category_discover
  • Code for evaluation metrics (Harmonic normalized accuracy and Harmonic clustering accuracy) in OpenGCD/project_utils/metrics.py
  • Code for our experiments in OpenGCD/exp

๐Ÿ”– Procedure

The schematic and pseudocode of the formulated OpenGCD are provided in Appendix.pdf.

๐Ÿ’ก Acknowledgement

Our code is partially based on the following repositories:

About

License:MIT License


Languages

Language:Python 100.0%