Buffl

Machine Vision 2

CF
by Carina F.

Überwachtes Lernen

Klassifizierung:

kNN: k-NearestNeighbors-Algorithmus

vs

SVM: Support Vector Machine

Instance based learning: KNN

  • Instanzbasierter Algorithmus, der die nächsten Nachbarn (aus dem Trainingsdatensatz) eines neu eingegebenen Feature-Vektors im Raum der Feature-Vektoren betrachtet und die Klassifikation danach vornimmt, welcher Klasse die meisten der benachbarten Vektoren angehören

  • Modellparameter: es werden keine Modellparameter gelernt

  • Hyperparameter: Art der Abstandbestimmung (euklidischer Abstand oder Winkelabstand), Anzahl k der betrachteten Nachbarn. Wählt man k zu klein, dann kommt es bei verrauschten Daten zu Fehlklassifikationen, wählt man k zu groß, so können Strukturen in den Daten verloren gehen, siehe die folgende Abbildung zur Veranschaulichung

  • Voreinstellung in MatLab:

  • ”Optimizable kNN”:


Model based learning: SVM

  • Modellbasierter Algorithmus, der eine Trennlinie zwischen den Klassen im Feature-Raum so zieht, dass der Abstand zwischen der Trennlinie und dem am nächsten zur Trennlinie gelegenen Datenpunkt maximiert wird, siehe Veranschaulichung in der folgenden Abbildung.

  • Als Modellparameter werden die Parameter der passenden Geraden gelernt.

  • Zwei Probleme gilt es in der Anwendung zu lösen.

    1. Der Algorithmus muss modifiziert werden, wenn die Daten sich durch eine lineare Funktion trennen lassen, aber verrauscht sind. Dann lässt man zu, dass sich Datenpunkte in der ’leeren’ Zone um die Trennlinie befinden. Wie hoch man diese Datenpunkte in der Kostenfunktion einrechnet, ist dann ein weiterer Hyperparameter, der optimiert werden muss.

  1. Das zweite Problem sind Daten, die sich grundsätzlich nicht durch eine lineare Funktion trennen lassen. Hier verwendet man eine geeignete Abbildung der Originaldaten in einen oft in der Dimension erweiterten Raum, so dass sich die Daten besser separieren lassen


Erläutern Sie folgende Begriffe:

Neuron, Gewicht, Bias, Input Layer, Hidden layer, Output Layer, Fully Connected Layer (dense layer), Convolutional Layer, striding, padding, Pooling layer, Max Pooling, Average Pooling, Activation function, ReLU, Softmax

Neuron:

  • Neuron mit Gewichten, Bias und Aktivierungsfunktion

  • werden üblicherweise in Schichten (layers) angeordnet

Gewicht:

  • Das Grundelement eines Netzes, das Neuron (Abb. 1), besitzt mehrere Eingänge (xi) und einen Ausgang (yj ).

  • Die Eingaben werden mit einem Bias (b) und dem entsprechenden Gewicht (wi) multipliziert und danach aufsummiert.

  • Im Anschluss wird eine Aktivierungsfunktion darauf angewendet und ausgegeben.

Bias:

  • Bias wird mitgelernt (passt sich dem gelernten an oder wird selbstbestimmt)

  • Das Grundelement eines Netzes, das Neuron (Abb. 1), besitzt mehrere Eingänge (xi) und einen Ausgang (yj ).

  • Die Eingaben werden mit einem Bias (b) und dem entsprechenden Gewicht (wi) multipliziert und danach aufsummiert.

  • Im Anschluss wird eine Aktivierungsfunktion darauf angewendet und ausgegeben.

  • für alle verborgenen Neuronen in einer bestimmten Schicht gleich

  • Das bedeutet, dass alle verborgenen Neuronen das gleiche Merkmal, z. B. eine Kante oder einen Fleck, in verschiedenen Bildbereichen erkennen. Auf diese Weise ist das Netz tolerant gegenüber der Verlagerung von Objekten in einem Bild. Ein Netz, das beispielsweise auf die Erkennung von Autos trainiert ist, kann diese Aufgabe überall dort erfüllen, wo sich das Auto im Bild befindet.

Input Layer:

  • Anzahl entspricht Feature Anzahl (zum Beispiel: Helligkeit, Kontrast, …)

Hidden layer:

  • Verknüpfte Neuronen die zwischen dem Input Layer und Output Layer liegen

Output Layer:

  • Anzahl entspricht der Klassen die identifiziert werden sollen

Fully Connected Layer (dense layer):

  • Zusammenfassung aller Layer (Input, Hidden, Output Layer)

Convolutional Layer:

  • beinhaltet verschiedene Faltungskerne

  • Aus einem Bild werden mehrere Bilder, eines für jeden angewendeten Faltungskern

  • Die Aktivierungsfunktion wirkt auf die gefalteten Bilder

Striding:

  • Mit Faltungskern wird über das Bild gegangen und es wird zum Beispiel nur jede zweite Spalte verwendet (leicht verkleinerte Bilder entstehen)

  • Ändern der Schrittweite

Padding:

  • bekannt aus der linearen Filterung

  • zeigt ein Beispiel für ein Bild mit Padding 2. Padding erweist sich bei größeren Filtern als nützlich, weil es ermöglicht, den Rand eines Bildes besser zu erkennen

Pooling layer:

  • Pooling verkleinert die Datenmenge

Max Pooling:

  • Maximalster Wert aus kleiner Matrix wird genommen, um eine kleinere Gesamtmatrix zu bekommen

  • Pooling mit einem Filter der Größe 2 und Schrittweite 2

Average Pooling:

  • Das Average Pooling ist eine Pooling-Operation, bei der der Durchschnittswert für Bereiche einer Feature-Map berechnet und zur Erstellung einer verkleinerten (gepoolten) Feature-Map verwendet wird.

Activation function:

  • schaltet ein Neuron aktiv oder inaktiv, bewährt hat sich die ReLu-Funktion (Rectified Linear Unit)

ReLU:

  • schaltet ein Neuron aktiv oder inaktiv

Softmax:

  • Softmax-Funktion wird auf die Ergebnisse des Netzwerks angewendet, und wandelt diese in Wahrscheinlichkeiten für die jeweilige Klasse um.

  • Beispielanwendung der Softmax-Funktion, obere Reihe: Die Ergebnisse eines Klassifikators, untere Reihe: die Ergebnisse nach Anwendung der Softmax-Funktion


Was versteht man unter Gradient Descent?

Was versteht man unter Stochastic Gradient Descent?

Was versteht man unter Stochastic Gradient Descent with momentum?

Was ist ein ‘mini batch’?

Was bedeutet ‘epoch’?

Gradient Descent:

  • Anhand einer Steigungstangente, sieht man welche Seite nach oben und welche nach unten geht und läuft weiter Richtung Tal

  • Gradient zeigt in die Richtung des größten Anstiegs

  • Optimierungsverfahren, Man nähert sich dem Minimum, indem man die Parameter gemäß der Schrittweite in Richtung des negativen Gradienten (Richtung des steilsten Abstiegs) verändert.

  • Dies kann man sich anschaulich wie eine blinde Person vorstellen, die auf einem Berg steht, und einen im Tal gelegenen See erreichen möchte


Stochastic Gradient Descent:

  • Die Anpassung der Gewichte erfolgt nicht erst nach dem Durchlauf des gesamten Trainingsdatensatzes, sondern nach dem Durchlauf eines ’mini batches’, das ist ein Teil der Trainingsdaten

  • Gradient*Schrittweite


Stochastic gradient descent with momentum:

  • Bei einer Richtungsänderung wird eine gewisse Trägheit eingebaut. Das bringt den Vorteil, dass ein Plateau der Fehlerfunktion bzgl. eines Gewichts nicht zum Stillstand bei der Suche nach dem Minimum führt. Gleichzeitig darf das ’momentum’ nicht zu groß sein, damit die Suche nicht zu weit über das Minimum hinausläuft.

  • Gradient*Schrittweite+Gradient vor 5 Schritten, Schwung vom Abstieg mitnehmen um Plateau zu überwinden

Mini Batch:

  • Unterteilt die Trainingsdatensätze in ungefähr gleich große Gruppen und aktualisiert dann die synaptischen Gewichtungen jeweils nach dem Durchlauf einer Gruppe. Beim Mini-Batch-Training werden also Informationen aus einer Gruppe von Datensätzen verwendet.


Epoch:

  • bezeichnet einen vollständigen Durchlauf des Trainingsdatensatzes durch den Algorithmus.

  • Jedes Mal, wenn der Trainingsdatensatz den Algorithmus durchläuft, sagt man, dass er eine „Epoche“ abgeschlossen hat. Dies ist ein Hyperparameter, der den Trainingsprozess des Machine-Learning-Modells bestimmt.

  • Sie spiegelt die Anzahl der Durchläufe des Algorithmus während der Trainingsphase wider.


Was bedeuten die Matlab Trainings Optionen:

‘InitialLearnRate’: 0.01

‘LearRateSchedule’: piecewise

‘LearnRateDropPeriod’: 5

‘LearnRateDropFactor’: 0.2

‘Momentum’?: 0.9

Shuffle: once

Mini batch size: 64

Max epochs: 20

‘InitialLearnRate’:

  • Sagen wie weit das Netz gehen soll, um das Minimum zu finden (Anfangsschrittweite), Schrittweite [0.01]

‘LearRateSchedule’:

  • Plan festlegen wie sich die Lernrate verhalten soll im Laufe des Durchlaufs [piecewise]

‘LearnRateDropPeriod’:

  • Nach 5 Epochen wird die Schrittweite um 0.2 verkürzt [5]

‘LearnRateDropFactor’:

  • Schrittweite wird nach einiger Zeit verkürzt [Reduzierung der Schrittweite mit dem Faktor 0.2]

‘Momentum’:

  • Bei einem Plateau würde mit Gradientenverfahren nichts mehr passieren, mit Momentum wird ein gewisser “Schwung” mitgenommen und man kommt über das Plateau drüber weg [0.9]

‘Shuffle’:

  • Mischen der Trainingsdaten [once']

‘Mini batch size’:

  • Unterteilt die Trainingsdatensätze in ungefähr gleich große Gruppen und aktualisiert dann die synaptischen Gewichtungen jeweils nach dem Durchlauf einer Gruppe. Beim Mini-Batch-Training werden also Informationen aus einer Gruppe von Datensätzen verwendet. [64 Bilder = 1 MiniBatch]

‘Max epochs’:

  • bezeichnet einen vollständigen Durchlauf des Trainingsdatensatzes durch den Algorithmus.

  • Jedes Mal, wenn der Trainingsdatensatz den Algorithmus durchläuft, sagt man, dass er eine „Epoche“ abgeschlossen hat. Dies ist ein Hyperparameter, der den Trainingsprozess des Machine-Learning-Modells bestimmt.

  • Sie spiegelt die Anzahl der Durchläufe des Algorithmus während der Trainingsphase wider. [20 Epochen, Ist das Abbruchkriterium]


Erläutern Sie den Nutzen der Visualisierung durch CAM und Grad-CAM (Class Activation Mapping)?

Wie funktionieren die Verfahren?



CAM: Class Activation Mapping

  1. Wir wollen Zebras klassifizieren

  2. In letzter Faltungsschicht haben wir 2048 Bilder in der Größe 7x7

  3. Von jedem Bild ein letztes mal Global Average Pooling(GAP) um einen Featurewert zu bekommen

  4. Linearkombination: Bild1*Gewicht1+Bild2*Gewicht2+…

  5. Heraus kommt eine 7x7 Heatmap

  6. Heatmap auf Originalbildgröße skalieren und über das Originalbild legen

Ergebnisse der letzten Faltung -> Pooling um aus jedem Bild einen (Feature)-Wert zu machen -> Werte werden mit Gewichten aufaddiert und zu Klassen verbunden -> Klasse bekommt Wert -> nächste Klasse bekommt die gleichen Werte mit anderen Gewichten -> Klasse kann bestimmt werden -> in trainiertem Netz sind Gewichte fest-> um herrauszufinden wieso das Ergebnis kam wird im Netz zurückgegangen und auf die Gewichte geschaut-> erstes Gewicht *erstes Bild + zweites Gewicht* zweites Bild+…-> da kommt ein Bild raus (wenn Filter ausschlagen leuchtety die Stelle auf)-> dieses wird vergrößert und über das Originalbild gelegt

Nachteil: CAM kann nicht auf Netzwerke angewendet werden, die mehrere vollständig verbundene Schichten (fully connected layers) vor der Ausgabeschicht verwenden.


CAM erstellt eine Art Heat Map bei CNNs, bei denen die Ergebnisse der letzten Faltung gemittelt über eine Softmax-Funktion zur Klassifizierung verwendet werden. Hat die vorletzte Schicht k Feature-Maps A^k vom Format u×v, dann werden diese mithilfe von Global Average Pooling (GAP) gemittelt und linear kombiniert, um eine Punktzahl y^c für jede Klasse c zu erzeugen:

Das Ergebnis des Verfahrens ist eine Karte L^c CAM vom Format R^(u×v) für eine Klasse c. Dazu wird die Linearkombination der k Feature-Maps mit Gewichten w^c k der letzten Schicht gebildet:

Einschränkung des Verfahrens: CAM kann nicht auf Netzwerke angewendet werden, die mehrere vollständig verbundene Schichten (fully connected layers) vor der Ausgabeschicht verwenden.


GradCAM: Gradient-weighted Class Activation Mapping

  1. Bezieht Gradienteninformationen mit ein

  2. Gradient der Loss-Function bestimmt das Gewicht für die Featuremap der letzten Faltungsschicht

  3. Berechnung der Liniarkombination = 1 Heatmapbild

  4. Heatmap auf Originalbildgröße skalieren und über das Originalbild legen

Um eine entsprechende Karte auch für weitere CNN-Architekturen zu erhalten, berechnet man den Gradienten von y^c in Bezug auf Feature-Maps A einer Faltungsschicht, also

Aus der Mittelung dieser Gradienten werden die Gewichte α^c k bestimmt:

Dieser Wert erfasst den Einfluss der Feature-Map k für eine Zielklasse c und ersetzt den Wert w^c k im CAM-Verfahren. Außerdem wird noch eine ReLu- Funktion angewendet:


Praktikum

Wie funktioniert Object Detection (Yolo)?




Ein zentrales Ziel von YOLO ist die Echtzeit-Objekterkennung. Aufgrund seiner Eigenschaften als One-Stage Object Detector wird für den gesamten Prozess der Objekterkennung lediglich ein neuronales Netz verwendet, das pro Bild durchlaufen wird - das Bild wird dabei nur einmal betrachtet (You Only Look Once)

Beispiel Autos

  1. YOLO teilt das Bild zunächst in ein Raster ein. Der Einfachheit halber nehmen wir in diesem Beispiel ein Raster mit 4 x 4 Zellen.

  2. Jede Rasterzelle überprüft, ob sie ein Objekt (oder einen Teil davon) enthält und um welche Objektklasse es sich handelt. Ist ein Objekt vorhanden, zeichnet die Zelle zwei mögliche Begrenzungsrahmen darum.

  3. Zum Schluss werden die Begrenzungsrahmen auf einen pro Objekt reduziert. Übrig bleiben nur diejenigen, von denen das Modell glaubt, dass sie das Objekt am besten eingrenzen.

Jede Zelle muss entscheiden, ob sie ein Objekt enthält oder nicht, aber sehr kleine Objekte werden womöglich als Teil des Hintergrunds wahrgenommen und daher nicht als solche erkannt. 

Jede Zelle kann außerdem nur eine geringe Anzahl an Objekten umfassen. Befinden sich mehrere Objekte nah beieinander, erkennt YOLO daher mitunter nur eines davon.


Ablauf:

  1. Konfigurieren Sie einen Datensatz zum Trainieren, Validieren und Testen des YOLO v4-Objekterkennungsnetzwerks. Sie führen außerdem eine Datenerweiterung des Trainingsdatensatzes durch, um die Netzwerkeffizienz zu verbessern.

  2. Berechnen Sie Ankerboxen aus den Trainingsdaten, um sie zum Training des YOLO v4-Objekterkennungsnetzwerks zu verwenden.

  3. Erstellen Sie einen YOLO v4-Objektdetektor mit der Funktion yolov4ObjectDetector und trainieren Sie den Detektor mit der Funktion trainYOLOv4ObjectDetector.


Vorbereitung: Bilder und Boxen werden in zwei verschiedenen Ordnern gespeichert. Boxen werden in dem Array [linke obere Ecke x, linkere obere Ecke y, Länge x, Höhe y] gespeichert. Bilder werden “random” in Trainings-, Test- und Validierungsdaten in Ordnern mit einer gewissen Prozentzahl gespeichert. Passende Boxen werden in die jeweiligen Ordner geladen.


Training:

Daten von Box, Prozentzahl, Klasse


256 3x3x512 - 256 verschiedene Gewichtungen auf 512 Bilder, 3x3 Convolution Matrix, 512 Bilder in Tiefe auf die die Convolution angewendet wird (Endergebnis 256 modifizierte Bilder)

64 1x1x512 - 64 verschiedene Gewichtungen auf 512 Bilder (Endergebnis 64 modifizierte Bilder), 1x1 Convolution Matrix, 512 Bilder in Tiefe, pro Tiefe andere Gewichtung


First Detection Head ist halb so groß wie Second Head, Second Head kann besser kleine Objekte erkennen


matlab anchor boxes for object detection (erklärung für boxen)


Evaluierung:

Bewerten Sie den trainierten Objektdetektor anhand einer großen Anzahl von Bildern, um die Leistung zu messen. Verwenden Sie in diesem Beispiel die Metrik „average precision“, um die Leistung zu bewerten. Die durchschnittliche Präzision stellt eine einzelne Zahl dar, die die Fähigkeit des Detektors, korrekte Klassifizierungen vorzunehmen (Precision) und die Fähigkeit des Detektors, alle relevanten Objekte zu finden (Recall) berücksichtigt.


Praktikum

Was meint Bildregistrierung?

Multimodale Bildregistrierung (CT-Bilder mit MRT-Bildern kombinieren)


Bildregistrierung (auch Bildfusion) ist ein wichtiger Prozess in der digitalen Bildverarbeitung und wird dazu benutzt, zwei oder mehrere Bilder derselben Szene, oder zumindest ähnlicher Szenen, bestmöglich in Übereinstimmung miteinander zu bringen.


Registrierungsverfahren lassen sich in zwei Kategorien einordnen, die merkmalsbasierten und die flächenbasierten Verfahren. Bei den flächenbasierten Verfahren wird die Registrierung direkt mit den Intensitätswerten durchgeführt, es müssen keine Merkmale extrahiert werden.

Merkmalsextraktion:

  • Regionen: Als Regionenmerkmale eignen sich Flächen im Bild, die sich von den sie umgebenden Flächen deutlich abheben. Dies können in Satellitenbildern z. B. Seen sein. Regionen werden meist durch ihren Schwerpunkt repräsentiert und können durch Segmentierungsverfahren detektiert werden.

  • Linien: Linien oder Kanten können im Bild als Konturen von Regionen oder eben als Linien selbst vorhanden sein. Sie können durch die Paare ihrer Endpunkte oder ihren Mittelpunkt repräsentiert und mittels Kantendetektion extrahiert werden.

  • Punkte: Punkte können im Bild als Schnittpunkte von Linien oder Ecken von Konturen gegeben sein. Sie können durch Eckendetektoren extrahiert werden.

Beispiel:

Dieses Beispiel zeigt, wie Sie eine 3D-Segmentierung mithilfe aktiver Konturen (Schlangen) durchführen und die Ergebnisse mit der Volume Viewer-App anzeigen

Aufbau:

  1. Bereiten Sie die Daten vor

  2. Segmentieren Sie die Lunge

  3. Erstellen Sie eine Saatmaske und segmentieren Sie die Lunge mit activecontour

  4. Berechnen Sie das Volumen der segmentierten Lunge







Was sind SIFT Features?

Wo werden sie eingesetzt?



  1. Keypoint detektieren

  2. Faltungskern gibt Größe des Objektes

  3. Wenn Auge im Bild nicht erkannt wird, wird ein Größererer Faltungskern genutzt bis das Objekt erkannt wird

  4. Muss in kleinem und großem Bild erkannt werden

  5. Dann werden die Beiden Bilder skaliert auf die gleiche Größe

  6. Rotationsinvarianz schaffen durch Gradientenhistogramm

    • Gradient = Ein Vektor der senkrecht auf Höhenlinien steht

    • Gradient zeigt richtung Aufstieg (hell im Bild)

    • Helligkeitsunterschiede werden bestimmt (lineares Filter geht über das Bild und daraus kann man den Gradienten bestimmen, Sobel Filter)

  1. Orientierung des Bildes sieht man dadurch

  2. Dann können Bilder in die gleiche Position gedreht werden (Vorzugsrichtung). Rotations- und Skalierungsinvarianz ist gegeben

  3. Berechnung des Feature-Deskriptors

    • Bildgradienten werden berechnet

    • diese werden in 8 Richtungen zusammengefasst (in Orientierungshistogramm)

    • 4Descriptoren x 8Vektoren = 32 x4 = 128

    • Vektor mit 128 Einträgen

    • 3 Feature Vektoren für 2 Keypoints (zwei Orientierungen gefunden die beide markant sind deswegen 2 Feature Vektoren bei einem Keypoint)

  4. Bei Verzerrung des Bildes, sind die Features anders

  5. Was hat man davon?

    • Objekterkennung

      • Feature Matching

      • Feature Vektoren im Vektorraum, wo liegen die nah aneinander

      • Bsp Schachtel/ Elefanten im Bild erkennen (SURF, anders umgesetzter SIFT)

    • Bildklassifizierung

      • keine Objektpunkte detektieren sondern über Bag of Features klassifizieren

    • Geometrische Transformation

      • Kameramann letztes Semester


Praktikum

Wie funktioniert Klassifizierung mit Bag of Features (Bag of Visual words)?






























Ziel: ähnliche Bilder finden, Durchführung von Ortserkennungsaufgaben (Klassifikation)

Verfahren zur Klassifikation mithilfe von Features, z.B. den SIFT-Features, verwendet man ein Verfahren namens Bag of Features (auch Bag of Words).

Analogie: Dokumentenvergleich

1. Wörterbuch erstellen

  • Man kategorisiert die Bilder und erstellt Feature-Deskriptoren (Schlüsselpunkte detektieren oder Grid vorgeben). Man clustert die Feature-Vektoren (k-means Clustering) und definiert den Cluster-Schwerpunkt als visuelles Wort, also einen Eintrag im ”Wörterbuch”.

2. Histogramm erstellen (Anzahl des Vorkommens gegen alle Wörter aus dem Wörterbuch meistens mit k-means)

  • Veranschaulichung aus der genannten Matlab-Dokumentation

  • Man detektiert die Feature-Vektoren eines zu klassifizierenden Bilds und bestimmt jeweils den nächstgelegenen Vektor aus dem ’Wörterbuch’. Man zählt die Anzahl der visuellen Wörter und erstellt so ein Histogramm.

3. Histogramm als Vektor schreiben

  • Man interpretiert das Histogramm als Feature-Vektor, der wiederum als Eingangsgröße eines Klassifikationsalgorithmus verwendet wird (z.B. SVM, kNN).

4. Ähnlichkeitsmaß berechnen (hier: Winkel-basiert)



Dieses Beispiel zeigt, wie ein Ansatz mit vielen Funktionen für die Klassifizierung von Bildkategorien verwendet wird. Diese Technik wird oft auch als Bag of Words bezeichnet. Bei der visuellen Bildkategorisierung handelt es sich um einen Prozess, bei dem einem zu testenden Bild eine Kategoriebezeichnung zugewiesen wird. Kategorien können Bilder enthalten, die praktisch alles darstellen, zum Beispiel Hunde, Katzen, Züge, Boote.



Segmentierung für 3D Bilder:

ActiveContour

Anwendungsbeispiel: Segmentierung von 3D Daten in der Medizin (Bildgebendes Verfahren in der Medizin, Olaf Dössel)

Für semantic segmentation fehlen genug trainigsdaten


Bei der Segmentierung geht es darum, Grenzflächen zwischen unterschiedlichen Gewebearten in den Bildern automatisch zu finden. Auch diese Aufgabe ist inzwischen ein sehr weites Feld mit vielen unterschiedlichen Lösungsmöglichkeiten, dass es hier nur kurz gestreift werden kann. Die einfachste Methode zur Segmentierung ist das “Schwellwert Verfahren”, bei dem alle Pixel, deren Grauwerte sich in einem vorgegebenen Bereich befinden, zu einem Gebiet zusammengefasst werden. Rauschen und Abbildungsfehler führen leider dazu, dass bei diesem Verfahren eine große Zahl von falsch segmentierten Gebieten entstehen. Nur Knochen in Röntgenbildern zeigen einen von der Umgebung so unterschiedlichen Grauwert, dass sie mit dem Schwellwertverfahren gut gefunden werden können.


Ein besonders wichtiges Verfahren ist das Regionen-Wachstum. Hierbei wird ein Saatpunkt in ein zu segmentierendes Gebiet gesetzt. Dann wird für alle Nachbarn des Saatpunktes geprüft, ob die Grauwerte einen vorgegebenen Schwellenwert überschreiten oder nicht. Bleibt der Grauwert unter (bzw. über) der Schwelle, wird das Pixel zur Region hinzugeschlagen. Dann werden alle neuen Nachbarn der Region genauso behandelt wie oben. Das Verfahren wird solange fortgesetzt, bis alle Nachbarn entweder außerhalb vom Bildrand oder außerhalb der Grauwertschwelle liegen. So können einfach zusammenhängende Gebiete gefunden werden.

Problematisch ist, dass durch Rauschen oder Artefakte Grauwerte an einzelnen Randpunkten des gesuchten Gebietes zu niedrig liegen können und das “region growing” dort “ausläuft”. Die Bilder müssen vor der Segmentierung oft zur Rauschunterdrückung mit einem Gaußfilter geglättet werden. Dies führt aber dazu, dass auch die gesuchten Kanten nicht mehr so genau lokalisiert werden können.


Ein weiteres Segmentierungsverfahren arbeitet mit sog. “aktiven Konturen”. Bei 2D-Bildern spricht man auch von ”snakes”. Das sind vereinfacht ausgedrückt, Gummibänder, die so durch das Graustufengebirge des Gradientenbildes gelegt werden, dass ein Energieminimum erreicht wird. Bei 3D Bildern geht man entsprechend von verformbaren Gummiballons aus, die sich in die Kanten des zu segmentierenden Datensatzes einschmiegen. So können besonders zusammenhängende Gebiete gut segmentiert werden, auch wenn im Original-Datensatz kurze Abschnitte der Berandung nicht gut zu erkennen sind. Natürlich können alle die genannten Segmentierungsverfahrenn auch auf beliebig vorverarbeitete Daten angewendet werden. Dann gehen in die Entscheidung, ob z.B. beim Regionen-Wachstum ein Pixel zum Gebiet hinzugerechnet werden soll, auch die Grauwerte in der Nachbarschaft, die Textur oder das Histogramm über die Grauwerte der Nachbarvoxel mit ein.


Beispiel Coins: SegmentImageUsingActiveContourExample

Ziel: Konturen finden

1.Methode: edge method

  1. Startkontur wird nach bestimmten Verfahren vorgegeben

  1. schmiegt sich um Konturen herum an

2.Methode:

  1. Kontur vorgeben

  2. Kontur schrumpft um Konturen herum

Wikipedia:

Energy formulation

A simple elastic snake is defined by a set of n points v i for i = 0 , … , n − 1 , the internal elastic energy term E internal , and the external edge-based energy term E external . The purpose of the internal energy term is to control the deformations made to the snake, and the purpose of the external energy term is to control the fitting of the contour onto the image. The external energy is usually a combination of the forces due to the image itself E image and the constraint forces introduced by the user E con

The energy function of the snake is the sum of its external energy and internal energy, or


Internal energy

The internal energy of the snake is composed of the continuity of the contour Econt and the smoothness of the contour Ecurv.

Einternal=Econt+Ecurv

This can be expanded as

where α ( s ) and β ( s ) are user-defined weights; these control the internal energy function's sensitivity to the amount of stretch in the snake and the amount of curvature in the snake, respectively, and thereby control the number of constraints on the shape of the snake.

In practice, a large weight α ( s ) for the continuity term penalizes changes in distances between points in the contour. A large weight β ( s ) for the smoothness term penalizes oscillations in the contour and will cause the contour to act as a thin plate.


Image Energy

Energy in the image is some function of the features of the image. This is one of the most common points of modification in derivative methods. Features in images and images themselves can be processed in many and various ways.

For an image I ( x , y ) , lines, edges, and terminations present in the image, the general formulation of energy due to the image is

where w line, w edge, w term are weights of these salient features. Higher weights indicate that the salient feature will have a larger contribution to the image force.


Line functional:

The line functional is the intensity of the image, which can be represented as

E line = I ( x , y )

The sign of w line will determine whether the line will be attracted to either dark lines or light lines.

Some smoothing or noise reduction may be used on the image, which then the line functional appears as

E line = filter ⁡ ( I ( x , y ) )



Constraint energy

Some systems, including the original snakes implementation, allowed for user interaction to guide the snakes, not only in initial placement but also in their energy terms. Such constraint energy Econ can be used to interactively guide the snakes towards or away from particular features.


  1. Konturen sollen möglichst klein sein

  2. Kurven möglichst

Beispiel: SegmentLungsFrom3DChestScanExample


Ein weiterer Ansatz zur Segmentierung ist der Wasserscheiden-Algorithmus (water-shed-algorithm). Hier fasst man das Graustufenbild als ein Graustufengebirge auf und füllt es von unten her mit Wasser, zB. indem der Grundwasserspiegel schrittweise erhöht wird. Entsteht dabei ein neuer See, so bekommen alle Pixel die dazu benachbart sind, die gleiche Nummer. Stoßen bei der Schrittweisen Erhöhung der Schwelle zwei zusammenhängende Gebiete aneinander, so wird hier ein “Damm” errichtet, d.h. es wird eine Grenzfläche zwischen zwei Gebieten definiert. Der Wasserscheiden-Algorithmus hat das Problem, dass oft zu viele Gebiete als “verschieden” segmentiert werden, die eigentlich zusammengehören.





Praktikum

Was ist Semantic Segmentation?


https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7438418/

https://de.mathworks.com/solutions/image-video-processing/semantic-segmentation.html


Was ist Segmentierung?

was ist semantic segmentierung?

was sind zwei Verfahren? semantic segmentation & active contour

Wo findet es Anwendungen? autonomes fahren, medizinische anwendung

Wie ist der Workflow?



Getting Started with semantic segmentation using deep learning:

Die Segmentierung ist für Bildanalyseaufgaben unerlässlich. Semantische Segmentierung beschreibt den Prozess der Zuordnung jedes Pixels eines Bildes zu einer Klassenbezeichnung (z. B. Blume, Person, Straße, Himmel, Meer oder Auto).

Ein semantisches Segmentierungsnetzwerk klassifiziert jedes Pixel in einem Bild, was zu einem Bild führt, das nach Klassen segmentiert ist. Zu den Anwendungen der semantischen Segmentierung gehören die Straßensegmentierung für autonomes Fahren und die Segmentierung von Krebszellen für die medizinische Diagnose.

Applications for semantic segmentatiion include:

  • Autonomous driving

  • Industrial inspection

  • Classification of terrain visible in satellite imagery

  • Medical imaging analysis

Train and Test a Semantic Segmentation Network:

Die Schritte für das Training einer Semantic Segmentation sind folgende:

  1. Analysieren Sie Trainingsdaten für die semantische Segmentierung.

  2. Erstellen Sie ein semantisches Segmentierungsnetzwerk.

  3. Trainieren Sie ein semantisches Segmentierungsnetzwerk.

  4. Bewerten und überprüfen Sie die Ergebnisse der semantischen Segmentierung

Segment Objects Using Pretrained DeepLabv3+ Network

MathWorks GitHub repository provides implementations of the latest pretrained deep learning networks to download

Convolutional Neural Network for Image Segmentation



Fragen zur PDF: Hofmanninger

  1. Was bedeutet DSC (Dice similarity coefficient)?

  2. CT-Segmentierung: Atlas-basiert, Regel-basiert, ML-basiert, Hybridansätze?

  3. Wie wurden die Netzwerke trainiert?

  4. Was ist die Hauptaussage des Papers?

  5. Was ist ein Beipiel um etwas zu Segmentieren und wie heißt das Verfahren?


Paper ist nicht Lungenbasiert sondern Allgemein

  1. Ist eine Metrik zur Bewertung der Ähnlichkeit zwischen zwei Mengen. Im Kontext von Bildsegmentierung wird der DSC verwendet, um die Übereinstimmung zwischen der automatisch generierten Segmentierung (zum Beispiel durch einen Algorithmus) und der Ground-Truth-Segmentierung (die als Referenz gilt) zu quantifizieren. Der DSC liegt zwischen 0 und 1, wobei 0 für keine Übereinstimmung und 1 für eine perfekte Übereinstimmung steht

  2. Atlas-basiert: Dieser Ansatz verwendet ein vorher segmentiertes Referenzbild (Atlas), das an die Merkmale anderer Bilder angepasst wird, um die Segmentierung zu übertragen.

    Regel-basiert: Hier kommen vordefinierte Regeln und Algorithmen basierend auf Bildmerkmalen wie Intensität oder Gradienten zur Anwendung, um die Segmentierung zu steuern.

    ML-basiert: Diese Methode nutzt maschinelles Lernen, um Modelle zu trainieren, die automatisch Muster in den Bildern erkennen und für die Segmentierung von anatomischen Strukturen eingesetzt werden.

    Hybridansätze: Hybridansätze kombinieren verschiedene Methoden wie Atlas-basierte und ML-basierte Techniken, um die Vorteile unterschiedlicher Ansätze zu nutzen und die Robustheit der Segmentierung zu verbessern.

  3. Trainieren mit 5 verschiedenen Datensätzen auf 4 verschiedenen Modellen

  1. (1) Die Anwendung von ML-Ansätzen vom Labor zum Patienten erfordert vielfältige Trainingsdaten; (2) öffentlich verfügbare Studiendatensätze erfüllen diese Diversitätsanforderungen nicht; und (3) generische, semantische Segmentierungsalgorithmen sind für die Lungensegmentierung geeignet.

  2. Lungen/ Lungenvolumen detektieren mit Semantic Segmentation oder Active Contour
















  1. ist eine Statistik, die verwendet wird, um die Ähnlichkeit zweier Stichproben zu messen./ ist ein räumlicher Überlappungsindex und eine Metrik zur Validierung der Reproduzierbarkeit.

    IOU= Schnittmenge durch perfekte Schnittmenge einer Bounding Box

  2. Atlas basiert: Bilddatensatz wird mit Standarddatensatz überlagert und so wird herausgefunden wo die Lunge liegt. / Nutzen einen vorab erstellten anatomischen Referenz Atlas oder Modell, um strukturelle oder räumliche Informationen für die Analyse von medizinischen Bildern oder anderen Daten zu verwenden. (Mit Threshold) 

    (Das Verfahren gliedert sich in folgende Phasen: 1. Patienten- und Atlasdatensatz werden derselben Vorverarbeitung unterzogen. Der Atlasdatensatz wird affin auf den Patientendatensatz registriert; 2. Es werden einzelne äquidistante Konturpunkte der Atlassegmentierung ausgewählt; 3. Die Konturpunkte werden mittels Korrelationsverfahren auf den Patientendatensatz übertragen; 4. Das Kostenbild des Patientendatensatz wird berechnet; 5. Ausgehend von den übertragenen Saatpunkten wird das Segmentierungsverfahren durchgeführt.)


    Regel basiert: Verwenden vordefinierte Regeln und Logik, um Entscheidungen zu treffen oder Daten zu verarbeiten.


    ML basiert: Verwenden Algorithmen, die auf Trainingsdaten lernen und Muster erkennen, um automatisch Entscheidungen zu treffen oder komplexe Aufgaben zu erfüllen. Beispiel fürs Netz: U-Net


    Hybridansätze: Kombinieren verschiedene Techniken, wie zum Beispiel regelbasierte und maschinenlernbasierte Methoden, um die Vorteile unterschiedlicher Ansätze zu nutzen.

  3. Trainieren mit 5 verschiedenen Datensätzen auf 4 verschiedenen Modellen

  1. Zusammenfassend haben wir gezeigt, dass eine genaue Lungensegmentierung keine komplexe Methodik erfordert und dass eine bewährte Deep-Learning-basierte Segmentierungsarchitektur hochmoderne Ergebnisse liefert, sobald diverse (aber nicht unbedingt größere) Trainingsdaten zur Verfügung stehen verfügbar sind. Durch den Vergleich verschiedener Datensätze für das Training der Modelle haben wir die Bedeutung der Vielfalt der Trainingsdaten veranschaulicht und gezeigt, dass Daten aus der klinischen Routine gut auf unbekannte Kohorten verallgemeinert werden können, was den Bedarf an öffentlichen Datensätzen verdeutlicht, die speziell für die Lungensegmentierung kuratiert werden. Wir ziehen die folgenden Schlussfolgerungen: (1) Die Übertragung von ML-Ansätze vom Labor zum Krankenbett kann die Sammlung vielfältiger Trainingsdaten statt methodische Änderungen; (2) aktuelle, öffentlich verfügbare öffentlich zugängliche Studiendatensätze erfüllen nicht die Anforderungen; und (3) generische, semantische Segmentierungsalgorithmen sind für die Aufgabe der Lungen Segmentierung. Ein zuverlässiges, universelles Werkzeug zur Lungen Segmentierung der Lunge ist von grundlegender Bedeutung für die Forschung zu schweren Lungenkrankheiten und zur Untersuchung klinischen Datensätzen.

  2. Auf vorhandenen Datensatz wurde ground truth verwendet. Mit den daraus entstanden Bilder wurde ein Netz trainiert, dass selbstständig Bilder labeln. Die daraus entstanden Bilder wurden von 4 Personen mit 2-6 Jahren Erfahrung kontrolliert. Danach wurden die Bilder wieder zum anlernen genutzt. Dies geschah mehrfach, wodurch das Labeln schneller vorran ging (20-30 Verbesserungen waren nötig). ITK-Snap wurde verwendet (ähnlich dem Programm mit dem wir die Lungen aus CT Bildern genommen haben)



  3. Lungen/ Lungenvolumen detektieren mit Semantic Segmentation oder Active Contour



Author

Carina F.

Information

Last changed