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.
About this dataset
PixMo-Points is a dataset of images paired with referring expressions and points marking the locations those expressions refer to. It is part of the PixMo collection released with Molmo, presented by Matt Deitke and colleagues in "Molmo and PixMo: Open Weights and Open Data for State-of-the-Art Vision-Language Models", and it is what provides the pointing capability of the Molmo family of models.
The collection's distinguishing property is that it was gathered from human annotators rather than distilled from a proprietary vision-language model, which is the paper's central argument: the strongest open-weight models had been relying on synthetic data from closed VLMs, leaving the community without foundational knowledge about how to build a performant VLM from scratch.
The released set has 2,376,222 training examples under an ODC-BY-1.0 licence. Each row carries an image URL and a SHA-256 hash of the image bytes so a download can be checked against what was annotated, a list of x and y point coordinates in pixels, a count, a label that ranges from a bare object name to a full referring expression, and a collection_method marking whether the image was chosen to target high-frequency counting or general pointing.
The config collects this with the grounding_eval schema in point mode, alongside an image_annotation schema that owns the canvas and supplies the landmark tool. A separate count field is collected because PixMo-Points targets counting as well as pointing, and the number of visible instances is a meaningful answer even when the annotator has not placed a point on every one.
Pointing is scored differently from grounding, and it has to be. A point has no area, so every IoU against one is zero, and scoring points the way boxes are scored would report total failure for a model that is pointing perfectly. Potato reports a point-in-region hit rate instead, with mean_miss_distance computed over the misses only, since averaging it over hits as well would mostly measure how large the objects are rather than how badly the model missed.
Agreement between annotators is reported as a distance in normalized image units rather than as a coefficient, for the same structural reason. An overlap measure applied to points saturates: two annotators pointing at opposite corners of the same image still score around 0.86, which a coefficient scale would band as strong agreement, so a pointing corpus scored that way looks near-perfect regardless of what the annotators actually did. A distance has no ceiling to saturate against, and is named a distance so that nothing bands it as a coefficient.
- Training examples
- 2,376,222
- Licence
- ODC-BY-1.0
- Collection methods
- pointing, counting
- Annotation
- Human, not distilled from another VLM
- Used by
- Molmo model family
Configuration Fileconfig.yaml
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
#
# PixMo-Points — Pointing Annotation for Vision-Language Models
#
# Paper: Deitke et al., "Molmo and PixMo: Open Weights and Open Data for
# State-of-the-Art Vision-Language Models"
# https://arxiv.org/abs/2409.17146
# Dataset: https://huggingface.co/datasets/allenai/pixmo-points (ODC-BY-1.0)
#
# PixMo-Points pairs images with referring expressions and the points marking
# what each expression refers to. It was collected from human annotators, not
# distilled from another VLM, and it is what gives the Molmo models their
# pointing ability. The released set has 2,376,222 training examples. Each row
# carries the image URL and SHA-256, a list of x/y points in pixels, a count, a
# label that ranges from a bare object name to a full referring expression, and
# a collection_method of either "pointing" or "counting".
#
# Reproduction notes
# ------------------
# `region_type: point` is the whole reason this design exists. A point has no
# area, so every IoU against one is zero: scoring points the way boxes are
# scored reports total failure for a model that is pointing perfectly. Potato
# scores pointing as a point-in-region hit rate instead, and reports
# mean_miss_distance over the misses only -- averaged over hits as well, it
# would mostly measure how large the objects are.
#
# Agreement between annotators is likewise reported as a distance in normalized
# image units rather than as a coefficient, because an overlap measure applied
# to points saturates: two annotators pointing at opposite corners of the image
# still score about 0.86, which any coefficient scale would band as strong
# agreement. A distance has no ceiling to saturate against.
#
# `count` is collected separately because PixMo-Points targets high-frequency
# counting as well as general pointing, and a count is the answer even when the
# annotator does not place a point on every instance.
#
# Two annotators per image, so pointing agreement is defined.
port: 8000
annotation_task_name: "PixMo-Points - Pointing Annotation"
task_dir: "."
media_directory: media
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "image_url"
instance_display:
fields:
- key: image_url
type: image
label: "Image"
user_config:
allow_all_users: true
users: []
num_annotators_per_item:
default: 2
annotation_schemes:
# grounding_eval binds expressions to answers but does not draw, so an image
# schema owns the canvas. `landmark` is the point tool.
- annotation_type: image_annotation
name: region
description: "Place a point on each thing the selected expression names."
source_field: image_url
tools:
- landmark
labels:
- name: referent
color: "#6e56cf"
- annotation_type: grounding_eval
name: pointing
description: "Point at what each expression refers to."
region_type: point
expressions_field: expressions
require_all: false
- annotation_type: number
name: instance_count
description: "How many instances of the expression are visible?"
min: 0
max: 200
step: 1
- annotation_type: text
name: notes
description: "If the expression is ambiguous or nothing matches, say so. (optional)"
annotation_instructions: |
Each image comes with one or more referring expressions.
For each expression:
1. Select it.
2. Place a point on every instance the expression refers to. Put the point
inside the object, roughly at its centre; it does not have to be exact,
but it must be unambiguously on the thing rather than near it.
3. Record how many instances are visible. If there are more instances than
you have pointed at, the count is still the true number.
If an expression refers to nothing in the image, mark it as not present
rather than pointing at your best guess. Not-present is a real answer and is
counted separately.
Point at the object, not at its label, shadow or reflection. For an object
that is partly hidden, point at a visible part.
Sample Datasample-data.json
[
{
"id": "pixmo_001",
"image_url": "https://example.com/pixmo/kitchen_counter_001.jpg",
"collection_method": "pointing",
"expressions": [
{
"id": "pixmo_001_e1",
"text": "the coffee mug"
},
{
"id": "pixmo_001_e2",
"text": "the handle of the kettle"
},
{
"id": "pixmo_001_e3",
"text": "the person's left hand"
}
]
},
{
"id": "pixmo_002",
"image_url": "https://example.com/pixmo/bookshelf_002.jpg",
"collection_method": "counting",
"expressions": [
{
"id": "pixmo_002_e1",
"text": "a book with a red spine"
},
{
"id": "pixmo_002_e2",
"text": "the potted plant"
}
]
}
]
// ... 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/pixmo-points-pointing potato start config.yaml
Dataset & paper
Deitke et al., 2024
Citation (BibTeX)
@article{deitke2024molmo,
title = {Molmo and PixMo: Open Weights and Open Data for State-of-the-Art Vision-Language Models},
author = {Deitke, Matt and Clark, Christopher and Lee, Sangho and Tripathi, Rohun and Yang, Yue and Park, Jae Sung and Salehi, Mohammadreza and Muennighoff, Niklas and Lo, Kyle and Soldaini, Luca and others},
journal = {arXiv:2409.17146},
year = {2024}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
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.
BIG-Bench Task Evaluation
Evaluate language model responses on diverse reasoning tasks from the BIG-Bench benchmark. Annotators assess correctness, provide reasoning explanations, and rate confidence for model outputs across multiple task categories.
Counting Events and Participants in News
Counting the number of events or incidents described in news reports and providing event descriptions. Based on SemEval-2018 Task 5 (Counting Events and Participants).