Fine-grained and Coarse-grained Image-Text Retrieval Evaluation
Project description
FiCo-ITR: Fine-grained and Coarse-grained Image-Text Retrieval
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
- Technical Documentation - Implementation details
- Alignment - How data alignment works
- Similarity - Available similarity measures
- Tasks - Evaluation metrics and algorithms
- Paper Tutorial - Reproduce paper results with pre-computed embeddings
📋 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
603fa26cfa445c83553bb49b0377fee84625a9f31133b3e95b1929de5f37cde0
|
|
| MD5 |
5777254709ff521b109ae22740599355
|
|
| BLAKE2b-256 |
7b6fbd83f35d1009f923a505b086996af1b21b169b7113fdb68ddb96bb89e63b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c0998aae2055bacd427dc34006acadb6ef7d18931fcb05ccc1fcf940b0ca0fe
|
|
| MD5 |
e1da02e03ea67261ffbbdec26f6cc6e6
|
|
| BLAKE2b-256 |
6b72e917e17ef6877945743199b5af0f339d1ddd813d5c587ce26981fb0893e1
|