Projektarbeit Optische überprüfung von Äpfeln auf Faulanteil

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
Loknar
Posts: 4
Joined: Wed 29. Apr 2009, 11:04

Projektarbeit Optische überprüfung von Äpfeln auf Faulanteil

Post by Loknar »

Hallo,
ich versuche mich im Moment zwecks einer Projektarbeit im Rahmen eines Master-Studiengangs an Mebrain.
Die Grundlagen glaube ich ganz gut verstanden zu haben, jedoch stoße ich immer auf kleinere Probleme und bin mir noch unsicher wie man richtig an die Problemstellung herangehen sollte.

Nun kurz zu dem Projekt:
Ich habe Lebensmitteltechnologie studiert und muss im Master ein Projekt bearbeiten (Laut meinem Betreuer etwa Aufwand einer halbe Master-arbeit).
Mein Betreuer ist im Fachgebiet Agrartechnik und das Projekt in dem ich mitarbeite dreht sich um Apfel-Aussortierung. Es wird an einer Anlage geforscht, die Äpfel zerstörungsfrei und ohne optische Mittel anhand ihres Faulheitsgrads aussortieren kann. Hierfür werden Äpfel zum Faulen gebracht und mit der Anlage vermessen. Jedoch wird nach jeder Messung der Faul-anteil des Apfels zur Überprüfung aus dem Apfel ausgekratzt und somit wird der Apfel zerstört.

Nun zu meinem Teil in diesem Projekt:
Damit man den Fäulnissverlauf der Äpfel beobachten kann, darf man die Äpfel nicht zerstören, also habe ich erst einmal versucht mithilfe von optischer Analyse die Faul-stellen an der Oberfläche der Äpfel zu vermessen. Hierfür habe ich mithilfe einer Kamera und eines Drehtellers mit Stellmotor in einem einheitlich beleuchtetem Kasten den Apfel von allen Seiten fotografiert und füge die einzelnen Ausschnitte des Apfels zu einem "Gesamt-Panorama" zusammen (Die Software für Foto+Drehen+Panorama habe ich in Labview erstellt und die Messung dauert ca 1min pro Apfel).

Leider korreliert dies nur bedingt mit dem Faul-anteil des Apfels, da ich das Fortschreiten des Fäulnis-Verlaufs ins Innere des Apfels nicht sehen kann. Also habe ich noch andere Werte die ich schnell und zerstörungsfrei aufnehmen konnte gesammelt. Dies sind Lagerdauer, Anfangsgewicht, Gewichtsverlust und Apfelsorte.

Nun habe ich ein einfaches ANN mit Optischer Faul-Anteil, Lagerdauer, Anfangsgewicht, Gewichtsverlust und Apfelsorte als Inputs und wirklicher Faulanteil als Output erstellt. Ich habe Messdaten von 200 Äpfel und habe 150 zum anlernen und 50 zum überprüfen des Netzes genommen. Erste versuche mit dem ANN sehen sehr vielversprechend aus, aber ich bin mir mit meiner Herangehensweise noch nicht sicher.

Gibt es irgendeine Empfohlene Herangehensweise, die man beim erstellen eines ANN einhalten sollte (z.B. sich bei der Hidden-Layer anzahl hocharbeiten, oder verschiedenste Teacher ausprobieren) und wie stellt man das herangehen dann in der Arbeit dar. Ich habe z.B. eine Quelle gefunden in der die verschiedenen Korrelationen und Fehler (RMSE, SE etc.) für verschiedene Teacher, Transfer Funktionen und Anzahl der Neuronen angegeben wurden, aber die Verbindungsart der Neuronen und die Anzahl der hidden Layers wurde nicht verändert. Ist so eine Vorgehensweise Empfehlenswert? Gibt es noch andere Möglichkeiten die Qualität eines Netzes anzugeben?

Zudem habe ich immer mal kleinere Probleme mit dem Teacher:
Ab und zu passiert es, dass der Teacher Anfangs einen relativ kleinen Net Error erreicht (z.B. 0,13) und dann plötzlich der Net Error wieder rapide steigt (z.B. >3) und sich nicht mehr verbessert. Zudem habe ich immer mal das Problem, dass wenn ich das Netz gut angelernt habe (Net Error 0,1) und überprüfen will (Ich lade die 50 Testwerte per Lessen Editor und drücke Evaluate Net) bekomme ich einen wesentlich höheren Net Error (z.B. 0,5). Nehme ich dann wieder die Lerndaten und überprüfe das Netz ist der Net Error auch wesentlich höher obwohl ich nichts am Netz geändert habe. (Mache ich hier irgendeinen Fehler?)

Vielen Dank auch schon einmal an Thomas Jetter, dass er dieses einfach zu bedienende und tolle Programm zur Verfügung gestellt hat.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Projektarbeit Optische überprüfung von Äpfeln auf Faulanteil

Post by Admin »

Hallo,

kurze Frage vorneweg: Hast Du schon die anderen Threads in diesem Forum gelesen? Da könnten einige interessante Infos dabei sein, auch wenn natürlich jedes Projekt wieder anders ist.
Loknar wrote:Gibt es irgendeine Empfohlene Herangehensweise, die man beim erstellen eines ANN einhalten sollte (z.B. sich bei der Hidden-Layer anzahl hocharbeiten, oder verschiedenste Teacher ausprobieren)
Eine gute Herangehensweise ist, zunächst einmal nur einen Hidden-Layer zu verwenden, Anzahl der Neuronen würde ich halb so groß wählen, wie Du Inputs hast (also 2-3 Hidden-Neuronen in Deinem Fall). Meist liegt man damit schon ziemlich gut, und weitere Versuche bringen nur selten viel Verbesserung.

Bzgl. des Teachers:
Der in den meisten Fällen beste Teacher ist RPROP. Nur selten erreicht man mit Backprop-Momentum bessere Trainingsergebnisse und immer dauert das Training damit wesentlich länger.

Bzgl. Aktivierungsfunktionen: Nimm für Hidden- und Outputneuronen 'LOGISTIC', ich habe damit die besten Erfahrungen gemacht. Manchmal ist allerdings auch TAN-HYP besser, eine Regel gibt es auch hier nicht. Ist also auf jeden Fall einen Versuch Wert.
Loknar wrote:Zudem habe ich immer mal kleinere Probleme mit dem Teacher:
Ab und zu passiert es, dass der Teacher Anfangs einen relativ kleinen Net Error erreicht (z.B. 0,13) und dann plötzlich der Net Error wieder rapide steigt (z.B. >3)
Das kann abhängig von Daten und Netz passieren, ja. Meist aber tritt das auf, wenn man zu lange trainiert.
Ich würde Dir empfehlen, beim Training nicht primär auf den Net Error bzgl. der Trainingsdaten zu schauen, sondern Dir gleich während des Trainings den Net-Error bzgl. der Validierungsdaten anzusehen. Das kann man manuell machen (dazu steht hier auch das eine oder andere im Forum). Am meisten würde ich Dir aber das 'Basis-Skript' von Seppy hier aus dem Forum ans Herz legen (siehe Forum Skripte & Co). Dieses kannst Du leicht auf Deine Bedürfnisse anpassen und damit hast Du einen schönen, reproduzierbaren Trainings- und Validierungsablauf, Abbruchkriterien getrennt nach Net-Error, Zeit und Lesson-Durchläufen einstellbar. Hast Du irgendwelche Programmierkenntnisse? Viel musst Du definitiv nicht machen, nur Seppys Skript ein bisschen anpassen wie im Kommentar oben im Skript beschrieben und dann laufen lassen. Kann ich nur wärmstens empfehlen!
Loknar wrote:Zudem habe ich immer mal das Problem, dass wenn ich das Netz gut angelernt habe (Net Error 0,1) und überprüfen will (Ich lade die 50 Testwerte per Lessen Editor und drücke Evaluate Net) bekomme ich einen wesentlich höheren Net Error (z.B. 0,5). Nehme ich dann wieder die Lerndaten und überprüfe das Netz ist der Net Error auch wesentlich höher obwohl ich nichts am Netz geändert habe. (Mache ich hier irgendeinen Fehler?)
Das kann an der Einstellung 'Use On-The-Fly Net Error Calculation if possible' des Teachers liegen. Mach' bitte hier mal das Häkchen weg.
Wenn diese Option gesetzt ist, dann darf der Teacher etwas 'tricksen', was das Training erheblich beschleunigt:
Normalerweise müsste der Teacher nach jedem Trainings-Durchlauf der Lesson die ganze Lesson nochmal durchgehen und für jeden Eingangsdatensatz die Netzausgänge berechnen, um den Net-Error zu bestimmen. Wenn allerdings die Trainingslesson und die Lesson, für die der Net-Error berechnet werden soll, identisch sind und dieses Häkchen gesetzt ist, dann darf der Teacher den Net-Error etwas ungenauer bestimmen, indem er die einzelnen Errors, die während des Teach-Durchlaufs berechnet werden, aufsummiert. Dieser Net Error entspricht natürlich nicht ganz der Wahrheit, da das Netz sich ja während des Trainings verändert. Wenn diese Veränderungen signifikant sind, dann kann die Abweichung zwischen dem Error während des Trainings und dem 'Evaluate Net Error' groß werden.
Also: Option deaktivieren und schauen, wie es dann aussieht. Außerdem solltes Du sicherstellen, dass die Auswahl 'Lesson Pattern Selection' des Teachers auf 'Random Order' steht. Damit wewrden die Daten beim Training in zufälliger Reihenfolge präsentiert, was insgesamt zu besseren Ergebnissen bzgl. der Generalisierungsfähigkeit des Netzes führt.

PS: Kannst Du noch mehr als 200 Datensätze auftreiben? 1000 wären besser ;)

Viele Grüße
Thomas Jetter
Loknar
Posts: 4
Joined: Wed 29. Apr 2009, 11:04

Re: Projektarbeit Optische überprüfung von Äpfeln auf Faulanteil

Post by Loknar »

Danke für die Antworten,
ich werde mal die Einstellungen am Teacher verändern/überprüfen.

habe mir einige Threads hier im Forum durchgelesen bzw angelesen. Besonders der Prozessoptimieren Thread von jojo war sehr Hilfreich.
Seppys scripte habe ich auch schon ausprobiert, Traintime.as funktioniert recht gut. Jedoch bei Base.as bekomme ich folgenden Fehler:

Code: Select all

Compiling and Starting Script:
d:\eigene dateien\MemBrain\Base.as

d:\eigene dateien\MemBrain\Base.as (206, 1) : ERR  : Unexpected token '<unrecognized token>'
d:\eigene dateien\MemBrain\Base.as (209, 1) : ERR  : Unexpected token '<unrecognized token>'

2 Error(s).
0 Warning(s):

Unable to execute script!
Zeile 206 von Base.as ist

Code: Select all

#include "NetEditor.as";
und Zeile 209 von Base.as ist

Code: Select all

#include "SecondsTimer.as";
Beide Dateien sind im selben Ordner wie die Base.as (Wie Anfangs in der Base.as beschrieben).

Edit: Neuinstallieren von Membrain hat den Fehler behoben. Das Base.as script läuft jetzt auch ohne Probleme :D
Hast Du irgendwelche Programmierkenntnisse?
Leider nur in Labview (Graphische Programmiersprache). Kann damit aber zu mindestens die Membrain.dll ansprechen. Sprich Netz laden, Inputs übergeben, Denkschritt ausführen und Output abfragen.
PS: Kannst Du noch mehr als 200 Datensätze auftreiben? 1000 wären besser ;)
Die Daten sind über ca 1 Monat gesammelt worden, da man ja unterschiedliche Fäulnis-grade erreichen wollte. Um die Daten also gleichmäßig aufzufüllen bräuchte ich nochmal 1 Monat, diese Zeit habe ich leider nicht mehr :(
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Projektarbeit Optische überprüfung von Äpfeln auf Faulanteil

Post by Admin »

Loknar wrote:Edit: Neuinstallieren von Membrain hat den Fehler behoben. Das Base.as script läuft jetzt auch ohne Probleme :D
Nur neuere Versionen von MemBrain unterstützen alle Skript-Elemente (wie z.B. das Inkludieren von weiteren Skriptdateien. Wahrscheinlich hattest Du eine ältere Version installiert, die das noch nicht unterstützt hat.
Loknar wrote:Um die Daten also gleichmäßig aufzufüllen bräuchte ich nochmal 1 Monat, diese Zeit habe ich leider nicht mehr :(
Dann versuch' es einfach mit den 200, ist besser als Nichts...


Viele Grüße
Thomas Jetter
Post Reply