Please note: The algorithm descriptions in English have been automatically translated. Errors may have been introduced in this process. For the original descriptions, go to the Dutch version of the Algorithm Register.

Public Eye

Amsterdam is a busy city. This can sometimes lead to traffic unsafe situations. By collecting data on the numbers of pedestrians, it is possible to take measures to manage the crowds. If a situation becomes unsafe due to excessive crowding, the municipality can intervene.

Last change on 18th of November 2024, at 10:19 (CET) | Publication Standard 1.0
Publication category
Impactful algorithms
Impact assessment
Field not filled in.
Status
Out of use

General information

Theme

  • Organisation and business operations
  • Economy
  • Space and Infrastructure

Begin date

2019

End date

2021

Contact information

Algoritmen@amsterdam.nl

Link to source registration

Dit is een interne repository die alleen toegankelijk is voor medewerkers van de gemeente Amsterdam.

Responsible use

Goal and impact

Amsterdam is a busy city. This can sometimes lead to traffic unsafe situations. By collecting data on the numbers of pedestrians, it is possible to take measures to manage the crowds. This keeps the city comfortable, accessible and traffic safe. If a situation becomes unsafe due to excessive congestion, the municipality can intervene. This is done, for example, by placing digital information boards so that people know which routes to take. Or one-way traffic is established.


With the crowd-monitoring system 'Public Eye', we map crowds in a few places in Amsterdam. In the past, the system was active on Arena Boulevard, the Marineterrein and Dam Square. These places have cameras linked to a municipality server. On the server, an algorithm analyses how many people are on the images. The information about the number of people present is forwarded to municipality employees, who can use the count to better regulate traffic. The images are not shown, only the numbers. Residents and visitors to the city can also view the information on the number of people present, via https://druktebeeld.amsterdam.nl/. Currently, this is only possible for the Marineterrein location. The ambition is to realise this for all Public Eye locations.


As soon as the algorithm has counted the number of people present, the video images are immediately deleted.


At each new location where Public Eye is placed, a small amount of footage is recorded, of which about 300 images are randomly annotated for the algorithm's training. This way, the crowds at that location can also be properly analysed. After all, every location is unique and has just a different light or camera height, for example.

Considerations

A trade-off between citizens' right to privacy on the one hand and the promotion of traffic flow and safety on the other.

Human intervention

Using the training data, the quality and accuracy of the algorithm is periodically evaluated by a small number of municipal employees who have permission to view the images. They review whether the algorithm is justified in recognising people as humans.

Risk management

The video footage used by Public Eye is deleted - once the algorithm has counted the number of people present. A small number of video images are kept only for training the model (about 300 images per location).


The images are on the municipal infrastructure that complies with the Baseline Information Security Government (https://www.informatiebeveiligingsdienst.nl/project/baseline-informatiebeveiliging-overheid). If the images were to fall into the wrong hands unanonymised, the risk of a breach of privacy is relatively low: the camera is at such a high altitude that it is difficult to recognise people on the images. In addition, data minimisation is practised: the cameras in the ArenA area are only switched on from two hours prior to an event until the event is over. At other times, Public Eye's cameras in the ArenA area are off. Work is underway to also turn off Public Eye's cameras at the other locations at times when these cameras are not necessary, for example at night.


To keep Amsterdammers as well informed as possible, a sticker with a unique ID code is attached to each camera so that you can retrace the purpose of the camera on maps.amsterdam.nl/privacy. In this case, it's only counting cameras. The City of Amsterdam's privacy policy can also be found on this website: https://www.amsterdam.nl/privacy/.

Legal basis

The objective of public camera surveillance is primarily based on Article 151c of the Municipalities Act, the Police Act and the Police Data Act. Public viewing of camera images is based on the (local) government's legal duty to maintain public order.

Links to legal bases

Artikel 151C Gemeentewet: https://wetten.overheid.nl/BWBR0005416/2017-07-01

Operations

Data

With training data, the algorithm "learns" how many people an image contains.


In this dataset, we manually indicated (or "annotated") where people's heads are present in the image. These annotations were prepared in several stages, i.e. each annotation was checked once or several times and adjusted if necessary. In this way, we minimised the chance of errors in annotation. The aim is to measure how busy it is, not who is on the images. Only a limited number of municipal employees have rights to access this data.


Training dates: Marine site


This dataset contains images from four cameras in the Marineterrein area. It involves several hundred images per camera. The number of people in the images varies from 0 to about 200. The cameras used for these images were hanging at the Marineterrein at a height of 3 to 15 metres during data collection.


Training dates: Arena


This dataset contains images from four cameras in the Arena area. It involves about 300 annotated images per camera. The number of people in the images ranges from 0 to 100. The cameras used for these images were hanging around the Amsterdam Arena at 10 to 15 metres height during data collection.


Training data: Dam dataset


This dataset contains about 1,000 images of Dam Square in Amsterdam. All these images were shot from the same location at the same angle. They are "stitched" images: the images from four different cameras have been merged into a single image. These images show between 0 and 200 people, and the circumstances are always very different. Think: weather conditions, lighting, time of day, reflections in the lens due to sunlight.


Training dates: Shanghaitech Crowd Counting


These sets contain annotations showing the locations of people's heads in the image.


'Shanghaitech Part A' This dataset contains 482 images of large groups of people (an average of 501.4 per image). These images were randomly collected from the internet.


'Shanghaitech Part B' This dataset contains 716 images of groups of people (average 123.6 per image), captured by several cameras in the city of Shanghai, with different viewing angles.


The Municipality of Amsterdam did not collect the images from the Shanghaitech Crowd Counting dataset itself. They are freely available via the internet. This dataset is only used for training purposes.

Links to data sources

Kaggle: https://www.kaggle.com/tthien/shanghaitech

Technical design

Description of the system architecture


A camera takes video images of a given area. The video images are sent -protected by end-to-end encryption- to a local server. The algorithm analyses how many people are in the images. That number is sent to an overview page (dashboard) for the municipality's operational staff, so that they have an accurate picture of the crowds at the moment. Currently, only the crowds at the Marineterrein location are shown, in the future also for the other Public Eye locations. The video images do not leave the server and are not stored. A very limited number of images are kept only for training purposes, these are encrypted.


Personal data is processed according to the applicable laws and regulations (AVG) and the Transparency Guide (TADA). A specific privacy statement accompanies this project. The locations and functions of the cameras are included in the Amsterdam municipality's camera register.


Performance


The algorithm needs to be about 70 per cent accurate to extract relevant insights to regulate traffic. In practice, the algorithm delivers about 90 per cent accuracy. We derive this from the training images.


Besides operational functioning, this project is constantly innovating. We are constantly looking for new functionalities that can improve the system:

One of the ambitions is to build the system even more privacy-friendly, and we are doing so by adding a model that makes it possible to train the algorithm with fewer images per camera. This is called the ViCCT model.

We want to have the analysis performed on the sensor (the "on edge" technique).

Link to code base

https://github.com/Amsterdam/public-eye

Similar algorithm descriptions

  • The environmental zones for cars, trucks, vans, taxis, buses and mopeds and motorcycles in the municipality of Amsterdam have been set up to keep out the most polluting vehicles.

    Last change on 4th of December 2024, at 9:43 (CET) | Publication Standard 1.0
    Publication category
    Impactful algorithms
    Impact assessment
    Field not filled in.
    Status
    In use
  • To correctly determine when and where sweepers operate in the city, we ensure that relatively little waste is visible in public spaces and contribute to a cleaner city.

    Last change on 12th of July 2024, at 9:59 (CET) | Publication Standard 1.0
    Publication category
    Impactful algorithms
    Impact assessment
    DPIA, ...
    Status
    In use
  • To keep Amsterdam liveable and accessible, only a limited number of cars are allowed to park in the city.

    Last change on 16th of December 2024, at 15:21 (CET) | Publication Standard 1.0
    Publication category
    Impactful algorithms
    Impact assessment
    Field not filled in.
    Status
    In use
  • To keep Groningen's city centre attractive and easily accessible, traffic by trucks and vans is being restricted. The municipality uses cameras that can read license plates to enforce this policy.

    Last change on 9th of April 2024, at 8:37 (CET) | Publication Standard 1.0
    Publication category
    Impactful algorithms
    Impact assessment
    Field not filled in.
    Status
    In use
  • This algorithm falls under Digital moat. In 2020, the City of Amsterdam started developing reporting to detect illegal passenger shipping.

    Last change on 6th of January 2025, at 12:59 (CET) | Publication Standard 1.0
    Publication category
    Impactful algorithms
    Impact assessment
    Field not filled in.
    Status
    Out of use