Skip to content
/ WDPOProject Public template
forked from PUTvision/WDPOProject

Szablon projektu zaliczeniowego ,,Zliczanie owoców" z przedmiotu ,,Wprowadzenie do przetwarzania obrazów''.

Notifications You must be signed in to change notification settings

iwajski/WDPOProject

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wprowadzenie do Systemów Wizyjnych

Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej

Projekt zaliczeniowy: zliczanie owocó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 są na przykład bezobsługowe kasy pozwalające rozpoznać i zliczyć produkty, które znajdują się w koszyku.

Changelog

Ostatnia edycja: 23.01.2022

  • 23.01.2022 - w opisie projektu umieszczone zostały progi punktowe

  • 23.01.2022 - automatyczna sprawdzarka została uruchomiona; został dodany do repozytorium skrypt check.py przesyłający folder projektowy do sprawdzarki

  • 14.01.2022 - niezbędne biblioteki zostały dodane do pliku requirements.txt; w skrypcie detect_fruits.py wykorzystana została biblioteka pathlib, która eliminuje problemy związane ze śceiżkami do plików w systemie Windows

Zadanie

Zadanie projektowe polega na przygotowaniu algorytmu wykrywania i zliczania owoców znajdujących się na zdjęciach. Dla uproszczenia zadania w zbiorze danych występują jedynie 3 rodzaje owoców:

  • jabłka
  • banany
  • pomarańcze

Wszystkie zdjęcia zostały zarejestrowane "z góry", ale z różnej wysokości. Ponadto obrazy różnią się między sobą poziomem oświetlenia oraz oczywiście ilością owoców.

Poniżej przedstawione zostało przykładowe zdjęcie ze zbioru danych i poprawny wynik detekcji dla niego:

{
  ...,
  "07.jpg": {
    "apple": 2,
    "banana": 1,
    "orange": 1
  },
  ...
}

Struktura projektu

Szablon projektu zliczania owocó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_fruits.py
├── README.md
└── requirements.txt

Katalog data zawiera przykłady, na podstawie których w pliku detect_fruits.py przygotowany ma zostać algorytm zliczania owoców. Funkcja main w pliku detect_fruits.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:

Wywyołanie programu

Skrypt detect_fruits.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_fruits.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_fruits.py -p ./data -o ./results.json

W środowisku PyCharm możliwe jest dodanie parametrów wejściowych do skryptu, z którymi program będzie wywoływany każdorazowo przy uruchomieniu. W tym celu należy otworzyć okno konfiguracji z górnego menu Run > Edit Configurations.... W otwartym oknie konfiguracji poprzez symbol + należy dodać nową konfigurację dla języka Python. Tworzonej konfiguracji należy nadać nazwę, uzupełnić ścieżkę do pliku detect_fruits.py oraz uzupełnić ścieżki do parametrów wejściowych skryptu zgodnie z powyższym opisem oraz ostanim rysunkiem.

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_fruits.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_fruits.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 owoców:

Gdzie:

  • oznacza liczbę obrazów
  • oznacza rzeczywistą ilość danego typu owoca
  • oznacza przewidzianą ilość danego typu owoca

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

Progi punktowe

Projekt będzie oceniany biorąc pod uwagę osiągnięty wynik miary MARPE na zbiorze testowym zgodnie z przyjętymi zakresami (przedziały prawostronnie domknięte):

Wartość metryki MARPE Ocena
≤ 9 % 5.0
9 - 18 % 4.5
18 - 27 % 4.0
27 - 36 % 3.5
36 - 45 % 3.0
> 45 % 2.0

About

Szablon projektu zaliczeniowego ,,Zliczanie owoców" z przedmiotu ,,Wprowadzenie do przetwarzania obrazów''.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%