Skip to content

ArturPrentki/projekcik

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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: 02.01.2023

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 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:

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.

Automatyczna sprawdzarka

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Generated from PUTvision/WDPOProject