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