2017-04-26 7 views
-3

Ich muss einige Bilder von Tropfen analysieren, die mit einem Mikroskop aufgenommen wurden, das einige Zellen enthalten kann. Was wäre das Beste, um es zu tun?Zellenerkennung mit Deep-Learning-Techniken

Jede Aufnahme von Bildern gibt ungefähr tausend Bilder zurück: jedes Bild enthält einen Tropfen und ich muss feststellen, ob der Tropfen eine Zelle hat oder nicht. Jeder Erfassungsdatensatz weist einen sehr unterschiedlichen Kontrast und eine unterschiedliche Helligkeit auf, und die Form der Zellen ist bei jeder Konfiguration aufgrund von Mikrovariationen des Fokus des Mikroskops leicht unterschiedlich.

Ich habe versucht, ein Klassifikationsmodell nach dem Leitfaden "TensorFlow for poets" zu erstellen und zwei Klassen zu definieren: leere Tropfen und Tropfen, die eine Zelle enthalten. Leider war das Ergebnis nicht erfolgreich.

Ich habe auch versucht, die Zellen zu markieren und zu einem Objekterkennungsalgorithmus mit DIGITS 5 geben, aber es erkennt nichts.

Ich habe mich gefragt, ob diese Algorithmen entworfen wurden, um komplexere Objekte zu erkennen, oder ob ich während des Setups etwas falsch gemacht habe. Jede Lösung oder ein Hinweis wäre hilfreich!

Vielen Dank!

This is a collage of drops from different samples: the cells are a bit different from every acquisition, due to the different setup and ambient lights

+0

Bevor Sie die Bilder in das Netzwerk einspeisen, müssen Sie einige Bildvorverarbeitungsschritte ausführen. Normalisierung ist ein Schlüsselaspekt –

+0

@JeruLuke was meinst du mit Normalisierung? Ich habe versucht, anderswo eine Antwort zu finden, aber ich konnte keine einzigartige Lösung finden. –

Antwort

0

Diese Art von Problem sein sollte auf jeden Fall möglich. Ich würde vorschlagen, mit einem Cifar 10 Convolutional Neural Network Tutorial zu beginnen und es für Ihr Problem anzupassen.

In zukünftigen Posts sollten Sie uns sagen, wie Ihr Training voranschreitet. Stellen Sie sicher, dass Sie die folgenden Informationen alle paar Schritte (möglicherweise alle 10 bis 100 Schritte) ausgeben:

  • Verlust/Kostenfunktionsausgabe, sollten Sie sehen, dass Ihr Verlust mit der Zeit abnimmt.
  • Klassifikationsgenauigkeit auf der aktuellen Charge von Trainingsdaten
  • Klassifikationsgenauigkeit auf einem Test-Set gehalten (wenn Sie Testset Auswertung implementiert haben, können Sie diese zweite implementieren)

Es gibt viele, viele, viele Dinge, die schiefgehen können, von schlechten Lernraten bis hin zu fehlerhaften Vorverarbeitungsschritten. Neuronale Netzwerke sind sehr schwer zu debuggen, sie sind sehr widerstandsfähig gegenüber Fehlern, was es schwer macht, sogar zu wissen, ob Sie einen Fehler in Ihrem Code haben. Aus diesem Grund stellen Sie sicher, dass Sie alles visualisieren.

Ein weiterer sehr wichtiger Schritt ist es, die Bilder genau zu speichern, während Sie sie an Tensorflow übergeben. Sie haben sie in einer Matrixform, Sie können diese Matrixform als Bild speichern. Tun Sie das unmittelbar vor übergeben Sie die Daten an Tensorflow. Stellen Sie sicher, dass Sie dem Netzwerk das geben, was Sie erwarten. Ich kann dir nicht sagen, wie oft ich und andere, die ich kenne, Müll unwissentlich in das Netzwerk weitergeleitet haben, das Schlimmste annehmen und dich als falsch erweisen!

Ihre nächste Post sollte wie folgt aussehen:

  • Ich
  • Mein Verlustfunktion (S-förmige Quer Entropie) abnimmt konsequent (zeigen Sie uns ein Bild eines Faltungs neuronales Netzwerk in tensorflow Ausbildung!)
  • Meine Eingangsbilder sehen wie folgt aus (zeigen Sie uns ein Bild von dem, was Sie tatsächlich mit dem Netzwerk FEED)
  • Meine Lernrate und andere Parameter sind A, B, und C
  • ich die Daten vorverarbeitet von M tun und N
  • die Genauigkeit das Netzwerk auf Trainingsdaten erzielt (und/oder Testdaten) ist Y

bei der Beantwortung dieser Fragen sind Sie wahrscheinlich 10 Probleme auf dem Weg zu lösen, und wir werden Ihnen helfen finde den 11. und mit etwas Glück den letzten. :)

Viel Glück!

+0

Vielen Dank für Ihre Antwort: es hat mir wirklich eine große Hilfe beim Start gegeben. Ich bin im Moment zurück zur Datenvorverarbeitung gegangen: Ich habe ein Skript gefunden und angepasst, um mein Dataset zu erweitern, aber ich finde keinen Weg, um die Bilder zu normalisieren, wie es scheint, dass jede Website/jeder Benutzer/Tutorial auf Das Web interpretiert "Bildnormalisierung" auf andere Weise ... irgendeinen Vorschlag? Ich verwende Matlab, um Bilder zu bearbeiten –

+0

Verwenden Sie einfach Tensorflow 'tf.image.per_image_standardization'. Füttern Sie es einfach als Uint8-Format (weniger CPU-> GPU-Transfer) als Tensorflow und konvertieren Sie es in 32-Bit und standardisieren Sie es in der Grafik. Andere Vorverarbeitungsschritte können Sie im cifar10 Tutorial sehen. Sie können Helligkeitsänderungen vornehmen, das Bild zufällig umdrehen, das Bild zufällig zuschneiden und verschieben usw. Alle diese Störungen sind vorteilhaft. –