Giter Site home page Giter Site logo

clip_benchmark's Introduction

CLIP Benchmark

The goal of this repo is to evaluate CLIP-like models on a standard set of datasets on different tasks such as zero-shot classification and zero-shot retrieval.

Below we show the average rank (1 is the best, lower is better) of different CLIP models, evaluated on different datasets.

benchmark.png

The current detailed results of the benchmark can be seen here or directly in the notebook.

Features

How to install?

pip install clip-benchmark

For development, you can also do this:

git clone https://github.com/LAION-AI/CLIP_benchmark
cd CLIP_benchmark
python setup.py install

How to use?

Command line interface (CLI)

The easiest way to benchmark the models is using the CLI, clip_benchmark. You can specify the model to use, the dataset and the task to evaluate on. Once it is done, evaluation is performed and the results are written into a JSON file.

CIFAR-10 example

Here is an example for CIFAR-10 zero-shot classification using OpenCLIP's pre-trained model on LAION-400m:

clip_benchmark --dataset=cifar10 --task=zeroshot_classification --pretrained=laion400m_e32 --model=ViT-B-32-quickgelu --output=result.json --batch_size=64

Here is the content of result.json after the evaluation is done:

{
    "dataset": "cifar10", "model": "ViT-B-32-quickgelu", 
    "pretrained": "laion400m_e32", "task": "zeroshot_classification",
    "metrics": {"acc1": 0.9074, "acc5": 0.998}
}

VOC2007 example

Here is another example with VOC2007, which is a multi-label classification dataset.

clip_benchmark --dataset=voc2007_multilabel --task=zeroshot_classification --pretrained=laion400m_e32 --model=ViT-B-32-quickgelu --output=result.json --batch_size=64

Here is the content of result.json after the evaluation is done:

{"dataset": "voc2007_multilabel", "model": "ViT-B-32-quickgelu", "pretrained": "laion400m_e32", "task": "zeroshot_classification", "metrics": {"mean_average_precision": 0.7627869844436646}}

Here, we compute the mean average precision or mAP, more details about that metric here in the context of multi-label classification.

VTAB example

Here is an example on how to run it on VTAB classification tasks. First, you need to install VTAB's dedicated package.

pip install task_adaptation==0.1

The name of the dataset follows the template vtab/<TASK_NAME>. To have the list of the 19 classification tasks using in VTAB, you can use:

python -c 'from clip_benchmark.datasets.builder import VTAB_19TASKS;print("\n".join(VTAB_19TASKS))'

Then, you can run it by providing the full dataset name. Example with eurosat:

clip_benchmark --dataset=vtab/eurosat --task=zeroshot_classification --pretrained=laion400m_e32 --model=ViT-B-32-quickgelu --output=result.json --batch_size=64

TensorFlow dataset example

Here is an example on how to run it on Tensorflow datasets. First, you need to install tfds-nightly and timm.

pip install timm tfds-nightly

The name of the dataset follows the template tfds/<DATASET_NAME>.

Example with cifar10:

clip_benchmark --dataset=tfds/cifar10 --task=zeroshot_classification --pretrained=laion400m_e32 --model=ViT-B-32-quickgelu --output=result.json --batch_size=64

COCO captions example

Here is an example for COCO captions zero-shot retrieval:

clip_benchmark --dataset=mscoco_captions --task=zeroshot_retrieval --pretrained=laion400m_e32 --model=ViT-B-32-quickgelu --output=result.json --dataset_root=<PATH_TO_IMAGE_FOLDER> --annotation_file=<PATH_TO_ANNOTATION_FILE> --batch_size=64

(see https://cocodataset.org/#home for instructions on how to download)

Note that for using COCO, you also need to install pycocotools, using:

pip install pycocotools

API

You can also use the API directly. This is especially useful if your model does not belong to currently supported models. (TODO)

Credits

  • Thanks to OpenCLIP authors, zero-shot accuracy code is adapted from there and pre-trained models are used in the command line interface.
  • Thanks to SLIP authors, some zero-shot templates and classnames are from there.
  • Thanks to Wise-ft authors, Imagenet robustness datasets code is adapted from there
  • Thanks to LiT authors, some zero-shot templates and classnames of VTAB datasets are from there.
  • This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template. Thanks to the author.

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.