Skip to content

iOS Dokumentacja techniczna projektu

qaziok edited this page Jun 20, 2023 · 14 revisions

Dokumentacja Projektu grupowego

Dokumentacja techniczna projektu

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: Dokumentacja techniczna produktu – DTP Nr wersji: 2.00
Odpowiedzialny za dokument: Delinac Anton, Chojnacki Miłosz Data pierwszego sporządzenia: 30.01.2023
Data ostatniej aktualizacji: 20.06.2023
Semestr realizacji Projektu grupowego: 2

Historia zmian

Wersja Opis modyfikacji Rozdział / strona Autor modyfikacji Data
0.8 Opis sieci Dokumentacja techniczna projektu Delinac Anton 30.01.2023
0.9 Opis aplikacji Dokumentacja techniczna projektu Chojnacki Miłosz 30.01.2023
1.00 Uzupełnienie informacji Całość Dajczak Jakub 30.01.2023
2.00 Uzupełnienie informacji po 2 semestrze Całość Dajczak Jakub 20.06.2023

Spis treści

1. Wprowadzenie - o dokumencie

1.1. Cel dokumentu

Celem dokumentu jest udokumentowanie informacji dotyczących produktu, jego cech funkcjonalnych, parametrów technicznych, schematów blokowych, oprogramowania, wyników działania, zdjęć produktu, pomiarów, testów oraz innych elementów wymaganych przez opiekuna i klienta.

1.2. Zakres dokumentu

W zakres dokumentu wchodzi opis sieci neuronowej oraz aplikacji mobilnej wraz z wykorzystanymi technologiami.

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

ANN sztuczna sieć neuronowa (ang. artificial neural network)
węzeł sztuczny neuron, wiele węzłów tworzy warstwę sieci
wyjście wynik otrzymany na danym węźle po operacjach matematycznych
Tensorflow biblioteka programistyczna napisana przez Google Brain Team. Wykorzystywana jest w uczeniu maszynowym i głębokich sieciach neuronowych.
framework jest to szkielet do budowy aplikacji, który dostarcza niezbędne biblioteki i komponenty oraz definiuje strukturę i działanie danej aplikacji.
Android system operacyjny dla urządzeń mobilnych, stworzony przez firmę Google.
PyTorch framework do uczenia maszynowego i głębokich sieci neuronowych, stworzony przez Facebook AI Research.
YOLO alogrytm do detekcji obiektów, wspirający również klasyfikację obiektów.

2. Dokumentacja techniczna projektu

2.1. Sieć neuronowa

W celu rozpoznawania banknotów za pomocą kamery użyto model sieci neuronowej.

2.1.1. Głębokie uczenie

Głębokie uczenie to metody uczenia maszynowego zbudowane z wielu warstw realizujących nieliniowe transformacje, które składają się na model hierarchiczny. Warstwy tworzą kolejne poziomy abstrakcji, najniższe warstwy reprezentują najprostsze cechy danych wejściowych, wyższe warstwy generują bardziej ogólne koncepty bazując na relacjach z poprzednich warstw.

2.1.2. Sztuczne sieci neuronowe

Sztuczne sieci neuronowe, czyli ANN, złożone są z warstw węzłów, które obejmują warstwę wejściową, ukryte warstwy oraz warstwę wyjściową. Każdy ze sztucznych neuronów, czyli wspomnianych węzłów, łączy się z kolejnymi oraz ma przypisaną wartość i próg. W przypadku, kiedy wyjście dowolnego z nich przekracza odpowiednią wartość, jest on aktywowany podczas przesyłania danych do następnej warstwy sieci neuronowej. Jeżeli natomiast wyjście danego węzła nie przekracza przypisanych wartości, dane nie zmieniają miejsca pobytu i pozostają w danej warstwie sieci.

Przyjmuje się, że sztuczna sieć neuronowa składająca się z większej ilości niż trzy warstwy może zostać nazwana również algorytmem uczenia głębokiego.

2.1.3. Implementacja

Początkowo do implementacji opisanej wyżej sieci neuronowej wykorzystano bibliotekę TensorFlow w wersji 2.4.1 opartą na języku Python 3.8.10. Komponenty fizyczne tj. karty graficzne — użyte do treningu modelu predykcyjnego — udostępnione zostały przez Katedrę Architektury Systemów Komputerowych. Model użytej karty graficznej to NVIDIA A40.

Finalna wersja sieci neuronowych jest oparta na technologi PyTorch i algorytmie YOLO w wersji 5. Wytrenowany model został dostarczony przez zespoł zajmujący się tworzeniem takiej samej aplikacji na system Android. W celu dostosowania modelu do aplikacji na system iOS, został on przekonwertowany do formatu CoreML.

2.2. Aplikacja mobilna

Aplikację mobilną na urządzenia z systemem iOS wytworzono w języku Swift, przy użyciu framework'a SwiftUI, implementacji programowania reaktywnego od Apple - Combine oraz biblioteki odpowiedzialnej za integracje z modelami sztucznej inteligencji - CoreML.

2.2.1. Architektura aplikacji

Jako architekturę aplikacji wybrano architekturę MV (Model-View). Wzorzec MV(Model-View) jest popularnym wzorcem projektowym w tworzeniu oprogramowania, który oddziela dane i stan aplikacji (Model) od jej prezentacji (Widok). Model przechowuje dane aplikacji, a Widok je wyświetla. Widok aktualizuje model, gdy pojawiają się interakcje użytkownika, a model aktualizuje widok, gdy zmieniają się dane. Takie rozdzielenie problemów poprawia czytelność kodu, łatwość utrzymania i testowania.

2.2.2. Podstawowe funkcjonalności aplikacji

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.2.3. Deweloperskie funkcjonalności aplikacji

Dla łatwiejszego rozwijania i testowania aplikacji został zaimplementowany tryb deweloperski aplikacji. Tryb ten pozwala na dokładniejszą analizę działania modelu, pokazując trzy najbardziej prawdopodobne klasy wraz z procentem pewności. Dodatkowo możliwe jest podmienianie modelu w czasie działania aplikacji, dzięki czemu zmieniając model, nie trzeba budować aplikacji od nowa.

Clone this wiki locally