Serwisy partnerskie:
Close icon
Serwisy partnerskie

Szybka detekcja COVID-19 oparta na promieniowaniu rentgenowskim z użyciem Raspberry Pi

Article Image
Elmax
Ogólne systemy wykrywania Covid-19 oparte na promieniowaniu rentgenowskim są szybkie i dają szybkie wyniki wraz ze statusem, w jakim stopniu wirus COVID-19 zainfekował płuca. Poprzednie systemy wykrywania wirusa Covid-19 potrzebowały czasu, aby podać raporty, podczas gdy zainfekowana osoba wymagała natychmiastowej pomocy. Ponadto, wszystkie takie systemy wykrywania wykorzystywały części, które wymagały utylizacji po każdym użyciu, co stwarzało duże zapotrzebowanie na surowce.

Opisywany system wykrywania Covid-19 oparty na technologii X-Ray wymaga tylko jednorazowej instalacji wraz z urządzeniem X-Ray. System wykrywania daje aktualny status infekcji wewnątrz płuc. Można to osiągnąć na dwa sposoby: poprzez użycie biblioteki Pythona lub poprzez stworzenie i wytrenowanie modelu ML. W artykule opisano tworzenie i trenowanie modelu ML.

Zacznijmy nasz projekt od zebrania następujących komponentów.

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić

Uwaga: Możesz wyeliminować koszt wyświetlacza HDMI, używając laptopa lub dowolnego monitora/TV jako ekranu. Potrzebny jest również obraz rentgenowski płuc.

Przygotowanie

Zainstaluj najnowszy system operacyjny Raspbian na płytce Raspberry Pi. Następnie należy przygotować zestawy danych obrazów rentgenowskich płuc zainfekowanych i niezainfekowanych wirusem Covid-19. Można to uzyskać odwiedzając kaggle, internetowe źródło danych o zainfekowanych obrazach X-Ray przygotowane przez społeczność ekspertów i lekarzy. Można również uzyskać dane z GitHub. Pobierz zestawy danych zawierające obrazy rentgenowskie normalnych płuc i płuc zainfekowanych wirusem Covid-19.

Teraz wybierz platformę do tworzenia modelu ML i trenuj go, aby wykryć płuca zainfekowane Covid na obrazach X-Ray. Mamy różne opcje takie jak TensorFlow, PyTorch opcje online jak SensiML, Apache Spark, EDGE Impulse itp. W tym projekcie używany jest EDGE Impulse.

Jeśli również używasz Edge Impulse, wybierz create project. Następnie zostaniesz poproszony o wybranie sposobu w jaki chcesz używać projektu. Ponieważ chcesz użyć projektu do stworzenia modelu ML przetwarzającego obraz, wybierz „image”.

Następnie zostaniesz zapytany jak chcesz sklasyfikować obraz (klasyfikacja wieloobiektowa lub klasyfikacja jednoobiektowa). Możesz wybrać dowolny sposób. W projekcie użyto klasyfikacji jednoobiektowej. Po kliknięciu na nowo utworzony projekt, zostaniesz poproszony o określenie w jaki sposób chcesz go wykorzystać. Wybierz opcję connect a development board, co spowoduje załadowanie danych do projektu.

Rysunek 1. Tworzenie projektu
Rysunek 2. Wybór typu klasyfikowania
Rysunek 3. Podłączenie do dev boarda

Instalacja na Raspberry Pi

Otwórz terminal i zainstaluj zależności dla EDGE_Impulse na Raspberry Pi używając komend podanych poniżej:

curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -.
sudo apt install -y gcc g++ make build-essential nodejs sox gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps
npm config set user root && sudo npm install edge-impulse-linux -g --unsafe-perm

Po instalacji, uruchom program używając edge-impulse-linux.

Zostaniesz poproszony o podanie swojego adresu email i hasła do EDGE Impulse. Wpisz te dane i zaloguj się.

Rysunek 4. Logowanie przy użyciu identyfikatora e-mail i hasła

Następnie wybierz projekt, z którym urządzenie ma być połączone. Wprowadź nazwę projektu (w tym przypadku jest to COVID-19 Detector).

Rysunek 5. Wybór projektu

Przygotowanie zestawu danych

Dalej podajemy adres URL do załadowania zbiorów danych. Istnieją dwie możliwości: albo użyć kamery Raspberry Pi do załadowania zbiorów danych obrazów rentgenowskich (umieszczając obrazy rentgenowskie w ramce kamery), albo użyć komputera PC/Raspberry Pi do załadowania plików obrazów rentgenowskich. Zalecane jest użycie tej drugiej opcji.

Tak więc, aby ręcznie załadować zestawy danych, czyli obrazy X-Ray z komputera, wybierz je jako obrazy testowe/treningowe. Po wybraniu, prześlij je do treningu i ustaw poziom klasyfikacji obrazów.  Zastosuj etykiety COVID-19 infected i Normal Lungs. Potem załaduj obrazy X-Ray normalnych płuc i płuc zainfekowanych Covid-19.

Rysunek 6. Uzyskanie adresu URL do utworzenia modelu ML
Rysunek 7. Wgrywanie danych za pomocą kamery Raspberry Pi do modelu ML
Rysunek 8. Wgranie danych za pomocą pliku graficznego

W przypadku, gdy nie uda Ci się załadować obrazów do odpowiednich kategorii, możesz je później dodać i/lub oznaczyć jako "Płuco zakażone" (COVID-19 infected) lub "Płuco prawidłowe" (normal lungs) korzystając z opcji Edytuj. Należy jednak zachować ostrożność podczas etykietowania zestawów danych. Jeśli oznaczysz obrazy X-Ray pokazujące normalne płuca jako zakażone Covid, twój model będzie trenowany niepoprawnie, zmniejszając tym samym dokładność. Po pobraniu zbiorów danych (ze strony internetowej), upewnij się, że masz dwa oddzielne foldery: jeden dla zbiorów danych treningowych, a drugi dla zbiorów danych testowych. W obu z nich utwórz dwa oddzielne foldery o nazwach: Infected lung X-ray i Normal lung X-ray. Wgraj zdjęcia z obu tych folderów oddzielnie i po wgraniu prawidłowo je skategoryzuj.

Rysunek 9. Ustawienie poziomu dla zbioru danych treningowych

Powtórz te same kroki, aby załadować zdjęcia rentgenowskie zainfekowanych płuc i zdrowych płuc dla zestawów danych testowych. Opcja ładowania zdjęć rentgenowskich dla zbiorów testowych znajduje się obok opcji treningu.

Rysunek 10.

Trening modelu ML

Po załadowaniu obrazów rentgenowskich zainfekowanych i niezainfekowanych zestawów danych, można przystąpić do trenowania modelu ML. Przejdź do zakładki Impulse design, kliknij na create Impulse i wybierz opcję create Impulse. Następnie dodaj blok przetwarzania i blok uczenia.

Rysunek 11. Tworzenie impulsu
Rysunek 12. Wybór bloku przetwarzania
Rysunek 13. Blok uczenia

Po dodaniu bloków przetwarzania i uczenia, należy ustawić parametry. W tym miejscu należy uzyskać cechy wyodrębnione z obrazu X-Ray i zapisać je. Teraz przejdź do nowej opcji treningu modelu ML. W tym celu należy wybrać trening modelu ML, który ma być utworzony przy użyciu trybu eksperckiego Keras lub trybu normalnego. W projekcie użyto trybu normalnego. W tym trybie, są opcje, aby ustawić liczbę cykli uczenia się. Jeśli liczba cykli uczenia się jest zwiększona, wtedy dokładność wzrasta, ponieważ idzie w pętli dla różnych cykli uczenia się jednak zajmuje to trochę czasu. Opcje ustawienia progu i szybkości uczenia wpływają na dokładność i czas generowania modelu wykrywania wirusa Covid.

Rysunek 14. Wizualizacja dla modelu ML
Rysunek 15. Generowanie parametru
Rysunek 16. Ustawienie i utworzenie modelu ML

Testowanie

Teraz wytrenowany model jest gotowy do testowania. Można przetestować z już załadowanym obrazem X-Ray, dla którego model będzie próbował wykryć infekcję wirusem Covid w płucach.

Rysunek 17. Wykrywanie infekcji z obrazu X-Ray w testach
Rysunek 18. Klasyfikacja wszystkich obrazów dla testowania dokładności modelu

Wdrażanie modelu ML

Model ML jest gotowy do wdrożenia. Jest wiele opcji i sprzętu, na którym możemy wdrożyć nasz model ML do wykrywania infekcji wirusem Covid-19 na podstawie obrazu rentgenowskiego płuc. Ponieważ używamy Linuksa, wybierz Linuksa. Następnie otwieramy terminal i uruchamiamy program.

Edge-impulse-runner-linex

Po czym, Raspberry Pi zaczyna pobierać ML Model i uruchamia model, aby wyświetlić adres URL, gdzie można zobaczyć wideo z kamery na żywo w Raspberry Pi. Teraz umieść zdjęcie rentgenowskie płuc przed kamerą z pełnym oświetleniem. Model zaczyna wykrywać zainfekowane płuca i informuje o wynikach testu Covid w ciągu kilku sekund.

Istnieje więcej opcji wdrożenia modelu ML do wykrywania Covid. Używając SDK możemy wykryć Covid i wdrożyć model ML w języku programowania takim jak Python. Alternatywnie można przesłać obraz X-Ray w zestawie danych testowych, a następnie uruchomić model ML w klasyfikacji na żywo, aby wykrywać infekcję wirusem Covid-19 w ciągu kilku sekund.

Rysunek 19. Wybieranie płytki do wdrożenia
Rysunek 20. Wdrażanie modelu ML w Raspberry PI
Rysunek 21. Wykrywanie zainfekowanego płuca na podstawie obrazu rentgenowskiego
Rysunek 22. Rezultaty wyjściowe
Rysunek 23. Wykrywanie infekcji na zdjęciu rentgenowskim
Rysunek 24. Normalne płuco wykryte jako normalne
Rysunek 25. Wykrywanie infekcji wirusowej w płucach za pomocą zdjęcia rentgenowskiego
Wideo
Firma:
AUTOR
Źródło
www.electronicsforu.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"