Feedback wanted — new quality_score field on Mapillary images and sequences

We’ve rolled out a new quality_score field on Mapillary images and sequences. We would love feedback from folks that consume data from Mapillary APIs.
It’s a float in the range [0, 1] representing the predicted visual quality of an image or a sequence — higher is better. The intent is to make it easy to detect blurry, dark, or otherwise low quality captures.

How to query it — images (Graph API)

Add quality_score to the fields= parameter on any image-returning endpoint:

GET https://graph.mapillary.com/{image_id}?fields=id,quality_score&access_token=MLY|

{
“id”: “2140279232804782”,
“quality_score”: 0.704
}

Image endpoints that expose it:

  • GET /{image_id} — single image
  • GET /images?bbox=… — bulk by bounding box
  • GET /images?sequence_ids=… — images in a sequence
  • GET /images?organization_id=… — images from an organization
  • GET /{map_feature_id}/images — images depicting a map feature

Combine with other fields as usual, e.g. fields=id,quality_score,captured_at,geometry.

How to query it — sequences (vector tiles)

There is no Graph API entity endpoint for a sequence’s quality_score — it lives only on the vector tile sequence layer, as the average of per-image scores in that sequence (unscored images excluded). Fetch the relevant coverage tile and read the field off each sequence feature:

Quick Python sample (using mapbox_vector_tile):

import requests, mapbox_vector_tile
raw = requests.get(
https://tiles.mapillary.com/maps/vtp/mly1_public/2/14/8801/5374”,
params={“access_token”: “MLY|…”},
).content
tile = mapbox_vector_tile.decode(raw)
for f in tile[“sequence”][“features”]:
print(f[“properties”][“id”], f[“properties”].get(“quality_score”))

Not included: the overview layer (zoom 0-5) on either coverage tileset, and the map-feature tilesets (mly_map_feature_point, mly_map_feature_traffic_sign) — those are dedup objects, not images.

Notes

  • Type: nullable float in [0, 1]
  • Images that haven’t been scored yet may come back as either 0 or null — handle both
  • On the sequence tile layer the field is absent when none of the images in the sequence have a score yet

Things we’d like to hear about:

  • Does the quality score values make sense ?
  • Any endpoints where you expected to see it but don’t?
  • Anything else — bugs, gaps etc

Drop your thoughts :slight_smile:

6 Likes

If they can do that, they can do a recount.

This announcement sounds encouraging! :+1:
@caglarpmeta @nikola For easier access and effective feedback, could you please add the quality score to the “Image details” panel? You can mark it as (Beta) in parenthesis. Thank you.

If you can, please also document the score’s weighting in Mapillary Help: What the score is composed of and each component weight. Furthermore, in order to avoid any potential confusion to contributors, you can also note in the docs that the quality score is not a grade for contributions or contributors but an indicator for machine digestibility and data extractability.

2 Likes

Oh wow, thank you for implementing this! Will try out soon :3

1 Like

I agree. Once the quality parameter has a good implementation, you could also filter by quality score on the Mapillary overview map

1 Like

thank you for your feedback. making the score visible in the UI is in the roadmap, however without any associated dates :slight_smile: The score is a purely machine learned value with no weights that, us humans can understand.

1 Like