Skip to content

iOS Raport końcowy

qaziok edited this page Jun 20, 2023 · 11 revisions

Dokumentacja Projektu grupowego

Raport końcowy

Wydział Elektroniki, Telekomunikacji i Informatyki
Politechnika Gdańska

Nazwa i akronim projektu: Aplikacja iOS wykorzystująca głębokie sieci neuronowe do rozpoznawania polskich banknotów dla osób niewidomych Zleceniodawca: mgr inż. Jan Cychnerski
Numer zlecenia: 27@KASK'2023 Kierownik projektu: Jakub Dajczak Opiekun projektu: mgr inż. Jan Cychnerski
Nazwa / kod dokumentu: Raport końcowy – RK Nr wersji: 1
Odpowiedzialny za dokument: Dajczak Jakub Data pierwszego sporządzenia: 04.06.2023
Data ostatniej aktualizacji: 20.06.2023
Semestr realizacji Projektu grupowego: 2

Historia dokumentu

Wersja Opis modyfikacji Rozdział / strona Autor modyfikacji Data
1.00 Pierwsza wersja raportu Całość Wielu autorów - współpraca przeez LiveShare 20.06.2023

Spis treści

1. Wprowadzenie - o dokumencie

1.1. Cel dokumentu

Celem dokumentu jest końcowe wskazanie wykonanych prac z podaniem ich krótkiej charakterystyki (tylko w 2 semestrze), wskazanie rozbieżności wykonywanych prac w stosunku do planowanych, podsumowanie prac z wykazaniem pracy zespołowej oraz wyspecyfikowanie listy dokumentów wytworzonych w projekcie (wersji końcowych – lista obejmuje dokumenty z obu semestrów w wersjach ostatecznych), które zostały umieszczone i zatwierdzone przez opiekuna w serwisie SPG.

1.2. Zakres dokumentu

Dokument opisuje cele, zadania oraz osiągnięcia i pozwala zobrazować jak przebiegała praca w tym semestrze. Na końcu dokumentu znajduje się tabela załączników, gdzie można zapoznać się z innymi aspektami naszej pracy.

1.3. Odbiorcy

Odbiorcami dokumentu są odpowiednio:

  • Opiekun projektu: mgr inż. Jan Cychnerski
  • Koordynator katedralny: dr inż. Jarosław Kuchta, prof. uczelni
  • Członkowie zespołu projektowego:
    • Jakub Dajczak
    • Anton Delinac
    • Stanisław Smykowski
    • Mateusz Sowiński
    • Miłosz Chojnacki

1.4. Terminologia

iOS – system operacyjny Apple Inc. dla urządzeń mobilnych iPhone, iPod touch oraz iPad.

Android – system operacyjny z jądrem Linux dla urządzeń mobilnych takich jak telefony komórkowe, smartfony, tablety i netbooki.

sieć neuronowa - statystyczny model obliczeniowy stosowany w uczeniu maszynowym.

open-source - rodzaj oprogramowania komputerowego, w którym kod źródłowy jest wydawany na podstawie licencji, na mocy której właściciel praw autorskich przyznaje użytkownikom prawa do badania, zmiany i rozpowszechniania oprogramowania w ramach licencji wolnego oprogramowania.

GitHub - hostingowy serwis internetowy przeznaczony do projektów programistycznych wykorzystujących system kontroli wersji Git.

OneDrive - wirtualny dysk autorstwa Microsoft.

App Store – platforma dystrybucji cyfrowej z aplikacjami dla iPada, iPhone'a oraz iPoda touch, stworzona przez Apple Inc.

Tensorflow - biblioteka programistyczna napisana przez Google Brain Team. Wykorzystywana jest w uczeniu maszynowym i głębokich sieciach neuronowych.

2. Rezultaty projektu

2.1. Założenia początkowe

  • dalsze treningi i testy sieci neuronowych do detekcji i klasyfikacji obrazów banknotów
  • dopracowanie finalnej wersji aplikacji mobilnej na system iOS przystosowanej do wykorzystania przez osoby niewidome oraz niedowidzące, umożliwiającej uruchomienie wytworzonych sieci neuronowych w czasie rzeczywistym
  • publikacja zbioru danych, kodu jako projekt open-source oraz dokumentacji technicznej aplikacji
  • testy z użytkownikami

2.2. Zakres wykonanych prac i ich charakterystyka

2.2.1. Treningi sieci neuronowych

Do treningu sieci korzystaliśmy z serwera DGX station udostępnionego nam przez Katedrę Inżynierii Biomedycznej oraz własnych zasobów. Do implementacji sieci neuronowej wykorzystano bibliotekę Tensorflow w wersji 2.4.1 opartą na języku Python 3.8.10. Komponenty fizyczne tj. model karty graficznej użytej do treningu modelu predykcyjnego to NVIDIA A40.

2.2.2. Dopracowanie finalnej wersji aplikacji

Udało się znacząco poprawić wydajność aplikacji oraz dodać automatycznie oświetlanie zbyt ciemnych klatek w stopniu zadowalającym. Nie udało się natomiast dodać menu i opublikować aplikacji na AppStore. Czas, który przypadł na stworzenie menu poświęcono na poprawienie wydajności, ponieważ problem ten okazał się bardziej złożony niż zakładano. Nie udało się opublikować aplikacji w AppStore ze względu na bardzo skomplikowany proces oraz potrzebny dość duży wkład finansowy.

2.2.3. Publikacja kodu jako projekt open-source oraz dokumentacji

Wraz z zespołem odpowiedzialnym za aplikację mobilną na system Android założyliśmy z pomocą opiekuna repozytorium GitHub oraz stworzyliśmy projekt, na którym tworzymy zadania i przypisujemy do odpowiednich osób. Kod aplikacji udostępniamy na licencji GPL-3.0 pod linkiem https://github.com/cvlab-ai/polish_banknotes.

2.2.4. Testy z użytkownikami

Testy z potencjalnymi użytkownikami nie odbyły się w trakcie trwania tego semestru

2.3. Charakterystyka pracy zespołowej

Każda osoba w naszym zespole miała swoją rolę oraz zadania, za które była odpowiedzialna.

Lp. Imię i nazwisko członka zespołu Rola w projekcie E-mail kontaktowy
1. Jakub Dajczak Project leader s184347@student.pg.edu.pl
2. Anton Delinac Machine Learning Developer s184673@student.pg.edu.pl
3. Stanisław Smykowski Data Engineer s184787@student.pg.edu.pl
4. Mateusz Sowiński Data Engineer s165434@student.pg.edu.pl
5. Miłosz Chojnacki IOS Developer s184934@student.pg.edu.pl

Za treningi sieci odpowiedzialni byli Anton Delinac oraz Jakub Dajczak. Za koordynację pracy zespołu, rozdzielanie zadań oraz kontrolowanie repozytorium kodu odpowiedzialny był Jakub Dajczak. Przygotowywaniem danych oraz dokumentów zajmowali się Stanisław Smykowski oraz Mateusz Sowiński, za aplikację mobilną odpowiedzialny był Miłosz Chojnacki.

Zadania przypisywaliśmy z wykorzystaniem systemu GitHub i wbudowanej w platformę funkcji projektu. Każdy z członków miał możliwość ich podglądu oraz edycji. Plan zadań ustalał kierownik z klientem/opiekunem projektu. Spotkania odbywały się co 2 tygodnie(kiedy była taka możliwość). Trwały w okolicach 40-60 min. Omawiany był na nich dotychczasowy progres, wykonane zadania i przyszłe cele. Kierownik przygotowywał podsumowanie dotyczące tego spotkania i udostępniał je na serwisie GitHub korzystając z funkcji dyskusji.

2.4. Osiągnięte wyniki

2.4.1 Sieć neuronowa

Sieć neuronowa trenowana przez nasz zespół nie osiągneła satysfakcynujących wyników, aby mogła zostać użyta w środowisku produkcyjnym. Z tego też powodu ostateczna wersja aplikacji korzysta z sieci wytrenowanej przez zespół tworzący aplikację na platformę Android.

2.4.2 Aplikacja mobilna

Aplikacja przechwytuje klatki z tylnej domyślnej kamery, które są następnie wyświetlane na ekranie urządzenia mobilnego. Dla każdej klatki przeprowadzana jest klasyfikacja, która aktualizuje widok aplikacji. Aplikacja wspiera VoiceOver, czyli czytnik ekranu od firmy Apple dostępny na każdym urządzeniu od firmy Apple. Dodatkowo aplikacja automatycznie wykrywa, gdy kolejne klatki są zbyt słabo oświetlone (oświetlenie klatki mierzone jest w luksach), włącza automatycznie latarkę wbudowaną w telefon, na krótki okres czasu, powiadamiając jednocześnie o tym użytkownika komunikatem głosowym. Nasza aplikacja została przetestowana na urządzeniach nowszych, jak i starszych, zależało nam, aby użytkownik mógł korzystać z wszystkich funkcjonalności aplikacji w sposób płynny i przyjazny bez potrzeby posiadania najnowszego modelu telefonu, dlatego klasyfikacja została ograniczona tylko do niektórych klatek przechwytywanych przez kamerę telefonu.

2.5. Rozbieżności i zmiany w realizacji projektu

Jak wspomniano wyżej, nie udało się uzyskać akceptowalnego wyniku dla sieci neuronowej. Wynikało to głównie z braku doświadczenia członków zespołu w dziedzin klasyfikacji obrazów. Problematycznym okazał się także czas i pogodzenie zadań wraz z rosnącą liczbą zadań i projektów pod koniec semestru. Zespół był zmuszony przeznaczyć większe środki na realizację projektów inżynierskich oraz zaliczenie przedmiotów.

Przez problemy z organizacją czasu oraz budżetu, zespół nie był w stanie zrealizować wszystkich założeń projektu. Nie udało się przeprowadzić testów z użytkownikami zewnętrznymi.

3. Załączniki

Tabela. 3.1. Specyfikacja opracowanych dokumentów w 1 semestrze

L.p. Nazwa dokumentu Nazwa pliku umieszczonego w SPG
1 Informacje o projekcie IoP.pdf
2 Dokumentacja techniczna projektu DTP.pdf
3 Harmonogram szczegółowy i specyfikacja wymagań HSiSW.pdf
4 Plakat informacyjny projektu grupowego PG_WETI_Plakat.pdf
5 Raport semestralny RS.pdf

Tabela. 3.2. Specyfikacja opracowanych dokumentów w 2 semestrze

L.p. Nazwa dokumentu Nazwa pliku umieszczonego w SPG
1 Dokumentacja techniczna projektu DTP2.pdf
2 Harmonogram szczegółowy i specyfikacja wymagań HSiSW2.pdf
3 Plakat informacyjny projektu grupowego PG_WETI_Plakat_sem2.pdf
4 Raport końcowy RK.pdf
Clone this wiki locally