$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Opis zestawu danych
Zestaw danych wykorzystany w tym badaniu został uzyskany z publicznie dostępnego repozytorium Kaggle zatytułowanego Paddy Leaf Diseases Detection Dataset. Składa się z 18 545 zdjęć liści ryżu podzielonych na 10 klas chorób i 1 klasę zdrową. Obrazy różnią się rozdzielczością i zostały wykonane w różnych warunkach oświetleniowych i środowiskowych.
Wstępne przetwarzanie obrazu
Wszystkie obrazy zostały przeskalowane do 224 x 224 pikseli za pomocą funkcji tf.image.resize() TensorFlow. Ta jednorodność zapewnia zgodność z wymaganiami wejściowymi wstępnie wytrenowanych modeli CNN.: Wartości pikseli zostały znormalizowane do zakresu [0,1] przy użyciu parametru rescale=1./255 w Keras ImageDataGenerator. Augmentacja (tylko do treningu): Techniki takie jak odwracanie w poziomie i pionie, obracanie (± 20°) i powiększanie (do 20%) zostały zastosowane przy użyciu ImageDataGenerator w celu poprawy generalizacji.
Segmentacja obrazu
Do segmentacji obrazu wykorzystano model UNet, aby odizolować chore obszary liści od bałaganu w tle. Architektura UNet została zbudowana przy użyciu funkcjonalnego interfejsu API Keras z warstwami kodera-dekodera, pomijaniem połączeń i aktywacją ReLU. Maski segmentacji zostały zastosowane do oryginalnych obrazów przy użyciu mnożenia pikseli (cv2.bitwise_and), aby zachować tylko odpowiednie cechy.
Architektura modelu i trenowanie
Jako klasyfikatory szkieletowe użyto następujących modeli: VGG16, ResNet50, InceptionV3, MobileNet, AlexNet i DenseNet121. Wstępnie wytrenowane modele (w sieci ImageNet) zostały zaimportowane z parametrem include_top=False. Dodano niestandardową głowicę klasyfikacyjną, składającą się z globalnej warstwy puli średniej, dwóch gęstych warstw ze 128 i 64 neuronami (aktywacja ReLU), warstwy Dropout (szybkość = 0,4) i końcowej warstwy gęstej z 11 wyjściami i aktywacją Softmax.
Konfiguracja eksperymentalna
Wszystkie eksperymenty zostały przeprowadzone przy użyciu następujących ustawień: Środowisko programistyczne: Python 3.11.5 z TensorFlow i Keras, Platforma wykonawcza: Jupyter Notebook, Sprzęt: Intel Core i5-6300U, 8 GB RAM, Windows 11, Wielkość partii: 32, Epoki: 50, Optymalizator: Adam, Szybkość uczenia się: 0,0001, Funkcja straty: Skrzyżowanie kategoryczne, Funkcje aktywacji: ReLU dla ukrytych warstw, Softmax dla końcowej warstwy wyjściowej.
Metryki oceny
Dokładność, precyzja, kompletność i wynik F1 zostały obliczone przy użyciu classification_report ze sklearn.metrics. Macierze pomyłek zostały wykreślone przy użyciu confusion_matrix i seaborn.heatmap. Wydajność oceniano zarówno na obrazach niesegmentowanych, jak i podzielonych na segmenty UNet w celu oceny porównawczej.
Rozwój GUI
Prosty graficzny interfejs użytkownika został stworzony przy użyciu biblioteki Tkinter Pythona. Użytkownicy mogą przekazać obraz liścia przy użyciu graficznego interfejsu użytkownika, który jest następnie przekazywany przez wytrenowany model. Przewidywana klasa choroby jest wyświetlana na ekranie wraz z oceną ufności.
Tworzenie zestawu danych
Zbiór danych wykorzystany w tym badaniu to publicznie dostępny zestaw danych do wykrywania chorób liści ryżu z Kaggle36, zawierający łącznie 18 545 obrazów liści ryżu w wysokiej rozdzielczości podzielonych na 10 klas chorób i 1 klasę zdrową. Obrazy zostały wykonane w różnych warunkach oświetleniowych i środowiskowych, dzięki czemu zestaw danych jest wysoce reprezentatywny i nadaje się do tworzenia solidnych modeli głębokiego uczenia. Zestaw danych ma rozmiar około 8,33 GB i zawiera następujące klasy: Tungro, Zaraza pochwy (SB), Paddy Hispa (PH), Podmuch szyi (NB), Wąska brązowa plama (NBS), Oparzenia liści (LS), Podmuch liści (LB), Zdrowa, brązowa plama (BS) i Bakteryjna zaraza liści (BLB).
Aby zapewnić odtwarzalność i efektywną ocenę modelu, zestaw danych został losowo podzielony na podzbiory treningowe (80%) i testowe (20%) przy zachowaniu rozkładu klas. Zestaw treningowy został użyty do trenowania modeli, podczas gdy zestaw testowy został zarezerwowany do walidacji wydajności na niewidocznych danych. Ocena opierała się na standardowych wskaźnikach klasyfikacji: dokładności, precyzji, kompletności i wyniku F1, które zapewniły kompleksową ocenę możliwości klasyfikacyjnych każdego modelu. W badaniu porównano sześć modeli głębokiego uczenia: VGG16, ResNet, InceptionV3, MobileNet, AlexNet i DenseNet121, przy czym DenseNet121 zapewnia najlepszą wydajność dla tego zadania.
Dystrybucja danych
Klasyfikacja chorób została przeprowadzona przy użyciu modeli głębokiego uczenia wytrenowanych na zbiorze danych. Zbiór danych został podzielony na dwa podzbiory: zestaw treningowy i zestaw testowy. Zestaw treningowy został wykorzystany do nauczenia modelu, podczas gdy zestaw testowy został wykorzystany do oceny jego wydajności na wcześniej niewidzianych danych. Podsumowanie rozkładu obrazu w dziesięciu kategoriach chorób i klasie zdrowych liści przedstawiono w tabeli 1. Powyższa tabela zapewnia kompleksowe zrozumienie objawów wizualnych związanych z każdą chorobą, ułatwiając trenowanie i ocenę modeli klasyfikacyjnych.
Taki rozkład zapewnia sprawiedliwą reprezentację każdej kategorii choroby zarówno w fazie szkolenia, jak i testowania. Zestaw treningowy zawiera większość obrazów, dzięki czemu model może skutecznie uczyć się unikalnych cech każdej klasy. Zestaw testowy, składający się z mniejszego podzbioru obrazów, zapewnia wiarygodną ocenę dokładności modelu i jego zdolności do uogólniania na nowe, niewidoczne dane.
Zrównoważony i zróżnicowany rozkład obrazów w różnych kategoriach zapewnia, że model ma wystarczające dane, aby nauczyć się unikalnych wzorców związanych z każdym typem choroby, jednocześnie zmniejszając ryzyko nadmiernego dopasowania lub uprzedzeń w stosunku do określonej klasy. Ten podział danych jest niezbędny do uzyskania solidnych i wiarygodnych wyników klasyfikacji.
Czyszczenie danych
W fazie przetwarzania wstępnego czyszczenie danych jest niezbędne do zwiększenia dokładności i wydajności modelu klasyfikacji. Surowe obrazy liści ryżu często zawierają niechciane elementy tła, takie jak gleba, pobliska roślinność lub narzędzia rolnicze, które mogą wprowadzać szumy i pogarszać ogólną wydajność modelu.
Aby rozwiązać ten problem, segmentację obrazu przeprowadzono przy użyciu modelu UNet37,38, dobrze znanej architektury konwolucyjnej sieci neuronowej zaprojektowanej specjalnie do zadań segmentacji semantycznej. Model UNET jest w stanie z dużą precyzją segmentować obszary liści od tła, zapewniając, że tylko odpowiednie fragmenty obrazów są zachowywane do dalszego przetwarzania39. Proces segmentacji został zilustrowany na rysunku 1.
Proces segmentacji za pomocą modelu UNet (rysunek 2): Nieprzetworzone obrazy ze zbioru danych są wprowadzane do modelu UNET. Model UNET składa się z kodera, który wyodrębnia cechy hierarchiczne, oraz dekodera, który rekonstruuje obraz podczas segmentacji regionu liścia. Model generuje maskę binarną, w której zaznaczony jest region liścia, a tło jest usuwane. Podzielone na segmenty obrazy są dodatkowo udoskonalane poprzez zastosowanie operacji morfologicznych w celu zapewnienia gładkich krawędzi i usunięcia wszelkich pozostałości szumów (ryc. 3).
Matematyczne sformułowanie segmentacji UNet: UNet przeprowadza segmentację semantyczną, ucząc się mapowania z przestrzeni obrazu wejściowego do maski binarnej, która podkreśla obszar zainteresowania (ROI), tj. chory obszar liścia, jednocześnie tłumiąc nieistotne tło. Pozwalać:
oznaczać wejściowy obraz RGB o rozmiarze H*W z C=3 kanałami kolorów.
być wynikiem wytrenowanego modelu UNet, gdzie każda wartość piksela w M reprezentuje prawdopodobieństwo, że ten piksel będzie należał do chorego obszaru liścia.
Końcowa binarna maska segmentacji 
gdzie τ [0,1] jest progiem segmentacji (zwykle ustawionym na 0,5).
Podzielony na segmenty obraz
jest następnie obliczany jako:

gdzie
oznacza mnożenie pierwiastkowe, stosowane przestrzennie we wszystkich kanałach. Ta operacja zachowuje wartości pikseli w ROI (gdzie
) i maskuje piksele tła (gdzie
). Te podzielone na segmenty dane wyjściowe są przekazywane jako dane wejściowe do modelu klasyfikacji (np. DenseNet121), co pozwala skupić się wyłącznie na cechach istotnych dla choroby, ignorując hałaśliwe, nieinformacyjne obszary tła, co poprawia wydajność klasyfikacji i uogólnienie modelu.
Ten etap wstępnego przetwarzania gwarantuje, że kolejne etapy wyodrębniania i klasyfikacji cech są wykonywane na czystych, istotnych danych, zwiększając w ten sposób ogólną wydajność i niezawodność modelu klasyfikacji chorób liści ryżu.
Uczenie się transferowe
Uczenie transferowe wykorzystuje wstępnie wytrenowane sieci neuronowe do rozwiązywania nowych, ale powiązanych problemów, eliminując potrzebę budowania modeli od podstaw. Takie podejście wykorzystuje wiedzę zdobytą podczas poprzednich zadań, umożliwiając efektywne uczenie się40. Wstępnie wytrenowane modele są często opracowywane na obszernych zestawach danych i mają niezawodne możliwości wyodrębniania funkcji, dzięki czemu nadają się do dostrajania określonych zestawów danych. Skraca to czas szkolenia, pozwala uniknąć nadmiernego dopasowania i osiąga wysoką dokładność nawet przy ograniczonych zasobach obliczeniowych.
W tym badaniu wykorzystano uczenie transferowe do identyfikacji chorób liści ryżu poprzez ocenę różnych wstępnie wytrenowanych modeli uczenia głębokiego. Architektura badana w eksperymentach obejmuje VGG16, ResNet, InceptionV3, MobileNet, AlexNet i DenseNet121. Każdy z tych modeli został początkowo przeszkolony na dużych zestawach danych, takich jak ImageNet, a ich wstępnie wytrenowane wagi zostały wykorzystane w tej pracy. W celu dostosowania modeli do zadania klasyfikacyjnego dokonano następujących modyfikacji:
Modyfikacja modelu: Oryginalne, w pełni połączone (klasyfikacyjne) warstwy każdego modelu zostały usunięte przy użyciu parametru include_top=False podczas importu modelu w Keras. Zapewniło to, że zachowana została tylko baza konwolucyjna (ekstraktor cech) każdego wstępnie wytrenowanego modelu. Dane wyjściowe ostatniego bloku konwolucyjnego zostały spłaszczone do jednowymiarowego wektora za pomocą warstwy Flatten().
Gęste warstwy: Trzy w pełni połączone (gęste) warstwy zostały dołączone sekwencyjnie po etapie spłaszczania. Warstwy te zdefiniowano za pomocą funkcji Keras Dense(): pierwsza z 256 neuronami i aktywacją ReLU, druga ze 128 neuronami i aktywacją ReLU, a trzecia z 64 neuronami i aktywacją ReLU. Między warstwami dodano również warstwę Dropout, aby zmniejszyć nadmierne dopasowanie.
Warstwa wyjściowa: Trzy w pełni połączone (gęste) warstwy zostały dołączone sekwencyjnie po etapie spłaszczania. Warstwy te zdefiniowano za pomocą funkcji Keras Dense(): pierwsza z 256 neuronami i aktywacją ReLU, druga ze 128 neuronami i aktywacją ReLU, a trzecia z 64 neuronami i aktywacją ReLU. Między warstwami dodano również warstwę Dropout (współczynnik 0,4), aby zmniejszyć nadmierne dopasowanie.
Ogólny potok i przepływ metodologii, w tym przetwarzanie wstępne, segmentacja, implementacja modelu uczenia transferowego i ocena, przedstawiono na rysunku 4. Rysunek ten zawiera kompleksowy przegląd kroków podjętych w tym badaniu. Dzięki zastosowaniu uczenia transferowego udało się zminimalizować czas szkolenia, zmniejszyć zależność od wysokiej klasy zasobów obliczeniowych i osiągnąć znaczną poprawę wydajności w klasyfikacji chorób liści ryżu.
Proponowany model DenseNet121 do klasyfikacji chorób liści
Spośród wszystkich testowanych modeli, DenseNet121 wykazał się najlepszą wydajnością w klasyfikacji chorób liści ryżu, osiągając niezwykłą dokładność. Ten najnowocześniejszy model głębokiego uczenia wyróżnia się innowacyjną architekturą40, która sprzyja wydajnemu przepływowi informacji i usprawnia ponowne wykorzystanie funkcji.
Architektura DenseNet121: DenseNet121 charakteryzuje się gęsto połączonymi warstwami, z których każda może uzyskać dostęp do map obiektów ze wszystkich poprzednich warstw. Taka konstrukcja optymalizuje przepływ informacji, zmniejsza nadmiarowość i znacznie poprawia ogólną wydajność modelu.
Architektura składa się z następujących kluczowych komponentów:
Warstwa wejściowa: Odbiera obrazy o rozmiarze zmienionym na 224 x 224 piksele w celu ustandaryzowanego przetwarzania.
Początkowa warstwa konwolucyjna: Stosuje operację konwolucji 7 x 7, po której następuje maksymalna pula w celu zmniejszenia wymiarów przestrzennych i wyodrębnienia obiektów niskiego poziomu.
Bloki gęste: Model zawiera cztery bloki o dużej gęstości. Każdy blok składa się z kilku warstw konwolucyjnych połączonych w gęsty sposób, co oznacza, że każda warstwa ma bezpośredni dostęp do danych wyjściowych wszystkich poprzednich warstw w bloku.
Warstwy przejściowe: Warstwy te, umieszczone między gęstymi blokami, wykonują splot 1 x 1, po którym następuje uśrednione łączenie w celu zmniejszenia wymiarów obiektów, poprawiając wydajność obliczeniową.
Globalna średnia pula (GAP): zmniejsza wymiary przestrzenne map obiektów przed w pełni połączonymi warstwami.
W pełni połączona warstwa: Tworzy wektor wyjściowy do klasyfikacji.
Warstwy niestandardowe do klasyfikacji: Na potrzeby tego badania domyślne, w pełni połączone warstwy zostały zastąpione niestandardową architekturą: warstwą spłaszczoną, trzema gęstymi warstwami (256, 128 i 64 neurony z aktywacją ReLU) oraz ostatnią warstwą aktywowaną sigmoidami do klasyfikacji binarnej.
Zdolność DenseNet121 do ponownego wykorzystania funkcji i jego kompaktowa architektura w znacznym stopniu przyczyniły się do jego doskonałej wydajności w zestawie danych dotyczących chorób liści ryżu. Ta wydajność, w połączeniu ze zdolnością do minimalizowania nadmiernego dopasowania, sprawia, że idealnie nadaje się do zadań z ograniczonymi danymi treningowymi. DenseNet121 osiągnął lepszą dokładność i uogólnienie niż inne modele dzięki ponownemu wykorzystaniu funkcji i właściwościom przepływu gradientu. Podczas gdy modele takie jak ResNet i VGG16 działały dobrze, DenseNet121 przewyższał je pod względem dokładności i wydajności obliczeniowej.
We wszystkich modelach uwzględniono trzy w pełni połączone (gęste) warstwy wykorzystujące funkcje aktywacji ReLU (jak pokazano w równaniu 1), których kulminacją była końcowa gęsta warstwa z aktywacją SoftMax (równanie 2), aby ułatwić klasyfikację wieloklasową. Ta adaptacja pozwoliła każdemu modelowi efektywnie wykorzystać wstępnie wytrenowane wagi podczas klasyfikowania obrazów w zestawie danych.
ReLu f(x) = max(0, X) (1)

gdzie xi oznacza dane wejściowe do funkcji SoftMax, dostosowane do klasyfikacji w dziesięciu kategoriach chorób liści ryżu. Unikalna architektura każdego modelu, w połączeniu z dostosowaną warstwą wyjściową, umożliwiła efektywne wyodrębnianie cech i dokładną klasyfikację obrazów.
Rysunek 5 przedstawia układ architektoniczny DenseNet121, prezentując płynny przepływ informacji przez jego gęste bloki, warstwy przejściowe i dostosowane warstwy klasyfikacyjne zintegrowane na potrzeby tych badań. Ten wizualny obraz wyjaśnia, w jaki sposób DenseNet121 obsługuje dane wejściowe obrazu i generuje dane wyjściowe przewidywania