Home
Softono

Osm Yolo Crossings

Open source Python
32
Stars
2
Forks
5
Issues
1
Watchers
2 years
Last Commit

 About Osm Yolo Crossings

πŸ¦“ AI-powered OpenStreetMap tool for importing zebra crossings

Platforms

Web Self-hosted Docker

Languages

Python

Links

Need Help Installing Osm Yolo Crossings?

We provide expert installation service for this software. Our team will install, configure, and secure Osm Yolo Crossings on your server. plans start at just $30.

Osm Yolo Crossings

View on GitHub

osm-yolo-crossings

Python version Project license Support my work GitHub repo stars

πŸ¦“ AI-powered OpenStreetMap tool for importing zebra crossings.

Project logo with YOLO text

πŸ’‘ How it works

  1. Query OSM: Finds populated areas on OpenStreetMap (OSM).
  2. Fetch Imagery: Downloads orthophoto imagery for all roads in the query area.
  3. YOLOv8 Model: Utilizes YOLOv8 for regions of interest detection.
  4. MobileNetV3 Model: Applies binary classification to validate detected regions.
  5. Data Integrity: Checks against historical OSM data to avoid duplicates.
  6. OSM Import: Automatically imports new crossings to OSM.

πŸ› οΈ Local Development

Prerequisites

Before diving into development, make sure you have installed the ❄️ Nix package manager. Nix ensures seamless dependency management and a reproducible environment.

β Ώ CUDA (NVIDIA GPU-mode)

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

⊑ CPU-mode

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

πŸ“¦ Deployment

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

Special thanks to syntex for contributing to the dataset.

βš“ References

Community discussion

https://community.openstreetmap.org/t/automatyczne-znakowanie-przejsc-dla-pieszych-oraz-przejazdow-rowerowych/101590/

Data usage terms

https://www.geoportal.gov.pl/regulamin

https://wiki.openstreetmap.org/wiki/Pl:Geoportal.gov.pl

Footer

Contact me

https://monicz.dev/#get-in-touch

Support my work

https://monicz.dev/#support-my-work

License

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.