Skip to content

Languzda/WDPOProject

Repository files navigation

Wprowadzenie do Systemów Wizyjnych

Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej

Projekt zaliczeniowy: zliczanie cukierków

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.

Changelog

Ostatnia edycja: 25.11.2022

Zadanie

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
  },
  ...
}

Struktura projektu

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.

Wykorzystanie szablonu

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.

Biblioteki

Interpreter testujący projekty będzie miał zainstalowane biblioteki:

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:

Wywołanie programu

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.

Przesyłanie rozwiązania

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.

Ewaluacja rozwiązań

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages