-
Notifications
You must be signed in to change notification settings - Fork 2
iOS Dokumentacja techniczna projektu
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 |
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.
W zakres dokumentu wchodzi opis sieci neuronowej oraz aplikacji mobilnej wraz z wykorzystanymi technologiami.
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
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. |
W celu rozpoznawania banknotów za pomocą kamery użyto model sieci neuronowej.
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.
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.
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.
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.
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.
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.
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.
- Informacje o projekcie
- Dokumentacja techniczna projektu
- Harmonogram szczegółowy i specyfikacja wymagań
- Plakat informacyjny Projektu grupowego
- Raport semestralny
- Raport końcowy