Wraz z postępem technologicznym w obszarze sensorów wizyjnych wzrosło zapotrzebowanie na rozwiązania umożliwiające automatyzację procesów z wykorzystaniem wizyjnej informacji zwrotnej. Ponadto rozwój naukowy w zakresie algorytmów przetwarzania obrazu umożliwia wyciąganie ze zdjęć takich informacji jak ilość obiektów, ich rozmiar, położenie, a także orientacja. Jedną z aplikacji wykorzystujących przetwarzanie obrazu jest automatyczna kontrola ilości obiektów na linii produkcyjnej wraz z rozróżnieniem ich klasy np. w celu ich sortowania w dalszym kroku.
Ostatnia edycja: 02.01.2023
Zadanie projektowe polega na przygotowaniu algorytmu wykrywania i zliczania kolorowych cukierków znajdujących się na zdjęciach. Dla uproszczenia zadania w zbiorze danych występują jedynie 4 kolory cukierków:
- czerwony
- żółty
- zielony
- fioletowy
Wszystkie zdjęcia zostały zarejestrowane "z góry", ale z różnej wysokości i pod różnym kątem. Ponadto obrazy różnią się między sobą poziomem oświetlenia oraz oczywiście ilością cukierków.
Poniżej przedstawione zostało przykładowe zdjęcie ze zbioru danych i poprawny wynik detekcji dla niego:
{
...,
"37.jpg": {
"red": 2,
"yellow": 2,
"green": 2,
"purple": 2
},
...
}
Szablon projektu zliczania cukierków na zdjęciach dostępny jest w serwisie GitHub i ma następującą strukturę:
.
├── data
│ ├── 00.jpg
│ ├── 01.jpg
│ └── 02.jpg
├── readme_files
├── detect.py
├── README.md
└── requirements.txt
Katalog data
zawiera przykłady, na podstawie których w pliku detect.py
przygotowany ma zostać algorytm zliczania cukierków. Funkcja main
w pliku detect.py
powinna pozostać bez zmian.
W przypadku chęci wykorzystania przygotowanego szablonu oraz systemu kontroli wersji w postaci serwisu GitHub możliwe jest stworzenie własnego repozytorium na podstawie szablonu. W tym celu należy poprzez przycisk Use this template
utworzyć nowe repozytorium wybierając swoje konto jako właściciela, nadając mu własną nazwę i obowiązkowo ustawiając widzialność jako prywatne. Powyższe kroki zostały przedstawione na załączonych zdjęciach.
Interpreter testujący projekty będzie miał zainstalowane biblioteki w wersjach:
pip install numpy==1.24.1 opencv-python-headless==4.5.5.64 tqdm==4.64.1 click==8.1.3
Natomiast w przypadku wykorzystania w projekcie dodatkowych bibliotek należy przygotować plik requirements.txt
, zawierający informacje o dodatkowym pakiecie i jego wersji, zgodnie z poniższym przykładem:
scikit-image==0.18.3
matplotlib
Więcej informacji na temat zastosowania plików requirements.txt
można znaleźć w:
Skrypt detect.py
przyjmuje 2 parametry wejściowe:
data_path
- ścieżkę do folderu z danymi (zdjęciami)output_file_path
- ścieżkę do pliku z wynikami
$ python3 detect.py --help
Options:
-p, --data_path TEXT Path to data directory
-o, --output_file_path TEXT Path to output file
--help Show this message and exit.
W konsoli systemu Linux skrypt można wywołać z katalogu projektu w następujący sposób:
python3 detect.py -p ./data -o ./results.json
Konfiguracja parametrów wejściowych skryptu w środowisku PyCharm została opisana w pliku PyCharm_input_configuration.md.
Stworzone rozwiązanie należy skompresować do formatu ZIP
, a wyjściowy plik nazwać numerem indeksu (np. 123456.zip). Zadanie to można przykładowo zrealizować w systemach Linux z wykorzystaniem komendy systemowej zip
w terminalu tak, jak to zostało przedstawione poniżej:
zip <NUMER INDEKSU>.zip detect.py requirements.txt
Skompresowany plik należy wstawić w odpowiednim miejscu na platformie eKursy.
Uwaga: w pliku .zip
powinien znajdować się jedynie bezpośrednio plik detect.py
oraz opcjonalnie requirements.txt
.
Przesłane rozwiązania zostaną sprawdzone pod kątem plagiatu oraz z wykorzystaniem poniższego wzoru ocenione będzie działanie algorytmu zliczania cukierków:
Gdzie:
oznacza liczbę obrazów
oznacza rzeczywistą ilość danego koloru
oznacza przewidzianą ilość danego koloru
Końcowy zbiór ewaluacyjny, na którym testowany będzie algorytm jest niepubliczny i niedostępny w czasie realizacji projektu. Do dyspozycji studentów w całości dostępny jest zbiór treningowy dostępny w katalogu data.
W celu weryfikacji wyników na zbiorze walidacyjnym uruchomiona została sprawdzarka z której można skorzystać wywołując skrypt check.py
:
python3 check.py
Sprawdzarka zwraca wynik miary MARPE dla wykorzystanego zbioru lub wyjście z konsoli zawierające wiadomość błędu jaki wystąpił podczas uruchamiania skryptu. Sprawdzarka analzuje jedynie wyniki studentów zapisanych na kurs (w serwisie eKursy), dlatego w skrypcie check.py
należy ustawić swój numer indeksu. Z systemu sprawdzającego każdy student może skorzystać raz na 15 minut.