What does Telraam count?
Telraam counts road users classified into various categories. While currently (Q1 2023) the data that is displayed on the Telraam website and made available via the Telraam API contains four categories (pedestrians, two wheelers, cars, and heavy vehicles), the new Telraam S2 device is capable of differentiating between a broader set of road user types.
Our first Raspberry Pi-based sensor (Telraam V1), combined with post processing of the (numeric and anonymous) road user data that is transferred, can differentiate only between these four categories. While data is sent on an object-by-object basis, for practical and privacy reasons Telraam aggregates these into hourly count totals. In future this aggregation will be switched to 15 minutes to match the resolution of the new Telraam S2 device. Using the object properties, speeds are estimated for cars as an additional data product. Telraam V1 can only count when there is daylight, meaning that night counts are not available, and during the day Telraam V1 typically monitors the traffic 70-75% of the time, and the resulting counts are corrected for the 25-30% of sensor down-time.
Our Telraam S2 sensor is more advanced and can differentiate between ten different road user categories: bicycle, bus, car, light truck, motorcycle, pedestrian, stroller, tractor, trailer, and truck. For the time being these are aggregated on the website and the API into the four classical Telraam classes: pedestrians (pedestrians + strollers), two wheelers (bicycles and motorcycles), cars, and heavy vehicles (all the remaining classes). Telraam S2 counts these objects continuously, with zero down-time (precision at night is currently not optimised), and it sends the aggregated counts (along with the observed speed distribution data for cars) to the Telraam servers over the mobile network every 15 minutes.
How does Telraam count?
Telraam V1 and Telraam S2 devices count in slightly different ways, although the main principle is the same for both sensors: a camera unit provides a stream of images to a processing unit that finds objects on these images, then each object is tracked across images to identify actual moving objects using a tracker algorithm, finally anonymous object data or counts are transferred to the Telraam database via a wireless or mobile connection. Some post processing is done by services running on the Telraam servers before the data is displayed on the Telraam website and is made available via the Telraam API.
A Telraam V1 device is typically installed in a first or second floor street-facing window of a private individual’s residence, with the camera tilted downwards to provide an approximately 45 degree downward angle to the street, so passing cars do not block each other from the camera as they would when looking from the ground floor.
Telraam V1 monitors the traffic by continuously taking low resolution images of the street. Each image is transmitted to the minicomputer (Raspberry Pi), where a first analysis of the images happens, including the detection and tracking of each object, and the measurement of their properties such as size, position, and speed. Finally, the object properties (but not the image itself, which is immediately deleted) are forwarded to a central database for further processing via a local Wi-Fi connection. Here each object is classified (or discarded) into the four road user classes based on their properties.
The classification uses properties related to the general outline of an object, which can inherently lead to specific errors. For example, Telraam will count a tram as a truck. Delivery vans might be counted as trucks or cars, depending on their size. Buses are also counted as trucks, because their dimensions are very similar. The article 'How are the different types of vehicles classified and differentiated? (v1) ' goes more in depth about the classification process.
A Telraam S2 unit is installed in a similar location with the LCD screen facing the inside of the room, and the camera facing outside. The camera is fixed, but it has a wide angle, similar to action cameras, so it can see everything between almost completely vertically down and slightly above the horizon. Device administrators or individual users are encouraged to select a specific, narrower region of interest (ROI) using the tools provided on telraam.net, otherwise the device itself will do this automatically after every reboot. ROI selection is important as this defines the area of the view where the Telraam S2 will look for moving objects. (For a Telraam S2 that is further from the street a narrower ROI will be more optimal, while for a Telraam S2 that is closer to the street, a wider ROI will work best. More information on this topic is provided in the FAQ article - “Region of interest (ROI) and optimal ROI selection”.)
Telraam S2 monitors the street using its camera module, but doesn’t actually film the street nor does it save any of the images. After an image is taken (which you can think of as an individual frame of an imaginary video) it is immediately processed, and then deleted before the next image is captured. There is no way to access the live image-stream itself.
What does processing on the S2 mean, and how do we get actual counts?
As each frame is captured, the camera unit passes the image data (the actual image of the street) instantaneously to the artificial intelligence (AI) unit.
Note: these frames are very low resolution (112-by-112 pixels) which is necessary for the AI to be able to work fast enough, mainly to make sure that it can see the same object on multiple frames, even if it is a fast driving car. This low resolution also means that even if we wanted, it would be impossible to recognise individuals, faces, or licence plates on the street.
The AI unit detects candidate objects in the region of interest and immediately classifies them into one of the available ten road user classes. This way each object gets a label which tells us what class the AI thinks it belongs to, and how confident the AI is about this classification. For example an object might get the label “Car, 0.95” which tells us that the AI is 95% sure that the object is a car.
Note: more about classification can be read in the FAQ article “Classification of objects with Telraam S2”.
In the next step a tracking algorithm tries to identify and track each individual object across the AI-processed data of consecutive images, and the objects for which this step is successful get counted. In simpler terms: if you can find the same object (with the same class) in consecutive images and you see that it moves in a reasonable pattern (e.g., along the street, with a nearly constant speed and direction) then you can be relatively sure that you are seeing the same object moving along the street, and not two separate objects. And if you can observe an object crossing the region of interest, then you can count it.
Note: This tracking and counting step is influenced by a set of calculations which we call the ‘hyper-parameters’, and they can be optimised by comparing real life counts with counts returned by the tracking algorithm for the same traffic situation. In practice this means that we record a few minutes of traffic video at various locations, we count the objects by hand, and then we feed these videos to the (virtual) Telraam S2 which returns another set of counts. Then we modify the hyper-parameters until we get the best match between the manual counts and the Telraam S2 counts. New hyper-parameters can be included in future firmware updates.
Finally, at the end of each quarter of an hour, the aggregated mode-by-mode, direction-by-direction counts along with estimated aggregated speed histograms are transmitted from the Telraam S2 devices to the central database using the mobile data network. No images and no individual object properties are transmitted at all, only the aggregated data which provides complete privacy for road users.
Telraam is under constant development, and it is possible that some of the data presented is not (yet) completely accurate (for example night counts are not yet handled accurately at all). Besides future firmware updates, we are also working on automatic solutions to filter out bad data, but it is not yet in production. The FAQ article “Potential inaccuracies with Telraam S2” gives a more detailed insight into this topic.
What Telraam doesn't count:
❌ Telraam V1 does not count at night at all, while Telraam S2 does not count accurately when it is dark for the time being (but this will change with a future firmware update, which will enable correct night counts).
❌ Telraam does not recognise individual vehicles (not by shape and colour, nor by number plate).
❌ Telraam will not count 100% of the road users without errors (which is similar to other traffic counting methods, even those that are 10-100 times more expensive), although Telraam S2 will be more accurate and precise compared to Telraam V1. For example, a person walking on the far side of the road with only their head visible behind a parked row of cars will typically not be counted by Telraam S2 (and will be most likely misclassified by Telraam V1). Similarly cars passing behind a bus stuck in traffic will be missed. People cycling uphill on a steep slope who pedal standing out of the saddle might be counted as not only cyclists, but maybe as pedestrians by Telraam S2 (as the AI was not trained with people cycling in a standing up position). Groups of cyclists will be most of the time correctly counted by Telraam S2, while they will lead to misclassification by Telraam V1. Small road users (especially pedestrians) on the far side of a very wide multi-lane street might not be counted by Telraam S2 (as they are less than 1 pixel large in the images that are processed by the AI), while Telraam V1 will struggle with their classification too. This means that while Telraam S2 will perform with very good accuracy at most typical locations (see FAQ article “Telraam S2 performance validation”), there will be exceptions, where counts might be significantly off. On almost all locations Telraam S2 will perform better than Telraam V1.
❌ Telraam S2 does not keep track of properties of individual road users, only the quarterly count totals by direction and class, and the speed distributions. Therefore it is not possible to, e.g., identify a speeding car out of the aggregate sample, or to study the traffic flow on time scales shorter than 15 minutes. While Telraam V1 keeps track of some individual properties, because unlike Telraam S2 it cannot classify road users without the help of the Telraam servers, this data is also aggregated on the servers, and individual properties are discarded after the classification and aggregation step.
❌ A Telraam unit is not a speed camera, and the derived speed distributions (histograms and V85 values) are approximate. While the method used for deriving speeds is well calibrated for the Belgian (or similar) car fleet (especially in the case of the Telraam S2 unit), there are many factors that can result in speeds that are less accurate. The main factors for Telraam S2 are car fleets with significantly different sizes (cars on average much longer or shorter compared to Belgium), and cars visible behind a row of parked cars (as this also influences the observed car lengths), while for Telraam V1 potential misclassification also influences the accuracy.