Official implementation of "Advancing Reference-free Evaluation of Video Captions with Factual Analysis"
- Key Features
- Installation
- Inference
- Dataset
- Synthetic Data Generation
- Training
- Results
- Citation
- Contact
- Reference-free Evaluation: Evaluates video captions without requiring ground-truth references
- Factual Grounding: Focuses on detecting factual errors in objects and actions
- Interpretable Outputs: Generates quality scores (1-5) with natural language explanations
- Lightweight & Open-source: Built on Qwen2.5-VL (3B/7B), fully reproducible
- Cross-domain Generalization: Works on both video and image caption evaluation
# Clone the repository
git clone https://github.com/dipta007/VC-Inspector.git
cd VC-Inspector
# Install all dependencies
pip install -e .
# Then install PyTorch for your CUDA version (see https://pytorch.org/get-started/locally/)
# Example for CUDA 12.4:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124The training dataset is available on HuggingFace:
| Name | Description | Size |
|---|---|---|
| dipta007/ActivityNet-FG-It | Synthetic video caption evaluation data (balanced & imbalanced splits) | 22K train / 1.1K val |
from datasets import load_dataset
dataset = load_dataset("dipta007/ActivityNet-FG-It", "balanced")Each example contains:
messages: Chat-formatted data with 32<image>tags, a caption, an evaluation prompt, and a score + explanationimages: List of 32 video frame paths
The dataset is generated by systematically augmenting ground-truth ActivityNet captions with controlled factual errors in objects and actions. Each sample pairs a video (as 32 frames) with a caption and a quality score (1-5) along with a natural language explanation.
Our data generation pipeline creates training samples by systematically augmenting ground-truth captions with controlled factual errors.
- Extract objects and actions from ground-truth captions using an LLM
- Generate alternative objects/actions with different meanings
- Substitute original elements with alternatives
- Compute quality scores based on semantic similarity
- Generate explanations identifying the factual errors
Step 1: Start the vLLM servers
# Start vLLM server for text generation
vllm serve Qwen/Qwen3-32B --port 8000 --trust-remote-code
# Start vLLM server for embeddings (quality scoring)
bash src/gen_data/embedding.shStep 2: Run the generation script
python -m src.gen_data.gen \
--gt_file data/actnet/train.caption_coco_format.json \
--dataset anet \
--n_sample 10 \
--out_dir data/synthetic_data \
--gen_model_id Qwen/Qwen3-32B \
--num_of_workers 64Arguments:
| Argument | Description | Default |
|---|---|---|
--gt_file |
Path to ground-truth captions (COCO format) | Required |
--dataset |
Dataset name (anet, vatex, msvd) |
anet |
--n_sample |
Augmented samples per caption | 10 |
--out_dir |
Output directory | data/synthetic_data |
--gen_model_id |
Generator LLM | Qwen/Qwen3-32B |
--num_of_workers |
Parallel workers | 64 |
We fine-tune vision-language models using LoRA with the ms-swift framework.
Training uses the dipta007/ActivityNet-FG-It dataset (balanced subset) from HuggingFace Hub directly.
bash src/training/train_lora.sh \
"Qwen/Qwen2.5-VL-3B-Instruct"Supported Base Models:
Qwen/Qwen2.5-VL-3B-InstructQwen/Qwen2.5-VL-7B-Instruct
| Model | HuggingFace |
|---|---|
| VC-Inspector-3B | dipta007/VCInspector-3B |
| VC-Inspector-7B | dipta007/VCInspector-7B |
python -m src.inference \
--model dipta007/VCInspector-7B \
--video path/to/video.mp4 \
--caption "A man is playing guitar in a field"Example Output:
4
The caption does not accurately capture the video content. For example, the objects (guitar) are incorrect.
| Metric | Type | Kendall's τb | Spearman's ρ |
|---|---|---|---|
| EMScore | Reference-free | 22.88 | 29.79 |
| CLIPScore | Reference-free | 22.33 | 29.09 |
| ViCLIPScore | Reference-free | 30.92 | 39.86 |
| G-VEval (GPT-4o) | Reference-free | 39.40 | - |
| VC-Inspector-3B | Reference-free | 37.99 | 42.45 |
| VC-Inspector-7B | Reference-free | 42.58 | 45.99 |
| Metric | Flickr8K-Expert | Flickr8K-CF |
|---|---|---|
| CLIPScore (ref-free) | 51.10 | 34.40 |
| PAC-S (ref-free) | 53.90 | 36.00 |
| VC-Inspector-3B | 59.86 | 39.00 |
| VC-Inspector-7B | 63.43 | 45.97 |
If you find this work useful, please cite our paper:
@inproceedings{dipta2026vcinspector,
title={VC-Inspector: Advancing Reference-free Evaluation of Video Captions with Factual Analysis},
author={Shubhashis Roy Dipta and Tz-Ying Wu and Subarna Tripathi},
booktitle={Proceedings of the Association for Computational Linguistics: ACL 2026},
year={2026},
eprint={2509.16538},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2509.16538},
}For questions or issues, please open a GitHub issue or contact:
- Shubhashis Roy Dipta: sroydip1@umbc.edu