Objekterkennung Erkennen und regieren. Teil 2


In einem früheren Beitrag begann ich, die zweistufigen Objekterkennungsmodelle zu verstehen und sprach über die grundlegendsten und dementsprechend die ersten - R-CNN . Heute schauen wir uns andere Modelle dieser Familie an: Fast R-CNN und Faster R-CNN . Gehen!

Schnelle r-cnn


Da R-CNN ein langsames und nicht sehr effizientes Netzwerk ist, schlugen dieselben Autoren ziemlich schnell eine Verbesserung in Form eines schnellen R-CNN- Netzwerks vor.

Der Bildverarbeitungsprozess hat sich geändert und sieht folgendermaßen aus:

  1. Extrahieren einer Karte mit Bildattributen (nicht für jede Hypothese einzeln, sondern für das gesamte Bild);
  2. Hypothesensuche (ähnlich wie R-CNN basierend auf Selective Search);
  3. – .. ( );
  4. ( , SVM-).

RoI layer


Im ursprünglichen R-CNN-Konzept wird jede vorgeschlagene Hypothese einzeln mit CNN verarbeitet - dieser Ansatz ist zu einer Art Engpass geworden. Um dieses Problem zu lösen, wurde eine Region of Interest (RoI) -Schicht entwickelt . Mit dieser Ebene können Sie das gesamte Bild einmal über das neuronale Netzwerk verarbeiten und am Ausgang eine Feature-Map empfangen, die dann zur Verarbeitung jeder Hypothese verwendet wird.

Die Hauptaufgabe des RoI-Layers besteht darin, die Koordinaten von Hypothesen (Koordinaten des Begrenzungsrahmens) mit den entsprechenden Koordinaten der Feature-Map zu vergleichen. Der RoI-Layer erstellt einen „Slice“ aus der Feature-Map und speist ihn in die Eingabe des vollständig verbundenen Layers ein, um anschließend die Klasse zu bestimmen und die Koordinaten zu korrigieren (siehe folgende Abschnitte).

Es stellt sich eine logische Frage: Wie können Hypothesen unterschiedlicher Größe und Seitenverhältnisse auf die Eingabe einer vollständig verbundenen Schicht angewendet werden? Dazu wird eine RoI-Ebene benötigt, die das Bild mit Dimensionen konvertiertIh×Iw in der GrößeOh×Ow . Dazu müssen Sie das Originalbild in ein Größenraster unterteilenOh×Ow (Zellgröße ungefährIhOh×IwOw ) und wählen Sie aus jeder Zelle die maximale Anzahl.

Angenommen, es gibt eine 5 × 5-Feature-Map und die gewünschte Hypothese auf dieser Map hat Koordinaten (1,1,4,5) (die ersten beiden Koordinaten sind die obere linke Ecke, die letzten beiden sind die untere rechte Ecke). Die nachfolgende vollständig verbundene Schicht erwartet eine 4 × 1-Dimension (d. H. Eine längliche 2 × 2-Matrix). Dann teilen wir die Hypothese in ungleiche Blöcke unterschiedlicher Dimensionen (die Pooling-Phase) und nehmen die maximale Anzahl in jeder von ihnen (die Pooling-Phase und als Ergebnis die Ausgabestufe).


Auf diese Weise wird es möglich, das gesamte Bild zu verarbeiten und dann mit jeder Hypothese auf der Grundlage einer Feature-Map zu arbeiten.

Gesamt:

  • Eingabe: Koordinaten der Hypothese und eine Karte der Merkmale des Originalbildes;
  • Ausgabe: Vektordarstellung der Hypothese.

Vollständig verbundene Schicht und ihre Ausgänge


In der vorherigen Version von R-CNN wurden separate SVM-Klassifizierer verwendet. In derselben Implementierung wurden sie durch eine SoftMax-Dimensionsausgabe ersetzt Nc+1. Es wird angemerkt, dass der Genauigkeitsverlust weniger als 1% beträgt.

Die Ausgabe der Regressoren wird mit NMS (Non-Maximum Suppression) verarbeitet.

Gesamt:

  • Eingabe: Vektordarstellung der Hypothese;
  • Ausgabe: Wahrscheinlichkeiten der zu Klassen gehörenden Hypothese und Korrekturen der Koordinaten des Begrenzungsrahmens.

Multitasking-Verlust


Beim gleichzeitigen Training des Netzwerks wird eine spezielle Verlustfunktion für die Aufgaben der Regression des Begrenzungsrahmens und der Klassifizierung verwendet:

L(P,u,tu,v)=Lcls(P,u)+λ[u1]Lloc(tu,v)


Hier:

  • λnotwendig, um das Gleichgewicht zwischen den beiden Funktionen anzupassen (die verwendeten Autorenλ = 1);
  • uist die richtige Klasse;
  • Lclssind die Fehlerfunktionen für die KlassifizierungLcls(P,u)=logPu;
  • LlocSmoothL1- v=(vx,vy,vw,vh)tu=(txu,tyu,twu,thu):

    SmoothL1={12x2,if|x|<1|x|12,otherwise


    Hier, bezeichnet die Differenz zwischen dem Zielwert und der Vorhersagextiuvi. Eine solche Funktion kombiniert die Vorteile der Funktionen L1 und L2, da sie bei großen Werten stabil istx und nicht viel Geldstrafen für kleine Werte.


Ausbildung


Zur besseren Konvergenz verwendeten die Autoren den folgenden Ansatz zur Bildung der Charge:

  1. Die Anzahl der Hypothesen im Stapel wird ausgewählt R.
  2. Zufällig ausgewählt NBilder.
  3. Für jeden von Naufgenommene Bilder RNHypothesen (d. h. gleichmäßig über jedes Bild).

Gleichzeitig sind in R sowohl positive (25% der gesamten Charge) als auch negative (75% der gesamten Charge) Hypothesen enthalten. Hypothesen, die sich mit der korrekten Position des Objekts um mehr als 0,5 (IoU) überlappen, werden als positiv angesehen. Negative werden gemäß der Hard Negative Mining-Regel genommen - den fehlerhaftesten Fällen (solche mit IoU im Bereich [0,1,0,5]).

Darüber hinaus argumentieren die Autoren, dass mit den ParameternN=2 und R=128Das Netzwerk lernt um ein Vielfaches schneller als mit N=128und R=128(d. h. eine Hypothese von jedem Bild).

Schneller r-cnn


Eine weitere logische Verbesserung ist eine Möglichkeit, die Abhängigkeit vom Selective Search-Algorithmus zu beseitigen. Dazu stellen wir das gesamte System als eine Zusammensetzung von zwei Modulen dar - die Definition von Hypothesen und deren Verarbeitung. Das erste Modul wird mithilfe des Region Proposal Network (RPN) implementiert , und das zweite Modul ähnelt Fast R-CNN (beginnend mit der RoI-Schicht).

Daher hat sich diesmal der Prozess der Arbeit mit dem Bild geändert und geschieht nun folgendermaßen:

  1. Entfernen einer Karte von Bildmerkmalen mithilfe eines neuronalen Netzwerks;
  2. Generierung basierend auf der erhaltenen Karte der Zeichen von Hypothesen - Bestimmung der ungefähren Koordinaten und des Vorhandenseins eines Objekts einer Klasse;
  3. Vergleich der Hypothesenkoordinaten unter Verwendung des RoI mit einer im ersten Schritt erhaltenen Merkmalskarte;
  4. Klassifizierung von Hypothesen (bereits für die Definition einer bestimmten Klasse) und zusätzliche Verfeinerung von Koordinaten (tatsächlich gilt dies möglicherweise nicht).

Die Hauptverbesserung erfolgte genau dort, wo die Hypothesen erstellt wurden - jetzt gibt es dafür ein separates kleines neuronales Netzwerk, das als Region Proposal Network bezeichnet wurde .


Region Proposal Network


Das ultimative Ziel dieses Moduls ist es, den Selective Search-Algorithmus vollständig zu ersetzen. Für einen schnelleren Betrieb sind gemeinsame Gewichte in einem Netzwerk erforderlich, das die erforderlichen Attribute extrahiert. Daher ist der RPN-Eingang eine Feature-Map, die nach diesem Netzwerk erhalten wird. Die Autoren des Originalartikels verwenden das VGG16-Netzwerk, um Features zu extrahieren, deren Ausgabe als letzte Faltungsschicht betrachtet wird - conv5_3. Ein solches Netzwerk weist die folgenden Eigenschaften des Empfangsfeldes auf :

  • Effektive Kompression (effektive Schritte, S0): Sechszehn
  • Rezeptive Feldgröße r0): 196

Dies bedeutet, dass die Feature-Map 16-mal kleiner als die ursprüngliche Bildgröße ist (die Anzahl der Kanäle beträgt 512), und jeder Wert in seinen Zellen wird von den Pixeln des Originalbilds beeinflusst, die in einem 196 × 196-Rechteck liegen. Es stellt sich also heraus, dass bei Verwendung der Standardeingabe VGG16 224 × 224 fast das gesamte Bild die Wertbildung der zentralen Zelle der Feature-Map (14.14) beeinflusst! Basierend auf der empfangenen Feature-Map wird RPN für jede Zelle erzeugtk Hypothesen (in der ursprünglichen Implementierung k=9) verschiedene Größen und Seitenverhältnisse. Für die Standardgröße sind dies also 14 × 14 × 9 = 1764 Hypothesen!

Basierend auf dem Bild unten betrachten wir den Algorithmus des RPN-Moduls genauer (klickbares Bild):


  1. Holen Sie sich eine Feature-Map c×H16×W16aus dem vorherigen Schritt.
  2. Wir tragen eine 3 × 3-Faltungsschicht auf (die Einkerbung ist gleich eins - die endgültige Matrix ändert sich nicht in der Größe). Anscheinend wird dieser Schritt von den Autoren verwendet, um das Empfangsfeld weiter zu erhöhen (P0=106, r0=228)

  • Zelle (i,j) Feature Map entspricht dem Dimensionsvektor c(in unserem Fall 512).

  1. Für jeden solchen Vektor sind zwei Faltungsschichten mit einem Kern von 1 × 1 und der Anzahl von Ausgangskanälen anwendbar c^(Ein Kernel dieser Größe zeigt einfach die Dimension an cbeim c^):
    1. Die erste Schicht ( cls ) hat einen Parameterc^=2k – - ( 2 ).
    2. (reg) c^=4k– .

    , k×2k×4. , i.

Es stellt sich eine logische Frage: Wie können die absoluten Koordinaten von Hypothesen aus dem Vektor bestimmt werden, der in die Reg-Schicht eintritt? Die Antwort ist einfach - auf keinen Fall. Für die korrekte Bestimmung von Koordinaten ist es notwendig, die sogenannten Anker und Korrekturen an ihren Koordinaten zu verwenden.

Ein Anker ist ein Viereck mit verschiedenen Seitenverhältnissen (1: 1, 2: 1, 1: 2) und Größen (128 × 128, 256 × 256, 512 × 512). Das Zentrum des Ankers ist das Zentrum der Zelle (i,j) Kartenschilder. Nehmen wir zum Beispiel eine Zelle (7,7), deren Mittelpunkt die Werte (7,5,7,5) sind, die den Koordinaten (120,120) des Originalbildes (16 × 7,5) entsprechen. Vergleichen Sie mit diesen Koordinaten die Rechtecke mit drei Seitenverhältnissen und drei Größen (insgesamt 3 × 3 = 9). In Zukunft wird die Registrierungsschicht geeignete Änderungen in Bezug auf diese Koordinaten erzeugen, wodurch die Position und Form des Begrenzungsrahmens angepasst werden.

Gesamt:

  • Eingabe: Karte der Merkmale des Originalbildes;
  • Ausgabe: Hypothesen, die ein Objekt enthalten.

Verlustfunktion


Für das RPN-Training wird die folgende Klassennotation verwendet:

  • Positiv sind alle Anker mit einem Schnittpunkt (IoU) von mehr als 0,7 oder dem größten Schnittpunkt unter allen Ankern (gilt, wenn es keinen Schnittpunkt von mehr als 0,7 gibt).
  • Negativ sind alle Anker mit einem Schnittpunkt von weniger als 0,3.
  • Alle anderen Anker nehmen nicht am Training teil (tatsächlich sind sie neutral).

Also die Klasse piAnker werden nach folgender Regel vergeben:

pi={1ifIoU>0.70ifIoU<0.3nothingotherwise


Mit einer solchen Notation wird die folgende Funktion minimiert:

L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NlocipiLreg(ti,ti)


Hier:

  • i- Ankernummer;
  • pi- die Wahrscheinlichkeit, das Objekt in zu finden iAnker;
  • pi- die korrekte Klassennummer (oben angegeben);
  • ti- 4 vorhergesagte Korrekturen der Koordinaten;
  • ti- erwartete (Grundwahrheits-) Korrekturen an den Koordinaten;
  • Lcls(pi,pi)- binärer Protokollverlust;
  • Lreg(ti,ti)- SmoothL1-Verlust. Nur aktiviert wennpi=1d.h. wenn die Hypothese mindestens ein Objekt enthält;
  • {pi}und {ti}- Ergebnisse der Klassifizierungs- bzw. Regressionsmodelle;
  • λ- Koeffizient zur Anpassung des Gleichgewichts zwischen Klassifikation und Regression.

Beide Teile des kombinierten Verlusts normalisieren sich auf Nclsund Nlocbeziehungsweise. Die Autoren verwendetNcls gleich der Größe der Mini-Charge (256) und Nlocgleich der Anzahl der Anker.

Um Korrekturen am Begrenzungsrahmen rückgängig zu machen, werden die Werte wie folgt initialisiert und berechnet:

tx=(xxa)wa,tx=(xxa)wty=(yya)ha,ty=(yya)hatw=logwwa,tw=logwwath=loghha,th=loghha


Hier x, y, wund hGeben Sie die Mitte, Breite und Höhe des Begrenzungsrahmens an. Variablenx, xund xabezeichnen Vorhersage, Grundwahrheit und die Bedeutung von Ankern (z y, wund hähnlich).

Das Training auf der vollständigen Liste der Anker wird eine Tendenz zur negativen Klasse haben (es gibt viel mehr Hypothesen mit dieser Klasse). In dieser Hinsicht wird die Mini-Charge in einem 1: 1-Verhältnis von positiven zu negativen Ankern gebildet. Wenn es nicht möglich ist, die entsprechende Anzahl positiver Anker zu finden, wird die Mini-Charge mit Hilfe negativer Klassen ergänzt.

Allgemeines Netzwerktraining


Das Hauptziel ist die gemeinsame Verwendung von Skalen zwischen den beiden Modulen - dies erhöht die Arbeitsgeschwindigkeit. Da es unmöglich (oder eher schwierig) ist, zwei unabhängige Module gleichzeitig zu trainieren, verwenden die Autoren des Artikels einen iterativen Ansatz:

  1. Schulung des RPN-Netzwerks. Faltungsschichten werden mit Gewichten initialisiert, die zuvor während des Trainings auf ImageNet erhalten wurden. Wir werden uns erneut mit der Definition von Regionen mit einer beliebigen Klasse befassen (die Spezifikation der Klasse ist Teil von Fast R-CNN).
  2. Schnelles R-CNN-Netzwerk trainieren. Wie in Schritt 1 initialisieren wir Fast R-CNN mit den Gewichten, die zuvor während des Trainings auf ImageNet erhalten wurden. Wir trainieren mit Hypothesen über Objekte unter Verwendung des in Punkt 1 geschulten RPN-Netzwerks. Dieses Mal besteht die Aufgabe des Trainings darin, die Koordinaten zu klären und eine bestimmte Klasse des Objekts zu bestimmen.
  3. Mit den Gewichten aus S. 2 trainieren wir nur den RPN-Teil (Schichten, die zu den RPN-Netzwerken des Feature-Extraktors gehen, sind eingefroren und ändern sich überhaupt nicht).
  4. Unter Verwendung der Gewichte ab S. 3 (dh des fein abgestimmten RPN) trainieren wir die Ebenen für Fast R-CNN (die verbleibenden Gewichte - diejenigen, die früher gehen oder mit RPN zusammenhängen - werden eingefroren).

Mit Hilfe eines solchen iterativen Trainings stellt sich heraus, dass das gesamte Netzwerk auf den gleichen Maßstäben aufgebaut ist. Sie können das Netzwerk weiterhin nach diesem Prinzip trainieren, die Autoren stellen jedoch fest, dass die Metriken keine wesentlichen Änderungen aufweisen.

Vorhersageprozess


Wenn Sie neuronale Netze für Vorhersagen verwenden, sieht die Bildausbreitung folgendermaßen aus:

  1. Das Bild tritt in die Eingabe des neuronalen Netzwerks ein und erzeugt eine Merkmalskarte.
  2. Jede Zelle der Merkmalskarte wird unter Verwendung von RPN verarbeitet, wobei als Ergebnis der Korrektur die Position der Anker und die Wahrscheinlichkeit des Vorhandenseins eines Objekts einer beliebigen Klasse angegeben werden.
  3. Die entsprechenden vorhergesagten Rahmen basieren dann weiter auf der Merkmalskarte und der RoI-Schicht zur weiteren Verarbeitung des Fast R-CNN-Teils.
  4. Am Ausgang erhalten wir eine bestimmte Klasse von Objekten und deren genaue Position im Bild.

Zusammenfassende Unterschiede


Hier ist eine kurze Zusammenfassung der Modelle untereinander (Grundideen werden von den Jüngeren an die Älteren vererbt):

R-CNN:

  • Verwenden der selektiven Suche als Hypothesengenerator.
  • Verwendung von SVM + Ridge zur Klassifizierung und Regression von Hypothesen (außerdem ist deren Parallelbetrieb nicht möglich).
  • Ausführen eines neuronalen Netzwerks, um jede Hypothese einzeln zu verarbeiten.
  • Langsame Geschwindigkeit.

Schnelles R-CNN:

  • Ein neuronales Netzwerk wird nur einmal pro Bild gestartet - alle Hypothesen werden auf der Grundlage einer einzelnen Feature-Map getestet.
  • Intelligente Verarbeitung von Hypothesen unterschiedlicher Größe aufgrund der RoI-Schicht.
  • Ersetzen von SVN durch eine SoftMax-Ebene.
  • Die Möglichkeit einer parallelen Arbeitsklassifizierung und Regression.

Schnelleres R-CNN:

  • Hypothesengenerierung mit einem speziellen, separat differenzierbaren Modul.
  • Änderungen in der Bildverarbeitung im Zusammenhang mit dem Aufkommen des RPN-Moduls.
  • Das schnellste dieser drei Modelle.
  • Es ist eines der genauesten bis heute.

Fazit


Zusammenfassend können wir sagen, dass die Entwicklung von R-CNN von unterschiedlichen Algorithmen, die ein Problem lösen, zu einer einzigen End-to-End-Lösung übergegangen ist. Mit dieser Kombination können Sie fast jeden Ansatz genauer und produktiver gestalten. Die Objekterkennung war keine Ausnahme.

Referenzliste


  1. R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Rich feature hierarchies for accurate object detection and semantic segmentation.» In CVPR, 2014. arXiv:1311.2524
  2. R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Region-based convolutional networks for accurate object detection and segmentation.» TPAMI, 2015
  3. R. Girshick, «Fast R-CNN,» in IEEE International Conference on Computer Vision (ICCV), 2015.
  4. S. Ren, K. He, R. Girshick, and J. Sun, «Faster R-CNN: Towards real-time object detection with region proposal networks,» in Neural Information Processing Systems (NIPS), 2015.

All Articles