New image field: on_foot is now live in the Graph API

Dear all,

We’ve added a new field to the image entity in the Graph API: on_foot.

It tells you whether an image was captured on foot (by a pedestrian) versus by another method such as a car or bicycle. It’s a nullable boolean:

  • true — captured on foot (pedestrian)
  • false — captured by another method (e.g. vehicle, bicycle)
  • null — capture method hasn’t been classified

How to use it

Just add on_foot to your fields list on any image request:

curl “https://graph.mapillary.com/102353755423716?fields=id,on_foot&access_token=YOUR_ACCESS_TOKEN

Response:

{
“id”: “102353755423716”,
“on_foot”: true
}

It also works anywhere a full image object is nested, e.g. fields=images.on_foot on a map feature, or in an image search:

curl “https://graph.mapillary.com/images?bbox=-122.4195,37.7745,-122.4185,37.7755&fields=id,on_foot&access_token=YOUR_ACCESS_TOKEN

For reference, API documentation is here: https://www.mapillary.com/developer/api-documentation#image

A note on accuracy :warning:

on_foot is a model prediction, not a verified label. It’s correct roughly 90% of the time, so expect occasional misclassifications. Treat it as a strong signal rather than ground truth.

Feedback welcome — let us know how it works for your use cases!

5 Likes

Great work on this @caglarpmeta ! I’m also excited about the accuracy improvements that have recently landed to push this into the ~90% accurate territory.

Note that this feature is also available in app filters (and will match results returned by the API)

3 Likes

For analysis. This track is not recognised as ‘on foot’:

I suspect these GPS measurement errors are the cause:

1 Like

Dear Hol_Ger,

thank you for reporting.

This is a pretty humiliating failure of the model :slight_smile:

We will incorporate such failures for the next version, and try to get them fixed.

Thank you,

Caglar

The Procession of Echternach bicycle rides are also seen as on foot.

Often my 16 inch wheel bicycle rides are seen as on foot.

hey filipc,

could you please give me a few example sequences that wrongly show up as on foot

thank you

The Procession of Echternach occurs not so often any more as before. Maybe because GPS has become better.

16 inch wheels on hills

thank you for sharing, the classifier is clearly mistaken on these cases. unfortunately the bicycle/pedestrian distinction is the hardest to make and as a result we have lots of recall losses on bicycle cases like these.

While I usually appreciate other people’s effort, I am also baffled why are you so stubborn to use AI to classify the mode of transportation a picture was taken with. You know, there are much easier and simpler methods to make this classification. For me, it is a total waste of effort compared to the effect you are trying to achieve. AI is for problems that are difficult to solve with other traditional/known methods. Every tool has its purpose. What you are doing is like using a sledgehammer to fix a wrist watch or a pair of tweezers to swap a wheel on a car. Just give us a speed filter and call it a day.

Hi @GITNE - for clarity, this updated classifier is using both AI/CV and heuristics like speed to obtain a stronger signal. It is not purely a speed filter (that was an earlier version which we iterated on because we were also not happy with the quality - props to @caglarpmeta for the quality work)

1 Like

We actually tried everything possible not to use AI for this, due to the large scale of the problem :slight_smile:

Unfortunately there are no reliable enough signals that is confidently correct in all cases (for instance GPS can be very noisy in dense urban environments). In fact without any machine learned solution the accuracy peaked under 75% which is not high enough to be a reliable signal. We had to employ CV algorithms to push it above 90%.

1 Like

Have you considered to let or enable contributors to tag uploads or sequences?

While it may be an impressive figure in the CV space, you do realize that this is still very far from being good enough. You need like 99.9999% or one error in a million certainty for this function to have any meaningful value to data consumers. Contributor tagging is not perfect either but I am pretty sure that the certainty rate would easily exceed 99.9%.

If you really want to spend some AI developer energy meaningfully on an also very hard problem but useful solution then try to remove outliers and noise from point clouds. :wink: I would really love to see this problem solved!