Visual Genome Region Descriptions for Images
Draw bounding boxes on photographs and describe each boxed region, using region_caption and the vlm-sft trainer on ten openly licensed Commons photographs.
Get This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/image/visual-grounding/visual-genome-region-descriptions
potato start config.yamlAbout this dataset
Visual Genome is a dataset of images densely annotated with region descriptions, objects, attributes, relationships, and question-answer pairs. Ranjay Krishna, Yuke Zhu, Oliver Groth, and nine coauthors introduced the dataset in the International Journal of Computer Vision in 2017. The dataset uses 108,249 images from the intersection of MS-COCO and YFCC100M, with an average of 42 region descriptions per image.
The region description task asks a worker to draw bounding boxes and write a description for the region each box encloses. In the arXiv preprint's words, a worker "is asked to draw three bounding boxes and write three descriptions for the region enclosed by each box." Each description is "a phrase ranging from 1 to 16 words in length," the box must cover every object the description mentions, and regions may overlap heavily when the descriptions differ. The original collection ran on Amazon Mechanical Turk. The collection showed workers earlier descriptions of the same image so that new descriptions differed.
The design reproduces that task with an image_annotation canvas for the boxes and a region_caption scheme that attaches one description to each box. Annotators describe regions independently, and two annotators see each image, so the admin IAA report can compare the annotators' captions with a token-overlap distance. Visual Genome's own images carry Flickr and COCO licenses that vary by photo, so the ten sample images are different, openly licensed photographs from Wikimedia Commons, each credited under CC0 or CC BY. The photographs are not Visual Genome images, and the paper's annotations are not reproduced.
In the model_training block, the vlm-sft trainer fine-tunes a vision-language model on the regions annotators have drawn. Each captioned region becomes one training example, with the region drawn on the image as a red box and named by the region's coordinates, and the caption as the answer. The trainer needs the train-vision extra and a GPU for real models. Caption predictions are scored on held-out items and are not written back as pre-labels, because the drawn regions are the annotator's own answer.
- Images
- 108,249 (Section 5.1)
- Region descriptions per image
- 50 collected, 42 on average
- Description length
- 1 to 16 words
- Crowd workers
- Over 33,000 unique workers on Amazon Mechanical Turk
- Annotation licence
- CC BY 4.0
- Sample images here
- 10 CC0 or CC BY photographs from Wikimedia Commons
Configuration File
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# yaml-language-server: $schema=https://potatoannotator.readthedocs.io/en/latest/schemas/potato-config.schema.json
#
# Visual Genome: Region Descriptions
#
# Paper: Krishna, Zhu, Groth, Johnson, Hata, Kravitz, Chen, Kalantidis, Li,
# Shamma, Bernstein & Fei-Fei, "Visual Genome: Connecting Language and
# Vision Using Crowdsourced Dense Image Annotations", International
# Journal of Computer Vision 123(1):32-73, 2017.
# @article{Krishna_2017, title={Visual Genome: Connecting Language and
# Vision Using Crowdsourced Dense Image Annotations}, volume={123},
# number={1}, journal={International Journal of Computer Vision},
# year={2017}, pages={32-73}, DOI={10.1007/s11263-016-0981-7}}
# DOI: 10.1007/s11263-016-0981-7
# arXiv: https://arxiv.org/abs/1602.07332
# Dataset: https://homes.cs.washington.edu/~ranjay/visualgenome/index.html
# Licence: Visual Genome annotations are CC BY 4.0 (Hugging Face dataset card,
# ranjaykrishna/visual_genome). Its images are COCO and YFCC100M photos
# with their own licences, so this design does not use them.
#
# Protocol, quoted from the paper (arXiv 1602.07332, Sections 2.1 and 4.2)
# ------------------------------------------------------------------------
# "we collect human-generated image region descriptions, with each region
# localized by a bounding box."
# "When a new image is added to the crowdsourcing pipeline with no
# annotations, it is sent to a worker who is asked to draw three bounding
# boxes and write three descriptions for the region enclosed by each box."
# "Each description is a phrase ranging from 1 to 16 words in length
# describing that region."
# "Regions are allowed to have a high degree of overlap with each other when
# the descriptions differ."
# "The bounding box must cover all objects mentioned in the description."
#
# The task has no label set. Each drawn box carries one free-text description.
#
# Adaptations
# -----------
# - Sample images are ten photographs from Wikimedia Commons, each under CC0 or
# CC BY and credited in the item's `credit` field. They are not Visual Genome
# images, because those carry mixed licences. Hotlinked, not copied.
# - The original asked each worker for three boxes and kept going, with the
# earlier descriptions shown, until an image had 50 (BLEU-filtered so a new
# description differed from the old ones). Here annotators draw as many regions
# as they like and never see anyone else's descriptions, which is what
# agreement scoring needs.
# - Two annotators per item so /admin/iaa reports caption agreement.
# - The 1 to 16 word limit and the box coverage rule are in the instructions
# and not enforced by the form.
# - Visual Genome was collected on Amazon Mechanical Turk. Potato is not tied to
# that platform.
#
# Model training
# --------------
# The `vlm-sft` trainer (kind `caption`) fine-tunes a vision-language model on
# these regions: one example per captioned region, with the region drawn on the
# image as a red box and named by its coordinates, and the caption as the
# answer. Pick it on /admin/training (key below). It needs
# `pip install 'potato-annotation[train-vision]'` and a GPU for real models, and
# it checks the chosen model's own licence. Its caption predictions are scored
# on held-out items and never written back as prelabels, because the regions
# are the annotator's answer. It trains a model and does not serve one.
port: 8000
annotation_task_name: "Visual Genome - Region Descriptions"
task_dir: "."
output_annotation_dir: "annotation_output/"
export_annotation_format: "jsonl"
data_files:
- sample-data.json
# The photo credit is the item text. The image itself is drawn by the canvas
# below, from source_field.
item_properties:
id_key: "id"
text_key: "credit"
require_password: false
admin_api_key: "demo-admin-key"
user_config:
allow_all_users: true
users: []
# Caption agreement is undefined with one annotator.
num_annotators_per_item:
default: 2
annotation_schemes:
# The canvas. region_caption owns the description of each region, and this
# schema owns the drawing.
- annotation_type: image_annotation
name: region
description: "Draw a bounding box around each region you want to describe."
source_field: image_url
tools:
- bbox
labels:
- name: region
color: "#6e56cf"
- annotation_type: region_caption
name: captions
description: "Describe the region enclosed by each box."
placeholder: "e.g. yellow fire hydrant"
# Warn once before advancing with a region still undescribed.
require_all: true
# Token overlap is a lower bound. "man in red shirt" against "person
# wearing a crimson top" scores as complete disagreement.
agreement_distance: token
annotation_instructions: |
Describe what is in the picture, one region at a time.
1. Draw a bounding box around a part of the scene.
2. Write a description of the region enclosed by the box.
3. Repeat for other regions, three or more per image.
A description is a short phrase of 1 to 16 words, such as "yellow fire
hydrant" or "woman in shorts is standing behind the man". The box must cover
every object the description mentions. Regions may overlap heavily as long
as the descriptions differ, so a box around a whole scene and a box around
one object in it can both be right.
Write about different things in the image, not the same thing twice.
model_training:
enabled: true
Sample Data
[
{
"id": "vgrd_001",
"image_url": "https://thumb.wikimedia.org/wikipedia/commons/thumb/a/ae/2026-09-28_Street_scene_in_Braga.jpg/960px-2026-09-28_Street_scene_in_Braga.jpg",
"credit": "Photo: Alexkom000, CC BY 4.0, via Wikimedia Commons (https://commons.wikimedia.org/wiki/File:2026-09-28_Street_scene_in_Braga.jpg)"
},
{
"id": "vgrd_002",
"image_url": "https://thumb.wikimedia.org/wikipedia/commons/thumb/1/1f/Jakarta_street_scene_%282%29.jpg/960px-Jakarta_street_scene_%282%29.jpg",
"credit": "Photo: Radosław Botev, CC BY 3.0 pl, via Wikimedia Commons (https://commons.wikimedia.org/wiki/File:Jakarta_street_scene_(2).jpg)"
}
]
// ... and 8 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/image/visual-grounding/visual-genome-region-descriptions
potato start config.yamlDataset & paper
Krishna et al., IJCV 2017
- Paper DOI
- 10.1007/s11263-016-0981-7
Citation (BibTeX)
@article{Krishna_2017,
title = {Visual Genome: Connecting Language and Vision Using Crowdsourced Dense Image Annotations},
volume = {123},
ISSN = {1573-1405},
url = {http://dx.doi.org/10.1007/s11263-016-0981-7},
DOI = {10.1007/s11263-016-0981-7},
number = {1},
journal = {International Journal of Computer Vision},
publisher = {Springer Science and Business Media LLC},
author = {Krishna, Ranjay and Zhu, Yuke and Groth, Oliver and Johnson, Justin and Hata, Kenji and Kravitz, Joshua and Chen, Stephanie and Kalantidis, Yannis and Li, Li-Jia and Shamma, David A. and Bernstein, Michael S. and Fei-Fei, Li},
year = {2017},
month = feb,
pages = {32--73}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an Issue(opens in a new tab)Related Designs
PixMo-Points - Pointing Annotation for Vision-Language Models
Collect the pointing supervision behind Molmo: place a point on what each referring expression refers to. Scored as a point-in-region hit rate, because a point has no area and every IoU against one is zero.
RefCOCO - Referring Expression Grounding
Visual grounding task where annotators bind each referring expression to a region of the image. Based on RefCOCO (Yu et al., ECCV 2016), reproduced with Potato's grounding_eval schema, which scores grounding by IoU at four thresholds and counts ungroundedness separately.
Image Segmentation
Draw polygon masks around objects for semantic segmentation tasks.