Skip to main content

Fine-grained and Coarse-grained Image-Text Retrieval Evaluation

Project description

FiCo-ITR: Fine-grained and Coarse-grained Image-Text Retrieval

Version Python License

A unified evaluation library for image-text retrieval research


Overview

FiCo-ITR provides a standardized evaluation framework for image-text retrieval models, supporting both instance-level (fine-grained) and category-level (coarse-grained) retrieval evaluation. The library handles diverse data formats encountered in current research, making it easy to evaluate and compare different models.

✨ Features

  • Universal Format Support - Automatically handles various embedding and matrix formats and orientations
  • Flexible Distributions - Supports both uniform and non-uniform caption distributions
  • Dual Evaluation - Instance-level and category-level retrieval tasks and metrics
  • Zero Configuration - Works out-of-the-box for most models
  • Extensible - Easy to adapt for custom evaluation needs

📦 Installation

pip install fico_itr

🚀 Quick Start

from fico_itr import instance_retrieval, category_retrieval

# Compute Similarity Matrix
similarity_matrix = compute_similarity(image_embeddings, text_embeddings, measure='cosine')

# Instance-level retrieval - just pass your similarity matrix
i2t_instance_results, t2i_instance_results = instance_retrieval(similarity_matrix)

# Category-level retrieval - add labels for mAP evaluation
i2t_category_results, t2i_category_results = category_retrieval(similarity_matrix, labels)

print(f"Instance Retrieval Results - I2T: {i2t_instance_results} T2I: {t2i_instance_results}")
print(f"Category Retrieval Results - I2T: {i2t_category_results} T2I: {t2i_category_results}")

📖 Usage Guide

1. Standard Case (Uniform Images x Captions Matrix)

# Just pass your similarity matrix
results = instance_retrieval(similarity_matrix)

2. Non-uniform Caption Distribution

For datasets where images have varying numbers of captions (e.g., COCO with 25010 captions):

# Option A: Load pre-computed mapping (for COCO)
caption_mapping = np.load('mscoco_test_indices.npy')

# Option B: Create your own mapping
caption_mapping = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, ...]  # Which image each caption belongs to

results = instance_retrieval(similarity_matrix, captions_per_image=caption_mapping)

3. Square Matrices (Duplicated Images)

Some models duplicate images to create square matrices:

# E.g., vsrn/ucch with 5000×5000 matrix (1000 images duplicated 5×)
results = instance_retrieval(similarity_matrix, captions_per_image=5)

4. Separate Directional Matrices

For models with different similarity matrices per direction:

# E.g., BLIP2, XVLM with task-specific fine-tuning
results = instance_retrieval(
    i2t_similarity_matrix,
    t2i_sim=t2i_similarity_matrix,
    captions_per_image=5  # or caption_mapping for non-uniform
)

📊 Model Examples

Model Dataset Special Handling Parameter
SCAN, IMRAM Any None -
BEiT-3 Flickr30k None -
BEiT-3 COCO Non-uniform caption_mapping
VSRN, UCCH Any Square matrix captions_per_image=5
BLIP-2, X-VLM Any Separate matrices t2i_sim=...
DADH Any Auto-transposed -

📚 Documentation

📋 Requirements

  • Python 3.7+
  • numpy

📄 Citation

If you use FiCo-ITR in your research, please cite:

@article{williams-lekuona2025ficoitr,
  author  = {Mikel Williams-Lekuona and Georgina Cosma},
  title   = {FiCo-ITR: Bridging Fine-Grained and Coarse-Grained Image-Text Retrieval for Comparative Performance Analysis},
  journal = {International Journal of Multimedia Information Retrieval},
  volume  = {14},
  number  = {2},
  pages   = {20},
  year    = {2025},
  publisher={Springer}
}

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

This project includes code generated with the assistance of AI coding tools.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fico_itr-1.0.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fico_itr-1.0.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file fico_itr-1.0.0.tar.gz.

File metadata

  • Download URL: fico_itr-1.0.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.3

File hashes

Hashes for fico_itr-1.0.0.tar.gz
Algorithm Hash digest
SHA256 603fa26cfa445c83553bb49b0377fee84625a9f31133b3e95b1929de5f37cde0
MD5 5777254709ff521b109ae22740599355
BLAKE2b-256 7b6fbd83f35d1009f923a505b086996af1b21b169b7113fdb68ddb96bb89e63b

See more details on using hashes here.

File details

Details for the file fico_itr-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: fico_itr-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.3

File hashes

Hashes for fico_itr-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c0998aae2055bacd427dc34006acadb6ef7d18931fcb05ccc1fcf940b0ca0fe
MD5 e1da02e03ea67261ffbbdec26f6cc6e6
BLAKE2b-256 6b72e917e17ef6877945743199b5af0f339d1ddd813d5c587ce26981fb0893e1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page