L'obiettivo del progetto è creare e trainare due U-Net, CNN sviluppate per la segmentazione semantica, con lo scopo di, data un'immagine aerea, estrarre la rete stradale ed individuare gli edifici presenti.
Elenco e descrizione dei file presenti:
- Unet.py -> creazione della rete neurale, architettura U-Net
- Train.py -> train della rete neurale
- Test.py -> test della rete neurale su un'immagine di qualsiasi dimensione
- smooth_predictions_by_blending_patches.py -> file richiesto dal test, migliora la precisione della predizione
- full_img_gmm.py -> nodo publisher ROS per casi in cui si analizza tutto l'ambiente
- img_select_gmm.py -> nodo publisher ROS per casi in cui si vuole selezionare una sola parte dell'ambiente
- print_pos.py -> consente di stampare sullo screenshot dell'ambiente la posizione finale dei droni, rappresentati da pallini verdi
- Simulazioni -> cartella contenente i launch file dei vari scenari per le simulazioni
- tensorflow
- patchify
- tqdm
- https://github.com/Vooban/Smoothly-Blend-Image-Patches
- Dataset: https://www.kaggle.com/datasets/balraj98/deepglobe-road-extraction-dataset
Clone the repository together with the submodule:
git clone --recurse-submodules https://github.com/ARSControl/roads_gmm
Dataset necessari per il training delle CNN:
Requisiti software per il training:
- GPU con RAM >= 8Gb
- NVIDIA GPU Drivers and NVIDIA CUDA Toolkit
Link per il download dei modelli, in formato ".h5", pronti per l'utilizzo:
- Take an aerial image as input
Ai seguenti link sono disponibili per il download la cartella da inserire in ".../rotors_simulator/rotors_gazebo/models", il file ".dae" di ciascuno degli scenari di simulazione da inserire in "/rotors_simulator/rotors_gazebo/worlds" e lo screenshot dell'ambiente da utilizzare per la visualizzazione delle posizioni finali mediante:
Per avviare una simulazione, dopo aver correttamente collocato la cartella e il file ".dae" dello scenario scelto, procedere con il lancio, da terminale, del file ".launch" relativo all'ambiente scelto. Successivamente, runnare uno delle due, full_img o img_select, tipologie di studio dell'ambiente, per intero o per selezione, decommentando le informazioni relative all'ambiente scelto. Per ultimo, runnare il file "env(scelto)_coverage" per avviare il pilotaggio dei droni. Runnare "print_pos" se si vuole visualizzare sull'immagine dell'ambiente dei pallini in corrispondenza della posizione finale dei droni.
- Andrea Alboni