Plantenziekten detecteren met behulp van machinaal leren - Ajarnpa
Plantenziekten detecteren met behulp van machinaal leren - Ajarnpa
Anonim
Plantenziekten detecteren met behulp van machinaal leren
Plantenziekten detecteren met behulp van machinaal leren

Het proces van het opsporen en herkennen van zieke planten is altijd een handmatig en moeizaam proces geweest waarbij mensen het plantenlichaam visueel moeten inspecteren, wat vaak tot een onjuiste diagnose kan leiden. Er is ook voorspeld dat als de wereldwijde weerspatronen beginnen te variëren als gevolg van klimaatverandering, gewasziekten waarschijnlijk ernstiger en wijdverspreider zullen worden. Daarom is het belangrijk om systemen te ontwikkelen die gewassen snel en eenvoudig analyseren en een bepaalde ziekte identificeren om verdere gewasschade te beperken.

In deze Instructable zullen we een machine learning-concept verkennen dat bekend staat als "Transfer Learning" om afbeeldingen van zieke rijstplanten te classificeren. Dezelfde methode kan worden gebruikt voor elk ander beeldclassificatieprobleem.

Stap 1: Soorten rijstziekten

Soorten rijstziekten
Soorten rijstziekten

Rijst is een van de meest populaire basisvoedselgewassen die voornamelijk in Azië, Afrika en Zuid-Amerika wordt verbouwd, maar is vatbaar voor een verscheidenheid aan plagen en ziekten. Fysieke kenmerken zoals verkleuring van bladeren kunnen worden gebruikt om verschillende ziekten te identificeren die de rijstoogst kunnen aantasten. In het geval van Brown-Spot, een schimmelziekte die de beschermende omhulling van de bladeren aantast, zijn de bladeren bijvoorbeeld bedekt met verschillende kleine ovale bruine vlekken met grijze centra, terwijl in het geval van Leaf-Blast de bladeren bedekt zijn met grotere bruine laesies. Evenzo kunnen de bladeren die zijn aangetast door de Rice Hispa-plaag worden geïdentificeerd door de lange sporen die zich op het oppervlak van het blad ontwikkelen.

Stap 2: Hoe hebben eerdere methoden ziekten gedetecteerd?

Hoe hebben eerdere methoden ziekten gedetecteerd?
Hoe hebben eerdere methoden ziekten gedetecteerd?

Eerdere methoden voor het automatisch classificeren van afbeeldingen van zieke planten, zoals op regels gebaseerde classificaties zoals gebruikt in [1], vertrouwen op een vaste set regels om het blad te segmenteren in aangetaste en niet-aangetaste gebieden. Sommige regels voor het extraheren van kenmerken omvatten het observeren van de verandering in het gemiddelde en de standaarddeviatie tussen de kleur van de getroffen en niet-aangetaste regio's. Regels voor het extraheren van vormkenmerken omvatten het afzonderlijk plaatsen van verschillende primitieve vormen bovenop het getroffen gebied en het identificeren van de vorm die het maximale gebied van het getroffen gebied beslaat. Nadat de kenmerken uit de afbeeldingen zijn geëxtraheerd, wordt een reeks vaste regels gebruikt om de afbeeldingen te classificeren, afhankelijk van de ziekte die de plant mogelijk heeft aangetast. Het belangrijkste nadeel van een dergelijke classificator is dat er verschillende vaste regels voor elke ziekte nodig zijn, waardoor deze op zijn beurt gevoelig kan zijn voor gegevens met ruis. De bovenstaande afbeeldingen laten zien hoe een op regels gebaseerde beslissingsboom kan worden gebruikt om de afbeelding in twee regio's te segmenteren.

1. Santanu Phadikar et al., "Rijstziekteclassificatie met behulp van functieselectie en technieken voor het genereren van regels", Computers en elektronica in de landbouw, vol. 90, jan. 2013.

Stap 3: Leren overdragen

Leren overdragen
Leren overdragen

De beeldclassificatietechniek die in deze Instructables wordt beschreven, maakt gebruik van de basisstructuur van een CNN die bestaat uit verschillende convolutionele lagen, een poollaag en een laatste volledig verbonden laag. De convolutionele lagen fungeren als een set filters die de hoogwaardige kenmerken van de afbeelding extraheren. Max-pooling is een van de gebruikelijke methoden die worden gebruikt bij het poolen van lagen om de ruimtelijke grootte van de geëxtraheerde objecten te verkleinen, waardoor de rekenkracht die nodig is om de gewichten voor elke laag te berekenen, wordt verminderd. Ten slotte worden de geëxtraheerde gegevens door een volledig verbonden laag geleid, samen met een softmax-activeringsfunctie die de klasse van de afbeelding bepaalt.

Maar het helemaal opnieuw trainen van aangepaste CNN's levert mogelijk niet de gewenste resultaten op en kan een zeer lange trainingstijd hebben.

Om de kenmerken van de trainingsafbeeldingen te leren, gebruiken we een methode genaamd Transfer Learning, waarbij de 'top'-lagen van een vooraf getraind model worden verwijderd en vervangen door lagen die de kenmerken kunnen leren die specifiek zijn voor de trainingsdataset. Transfer learning vermindert de trainingstijd in vergelijking met modellen die willekeurig geïnitialiseerde gewichten gebruiken. Onze methode maakt gebruik van zes verschillende vooraf getrainde modellen, namelijk AlexNet, GoogLeNet, ResNet-50, Inception-v3, ShuffleNet en MobileNet-v2.

De afbeelding toont de GoogLeNet-architectuur waarbij blauw wordt gebruikt voor convolutionele lagen, rood voor het poolen van lagen, geel voor softmax-lagen en groen voor concat-lagen. Je kunt hier meer leren over de innerlijke werking van een CNN.

De rijstziektedataset bestaat uit afbeeldingen van bladeren van zowel gezonde als zieke rijstplanten. De afbeeldingen kunnen worden onderverdeeld in vier verschillende klassen, namelijk Brown-Spot, Rice Hispa, Leaf-Blast en Healthy. De dataset bestaat uit 2092 verschillende afbeeldingen, waarbij elke klasse 523 afbeeldingen bevat. Elke afbeelding bestaat uit een enkel gezond of ziek blad dat tegen een witte achtergrond is geplaatst.

We splitsen de beelddataset op in trainings-, validatie- en testbeeldsets. Om overfitting te voorkomen, vergroten we de trainingsafbeeldingen door de trainingsafbeeldingen te schalen en om te draaien om het totale aantal trainingsvoorbeelden te vergroten.

De code en afhankelijkheden zijn open-source en kunnen hier worden gevonden: GitHub-code

Voor verschillende beeldclassificatietoepassingen kunnen we eenvoudig de trainingsbeeldgegevensset wijzigen.

Stap 4: Het model trainen

Het model trainen
Het model trainen
Het model trainen
Het model trainen
Het model trainen
Het model trainen

Afhankelijk van de geheugengrootte die elk model nodig heeft, worden de vooraf getrainde modellen onderverdeeld in grotere en kleinere modellen. De kleinere modellen verbruiken minder dan 15 MB en zijn daarom beter geschikt voor mobiele toepassingen.

Van de grotere modellen had Inception-v3 de langste trainingstijd van ongeveer 140 minuten, terwijl AlexNet de kortste trainingstijd had van ongeveer 18 minuten. Van de kleinere mobiel georiënteerde modellen had MobileNet-v2 de langste trainingstijd van ongeveer 73 minuten, terwijl ShuffleNet de kortste trainingstijd had van ongeveer 38 minuten.

Stap 5: Het model testen

Het model testen
Het model testen
Het model testen
Het model testen
Het model testen
Het model testen

Van de grotere modellen had Inception-v3 de hoogste testnauwkeurigheid van ongeveer 72,1%, terwijl AlexNet de laagste testnauwkeurigheid had van ongeveer 48,5%. Van de kleinere mobiel-georiënteerde modellen had MobileNet-v2 de hoogste testnauwkeurigheid van 62,5%, terwijl ShuffleNet de laagste testnauwkeurigheid had van 58,1%.

MobileNet-v2 presteerde aanzienlijk goed bij het classificeren van afbeeldingen van Brown-Spot, Leaf-Blast en Healthy bladeren, terwijl het verschillende verkeerde classificaties maakte voor Rice Hispa met een nauwkeurigheid van slechts 46,15%.

Inception-v3 liet vergelijkbare classificatieresultaten zien als MobileNet-v2.

Stap 6: Aanvullende tests

Aanvullende tests
Aanvullende tests
Aanvullende tests
Aanvullende tests

De afbeelding hierboven laat zien hoe het MobileNet-v2-model een afbeelding van een grasblad tegen een witte achtergrond verkeerd classificeert als Rice Hispa.

We hebben ook de nauwkeurigheid van MobileNet-v2 getest op bijgesneden afbeeldingen van Rice Hispa waarbij de witte achtergrond geminimaliseerd was, zodat het blad een maximaal gebied binnen de afbeelding inneemt. Voor bijgesneden afbeeldingen van Rice Hispa hebben we een nauwkeurigheid van ongeveer 80,81% waargenomen, d.w.z. voor bijgesneden afbeeldingen van Rice Hispa zagen we een significante toename in de classificatienauwkeurigheid ten opzichte van niet-gecoupeerde testmonsters. Daarom stellen we voor dat real-world implementaties van rijstziektedetectie met behulp van convolutionele neurale netwerken de testafbeeldingen moeten bijsnijden om achtergrondruis te verwijderen om de nauwkeurigheid te verbeteren.