Skip to content

Penteusz/python-traffic-signs-classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rozpoznawanie Znaków Drogowych przy użyciu Konwolucyjnych Sieci Neuronowych

Skrypt napisany w języku Python wykorzystuje sieci neuronowe konwolucyjne (CNN) do rozpoznawania znaków drogowych na zdjęciach.

Skrypt składa się z następujących sekcji:

  1. Importowanie wymaganych bibliotek: Importowanie niezbędnych bibliotek takich jak NumPy, Pandas, Matplotlib, OpenCV, TensorFlow, PIL i inne, niezbędnych do przetwarzania obrazów i zadań związanych z uczeniem głębokim.

  2. Funkcje programu: Definicje funkcji wykorzystywanych do określonych zadań w programie.

  3. Parametry programu: Parametry wykorzystywane do konfiguracji wykonania programu.
    WAŻNE: Należy wskazać ścieżkę bezwględną do katalogu projektu utworzonego w sekcji Użycie

  4. Parametry modelu: Parametry wykorzystywane do uczenia modelu.

  5. Trening modelu: Główna część programu służąca do wyuczenia modelu na danych treningowych. WAŻNE: Jeśli w danej lokalizacji (w podpolderze 'trening' katalogu projektu) istnieje model o danej nazwie, to wykona się kod odpowiedzialny za ocenę jakości modelu na próbce testowej (katalog 'Test')

  6. Testowanie na nowych danych: Ładowanie zestawu testowego, prognozowanie klas za pomocą wytrenowanego modelu i obliczanie dokładności modelu na danych testowych.

  7. Zapis i wczytywanie modelu: Zapisanie wytrenowanego modelu do pliku oraz jego wczytanie w celu późniejszego użycia.

  8. Prognozowanie na obrazie użytkownika: Funkcja, która przyjmuje obraz przesłany przez użytkownika, przetwarza go i przewiduje klasę znaku drogowego za pomocą wytrenowanego modelu.

Użycie

Aby użyć skryptu w środowisku Windows należy wykonać poniższe kroki w terminalu cmd lub Powershell:

  1. Należy utworzyć katalog projektu i skopiować do niego pliki projektu
    mkdir Projekt
    cd Projekt
    skopiować pliki projektu : git clone https://github.com/Penteusz/python-traffic-signs-classification.git (wymaga zainstalowania aplikacji git) lub pobrać spakowane pliki (.zip) z repozytorium i je rozpakować w katalogu "Projekt" - zostanie utworzony folder o nazwie "python-traffic-signs-classification" zawierający pliki projektowe
  2. Należy wejść do folderu "python-traffic-signs-classification" i utworzyć w nim środowisko wirtualne
    python -m venv .\env\traffic-signs
    * Jeśli domyśłnie używana jest inna wersja pythona, należy zainstalować wersję 3.8.x i utworzyć środowisko podając ścieżkę do pliku wykonywalego python w wersji 3.8.x np: C:\Users\...\Python\Python38\python.exe -m venv .\env\traffic-signs
  3. Należy aktywować środowisko wirtualne
    .\env\traffic-signs\Scripts\activate
  4. Zainstalować wymagane biblioteki:
    pip install -r requirements.txt --no-cache-dir
  5. Utworzyć kernel, który zostanie użyty do wykonania programu:
    python -m ipykernel install --user --name=traffic-signs
  6. Uruchomić jupyter notebook:
    jupyter notebook
  7. Po uruchomieniu jupyter notebook w przeglądarce internetowej należy wybrać plik "traffic_signs_recognition.ipynb"
  8. W zakładce "Kernel" w panelu górnym wybrać Change kernel a następnie wskazać traffic-signs
  9. W pliku projektu "traffic_signs_recognition.ipynb" w sekcji Parametry programu należy zmodyfikować ścieżkę projektu (bezwzględną) project_path, aby wskazywała na katalog "Projekt\python-traffic-signs-classification".
  10. W celu modyfikacji parametrów dotyczących modelu można dostosowywać parametry modelu tj. epochs, batch size w sekcji Parametry programu

Uruchomienie programu

Program można wykonywać sekwencyjnie - komórka po komórce - albo w całości wybierając na górnym pasku Cell->Run All

Wymagania

  • Python 3.8
  • Biblioteki: numpy, Pillow, Keras, tensorflow, matplotlib, jupyter, ipykernel (dokładna specyfikacja w pliku requirements.txt)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published