Detection-of-plant-diseases/README.md

97 lines
4.9 KiB
Markdown

# Harmonogram
| Data | Działanie
|----------------------------:|:------------------------------------------------------------|
| 19.04.2024 | Prezentacja problemu i zbioru danych
| | Prezentacja technologii wykorzystywanych w projekcie
| | Wstępny szkic MLOps pipeline
| | Szkic aplikacji (backend + frontend)
| 08.06.2024 | Prezentacja MLOps pipeline
| | Prezentacja aplikacji
| | Prezentacja wyników eksperymentów
| 15.06.2024 | Prezentacja działania systemu
| | Prezentacja wyników i skuteczności wybranego modelu
# Szczegółowy harmonogram
Spotkania dot. progresu prac - każda niedziela, godzina 18:00-20:00.
Poniżej, kolumna "działanie" jest w formacie `<osoba/osoby> (<numer_zadania>)`.
Brak osoby oznacza, że zadanie nie zostało jeszcze przypisane.
| Data | Działanie
|----------------------------:|:------------------------------------------------------------|
| 05.05.2024 | Sergiusz (1), Mateusz (3), Krzysztof (2)
| 12.05.2024 | Wszyscy (5), (4), (6), (7.1)
| 19.05.2024 | Wszyscy (5), (7.2)
| 26.05.2024 | Wszyscy (5), (7.3), (9)
| 02.06.2024 | (8)
| 09.06.2024 | Feedback, ewentualne poprawki
| 15.06.2024 | Finalna prezentacja
Szczegóły działań:
1) Przygotowanie danych i modułu do ich przetwarzania
- Napisanie skryptu, który pobiera dane oraz rozpakowuje je lokalnie.
- Napisanie szablonu skryptu do przetwarzania danych. Skrypt powinien tworzyć katalogi (struktura katalogowa) z danymi po transformacji. Każda transformacja na oryginalnych danych będzie commit'owana do repozytorium, tak aby reszta zeszpołu mogła ją uruchomić.
- Napisać jedną przykładową transformację, np. resize i kontury, korzystając z szablonu.
- Utworzyć README.md z instrukcją tworzenia nowego modułu do przetwarzania.
2) Modele do przygotowania:
- Przygotować wstępnie 3 modele w formacie WanDB, np. MobileNet, ResNet, ew. custom CNN z klasyfikacją wielozadaniową.
- Uruchomić modele na WanDB żeby zobaczyć czy się uruchamiają i generują poprawne wykresy.
- Utworzyć README.md z instrukcją tworzenia nowych modeli.
3) Moduł do ładowania plików
- Napisać moduł, który ładuje dane po transformacji. Dane będą wykorzystywane do uczenia i walidacji modelu.
- Moduł powinien dokonywać podziału zbioru danych na 3 czesci - train, valid, test.
- Powinno być możliwe zdefiniowanie rozmiaru batch'a, rozmiaru validation set'a, scieżki skąd załadować dane.
- Dodać możliwość definiowania seed'a, tak aby każdy mógł uzyskać podobne rezultaty w razie potrzeby. Seed powinien być przekierowany na stdout podczas uruchamiania skryptu.
- Dodać możliwość wyboru rozkładu danych.
- Dane wyjściowe powinny być w formacie pozwalającym na załadowanie ich bezpośrednio do modelu (binarne, tf record, lub inne).
- README.md opisujący w jaki sposób parametryzować moduł.
4) Moduł do obslugi i uruchaminia WanDB Job's
- Napisać skrypt do ściągania danych z kolejki aby obejść problem uruchamiania agenta na Colab/Kaggle.
- Napisać skrypt, który uruchamia job'y i wysyła go na kolejkę. Powinien obsługiwać przyjmowanie hiperparamterów, oraz nazwę kolejki, do której zostanie job przesłany.
- Napisać skrypt, który uruchamia agenta na danej maszynie.
- Napisać skrypt do tworzenia jobów - powinna być sprecyzowana struktura katalogowa, pozwalająca na zarządzanie nimi i obsługę różnych modeli. Ewentualnie synchronizacja job'ów, między WanDB i środowiskiem lokalnym.
- README.md opisujący powyższe.
5) Eksperymenty, dobieranie hiperparametrów, rozkładu danych, testowanie różnych strategii. Jeżeli konieczne, dodanie nowych modeli.
6) Dodać Heatmap'ę do modelu (CAM).
7) Przygotowanie frontu do projektu (https://www.gradio.app/)
1. Uruchomienie lokalne Frontu do testów.
2. Obsługa wyświetlania Heatmap.
3. Deploy frontu na środowisko (lokalne/zdalne, do wyboru).
8) Wybór najlepszego modelu.
9) Modul do obslugi Sweeps - automatycznego dobierania hiperparametrów (opcjonalnie).
# Źródło danych
https://www.kaggle.com/datasets/vipoooool/new-plant-diseases-dataset
# Technologie
## WanDB
WanDB built-in features:
- Experiments Tracking
- Predictions Visualization
- Scheduling runs through queues & connected agents
- Model Registry
- Hyperparamter optimization via Sweeps
## Moc obliczeniowa
- Radeon 7800XT
- GeForce RTX 3060TI
- GeForce RTX 3070
- GeForce RTX 4050M
- [zasoby uczelniane](https://laboratoria.wmi.amu.edu.pl/uslugi/zasoby-dla-projektow/maszyna-gpu/)