🦓 AI-powered OpenStreetMap tool for importing zebra crossings.
- Query OSM: Finds populated areas on OpenStreetMap (OSM).
- Fetch Imagery: Downloads orthophoto imagery for all roads in the query area.
- YOLOv8 Model: Utilizes YOLOv8 for regions of interest detection.
- MobileNetV3 Model: Applies binary classification to validate detected regions.
- Data Integrity: Checks against historical OSM data to avoid duplicates.
- OSM Import: Automatically imports new crossings to OSM.
Before diving into development, make sure you have installed the ❄️ Nix package manager. Nix ensures seamless dependency management and a reproducible environment.
Ideal for model development and training. The application's primary functionality is optimized for CPU-mode.
TensorRT, a proprietary high-performance deep learning inference library by NVIDIA, is used by default. It can be safely disabled by commenting out cudaPackages.tensorrt in cuda-shell.nix.
# Install dependencies and packages
nix-shell cuda-shell.nix
# Configure .env file
cp .env.example .env
# Start up the database
dev-start
# Done, now you can run the application
python main.py
This mode is recommended for typical usage and production runs.
# Install dependencies and packages
nix-shell
# Configure .env file
cp .env.example .env
# Start up the database
dev-start
# Done, now you can run the application
python main.py
Here is an example Docker Compose configuration. Note that you will need to build the Docker image first with nix-build (see default.nix for options).
version: "3"
services:
db:
image: mongo
command: mongod --bind_ip_all
restart: unless-stopped
volumes:
- ./data/db:/data/db
app:
image: osm-yolo-crossings
restart: unless-stopped
environment:
CPU_COUNT: 16
MAX_TASKS_PER_CHILD: 300
OSM_USERNAME: CHANGEME
OSM_PASSWORD: CHANGEME
MONGO_URL: mongodb://db:27017
volumes:
- ./data/app:/app/data
- ./data/keras:/.keras
Special thanks to syntex for contributing to the dataset.
https://www.geoportal.gov.pl/regulamin
https://wiki.openstreetmap.org/wiki/Pl:Geoportal.gov.pl
https://monicz.dev/#get-in-touch
https://monicz.dev/#support-my-work
This project is licensed under the GNU Affero General Public License v3.0.
The complete license text can be accessed in the repository at LICENSE.