File size: 3,944 Bytes
bea220b
ecd745a
bea220b
ecd745a
bea220b
 
 
 
ecd745a
bea220b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ecd745a
bea220b
ecd745a
bea220b
 
 
ecd745a
 
bea220b
 
 
 
 
 
 
 
 
 
ecd745a
bea220b
ecd745a
 
 
 
bea220b
 
 
ecd745a
bea220b
 
 
 
 
 
 
 
 
 
 
 
 
 
ecd745a
 
bea220b
e51bc15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# SurfaceAI: models for road type, surface type and quality classification of street-level imagery

This repository provides the python code as well as the model files with weights and parameters of the SurfaceAI models.

The models are designed to infer the following information from street-level images:
- **Road type** (e.g., road, bike lane, cycleway, footway, (unspedified) path, no focus/no street)
- **Surface type** (asphalt, concrete, paving stones, sett, unpaved)
- **Surface quality**, where a dedicated model is used for each surface type

Currently, the models are based on Convolutional Neural Networks (CNNs) and there is a separate model for each task, which can be expanded to include other architectures in future versions. Road type und surface type are classification tasks, surface quality is considered as a regression.

**Example usage**:
The file `prediction_example.py` demonstrates how to process images to generate predictions. The model interface `ModelInterface` from file `Models.py` is initialized with a configuration dictionary including the desired model files. Only tasks for which a model is defined are performed. The prediction of images is performed by the method `batch_classifications`, which takes a list of PIL Images or NumPy Arrays. 

Using the example prediction file, the output of the classification method for the image ![example_image](example_images/IMG_20210226_172956.jpg) is a list

```
[
    'IMG_20210226_172956',
    '1_1_road__1_1_road_general',
    [3.061619645450264e-05, 0.9993541836738586, 1.4675654711027164e-05, 3.29997310473118e-05, 0.0003072938707191497, 5.346190690147523e-08, 0.00018766717403195798, 7.268250919878483e-05],
    'asphalt',
    [0.9866762757301331, 0.0002866282011382282, 0.00020359903282951564, 7.299235585378483e-05, 0.012760424986481667],
    'good',
    2.2281060218811035
]
```

with:
1. image id provided to the model
2. road type prediction
3. list of probability scores of all possible road types
4. surface type prediction
5. list of probability scores of all possible surface types
6. surface qualiy prediction
7. value of surface quality prediction

Note: When handling large numbers of images, it is the user’s responsibility to split the images into suitable batch sizes before passing them to the batch_classification method in order to avoid memory overflows. The optimal batch size depends on the available GPU or CPU memory capacity and should be tested accordingly.


**Folder structure**:
The model files are sorted in folders according to version, including a json file containing metadata of all models. The transformations used for training are recommended for prediction and are contained in the metadata file.
The current version is v1.

**Training Data**:
The surface type and quality models are trained on the dataset StreetSurfaceVis. See respective [paper](    
https://doi.org/10.48550/arXiv.2407.21454).

**Application**:
The models are used in SurfaceAI pipeline. See respective [paper](https://dl.acm.org/doi/10.1145/3681780.3697277) and [code](https://github.com/SurfaceAI/road_network_classification).


**Contact**:
This is part of the SurfaceAI project at the University of Applied Sciences, HTW Berlin.

surface-ai@htw-berlin.de

https://surfaceai.github.io/surfaceai/


**Citation**:
If you use these models please cite as:
```

@article{kapp_streetsurfacevis_2025,
	title = {{StreetSurfaceVis}: a dataset of crowdsourced street-level imagery annotated by road surface type and quality},
	author = {Kapp, Alexandra and Hoffmann, Edith and Weigmann, Esther and Mihaljević, Helena},
	volume = {12},
	issn = {2052-4463},
	url = {https://doi.org/10.1038/s41597-024-04295-9},
	doi = {10.1038/s41597-024-04295-9},
	number = {1},
	journal = {Scientific Data},
	month = jan,
	year = {2025},
	pages = {92},
}
```


**Funding**:
SurfaceAI is a mFund project funded by the Federal Ministry for Digital and Transportation Germany.