1. Cel i założenia projektu
Celem było stworzenie stosunkowo taniego, łatwego w obsłudze i mobilnego urządzenia, które pozwoli osobom niewidomym lub niedowidzącym na odczytanie drukowanego tekstu z dokumentów czy książek.
Założenia kluczowe:
- Wykorzystanie powszechnie dostępnych, budżetowych komponentów, w tym minikomputera Raspberry Pi 4B.
- Rozpoznawanie tekstu w języku polskim (w tym znaków diakrytycznych) oraz konwersja na mowę.
- Obsługa dwóch wariantów klasyfikacji: własnej sieci neuronowej CNN oraz modelu ResNet50 (transfer learning).
2. Budowa urządzenia
2.1 Raspberry Pi 4B
W projekcie użyto Raspberry Pi 4B z 4 GB pamięci RAM, pracującego pod kontrolą systemu Raspberry Pi OS (Bookworm). Jest to serce urządzenia odpowiedzialne za:
- Akwizycję obrazu z kamery.
- Przetwarzanie (filtrację i segmentację) obrazu.
- Klasyfikację rozpoznanych liter za pomocą wybranego modelu sieci neuronowej.
- Syntezę mowy (eSpeak lub inny TTS) i wysyłanie jej na słuchawki/głośnik Bluetooth.
2.2 Kamera 5MP OV5647
Do przechwytywania obrazu wybrano kamerę 5 MP OV5647, kompatybilną z Raspberry Pi. Zapewnia ona dobrą jakość przy zachowaniu niskiej ceny. Dzięki rozdzielczości 2592×1944 pikseli możliwe jest skuteczne uchwycenie tekstu o standardowej wielkości czcionki.
2.3 Obudowa
W celu integracji komponentów zaprojektowano i wydrukowano w technologii 3D dwuczęściową obudowę (góra/dół), zaprojektowaną w Autodesk Inventor Professional 2025. Obudowa umożliwia stabilny montaż Raspberry Pi i kamery, zapewniając jednocześnie łatwy dostęp do portów i złączy.
2.4 Komunikacja z komputerem PC
Urządzenie łączy się z komputerem (np. laptopem) poprzez Wi-Fi. Komputer pozwala m.in. na:
- Podgląd obrazu w czasie rzeczywistym.
- Wybór modelu sieci neuronowej (autorskiej lub ResNet50).
- Testowanie i diagnostykę (np. z użyciem środowiska Matlab/Simulink).
3. Algorytm przetwarzania obrazu i rozpoznawania tekstu
- Przechwycenie obrazu z kamery i przekazanie go do Raspberry Pi.
- Filtracja i binaryzacja – konwersja do skali szarości, poprawa kontrastu, usuwanie szumów (filtr Wienera), a następnie zamiana na obraz czarno-biały.
- Segmentacja – rozdzielanie obrazu na poszczególne litery (najlepsze wyniki uzyskano, stosując segmentację opartą na detekcji konturów).
- Klasyfikacja – dla każdego wyodrębnionego znaku wywoływana jest sieć neuronowa. Projekt przewiduje dwie opcje:
- Autorska CNN – mniejsza i szybsza w trenowaniu, jednak nieco mniej dokładna w rozpoznawaniu skomplikowanych czcionek.
- ResNet50 (transfer learning) – głęboka sieć residualna wstępnie wytrenowana na dużym zbiorze danych, następnie dostosowana do polskich liter. Bardziej złożona, osiąga wyższą dokładność kosztem dłuższego czasu przetwarzania.
- Synteza mowy – rozpoznany tekst przekazywany jest do syntezatora (np. eSpeak) i odczytywany przez słuchawki lub głośnik Bluetooth.
4. Sieci neuronowe
4.1 Autorska sieć CNN
- Dwie warstwy konwolucyjne, warstwy aktywacji ReLU, pooling, batch normalization i dropout.
- Obrazy wejściowe o wymiarach 28×28 pikseli (binarnie).
- Dokładność w testach: ok. 79–84% (dla zbioru testowego i większych czcionek).
- Zaletą jest krótszy czas trenowania oraz mniejsze wymagania sprzętowe.
4.2 Transfer Learning: ResNet50
- Głęboka sieć z 50 warstwami konwolucyjnymi i blokami resztkowymi.
- Zmodyfikowana końcowa warstwa klasyfikująca (dostosowana do polskich znaków).
- Dokładność w testach: nawet 87–92% (przy dobrej jakości obrazu).
- Wadą jest nieco dłuższy czas przetwarzania na Raspberry Pi.
5. Testy i wyniki
- Dokładność rozpoznania:
- Dla dobrze oświetlonych, wyraźnych tekstów sieć ResNet50 znacząco przewyższa autorską CNN.
- W warunkach słabego oświetlenia lub przy małych, gęsto upakowanych literach obydwa modele mają trudności – kluczowa staje się wtedy segmentacja oraz jakość zdjęcia.
- Czas przetwarzania:
- Autorska sieć CNN: średnio ~12 s na przetworzenie typowego fragmentu tekstu.
- ResNet50: ~20 s, ale wyższa dokładność.
- Wady: problemy z rozpoznawaniem zbyt małych lub zniekształconych znaków, zwłaszcza przy złej segmentacji lub słabym oświetleniu.
6. Implementacja i obsługa
- Oprogramowanie w Matlab/Simulink:
- Dzięki pakietom MATLAB/Simulink Support Package for Raspberry Pi Hardware możliwe było szybkie wdrożenie i testowanie.
- Aplikacja w Matlabie wyświetla podgląd kamery, umożliwia zmianę modelu (CNN/ResNet50) oraz przesyła dane do i z minikomputera.
- Połączenia bezprzewodowe:
- Raspberry Pi łączy się przez Wi-Fi z komputerem (wgląd w obraz, wybór modelu).
- Wyjście dźwięku odbywa się poprzez Bluetooth (np. słuchawki).
- Obudowa 3D:
- Wydruk 3D z tworzywa – kompaktowa konstrukcja dla RPi i kamery.
7. Podsumowanie i możliwości rozwoju
Zaprojektowane urządzenie spełnia główny cel: potrafi przechwycić obraz z kamery, rozpoznać drukowany tekst i odtworzyć go w formie dźwiękowej. Dzięki zastosowaniu dwóch modeli (autorskiej sieci CNN i ResNet50) można wybrać rozwiązanie szybsze lub dokładniejsze.
Możliwe dalsze usprawnienia:
- Poprawa jakości obrazu: doświetlanie LED, lepsza kamera o wyższej rozdzielczości.
- Rozbudowa algorytmów segmentacji (np. inteligentne wykrywanie linii tekstu).
- Ulepszenie obudowy (materiały, ergonomia, estetyka).
- Dalsze dopracowanie modeli sieci neuronowych (więcej danych treningowych, kolejne warstwy, inny typ transfer learningu).
- Implementacja szybszych bibliotek TTS z lepszą jakością głosu.
Projekt pozwolił na zdobycie doświadczenia w dziedzinie systemów wbudowanych, przetwarzania obrazu, uczenia maszynowego oraz inżynierii oprogramowania w praktyce. Urządzenie może stanowić ciekawą bazę do dalszej komercjalizacji i rozwijania rozwiązań z zakresu asysty osobom z dysfunkcjami wzroku.