Objekterkennung Erkennen und regieren. Teil 1



Die Computer-Vision-Technologie ermöglicht es in der heutigen RealitÀt, Leben und GeschÀft einfacher, billiger und sicherer zu machen. Nach Ansicht verschiedener Experten wird sich dieser Markt in den kommenden Jahren nur in Richtung Wachstum bewegen, was die Entwicklung geeigneter Technologien in Richtung ProduktivitÀt und QualitÀt ermöglicht. Einer der beliebtesten Abschnitte ist die Objekterkennung (Objekterkennung) - die Definition eines Objekts im Bild oder im Videostream.

Die Zeiten, in denen die Erkennung von Objekten ausschließlich durch klassisches maschinelles Lernen (Kaskaden, SVM ...) gelöst wurde, sind bereits vorbei - jetzt herrschen in diesem Bereich AnsĂ€tze vor, die auf Deep Learning basieren. 2014 wurde ein Ansatz vorgeschlagen, der die spĂ€tere Forschung und Entwicklung in diesem Bereich maßgeblich beeinflusst - das R-CNN-Modell. Seine nachfolgenden Verbesserungen (in Form von Fast R-CNN und Faster R-CNN) machten es zu einem der genauesten, was bis heute zum Grund fĂŒr seine Verwendung geworden ist.

Neben R-CNN gibt es viele weitere AnsĂ€tze, die nach Objekten suchen: die Yolo-Familie, SSD, RetinaNet, CenterNet ... Einige von ihnen bieten einen alternativen Ansatz, wĂ€hrend andere den aktuellen Ansatz zur Erhöhung des Leistungsindikators entwickeln. Eine Diskussion ĂŒber fast jeden von ihnen kann aufgrund der FĂŒlle an Chips und Tricks in einem separaten Artikel veröffentlicht werden :)

Zum Studium schlage ich eine Reihe von Artikeln mit der Analyse von zweistufigen Objekterkennungsmodellen vor. Die FÀhigkeit, ihr GerÀt zu verstehen, vermittelt ein VerstÀndnis der Grundideen, die in anderen Implementierungen verwendet werden. In diesem Beitrag werden wir die grundlegendsten und dementsprechend die erste von ihnen betrachten - R-CNN.

Terminologie


Der Begrenzungsrahmen - die Koordinaten, die einen bestimmten Bereich eines Bildes begrenzen - meist in Form eines Rechtecks. Es kann durch 4 Koordinaten in zwei Formaten dargestellt werden: zentriert (cx,cy,w,h) und regelmĂ€ĂŸig (xmin,ymin,xmax,ymax)

Hypothese (Vorschlag), P - ein bestimmter Bereich des Bildes (angegeben mit dem Begrenzungsrahmen), in dem sich das Objekt angeblich befindet.

End-to-End-Schulung - Schulung, bei der Rohbilder am Netzwerkeingang ankommen und vorgefertigte Antworten ausgegeben werden.

IoU (Intersection-over-Union) - Metrik des Schnittgrads zwischen zwei Begrenzungsrahmen.

R-CNN


Einer der ersten AnsÀtze zur Bestimmung der Position eines Objekts in einem Bild ist R-CNN (Region Convolution Neural Network). Die Architektur besteht aus mehreren aufeinander folgenden Schritten und ist in Abbildung 1 dargestellt:

  1. Definieren einer Reihe von Hypothesen.
  2. Extrahieren von Merkmalen aus potenziellen Regionen unter Verwendung eines Faltungs-Neuronalen Netzwerks und Codieren dieser in einen Vektor.
  3. Die Klassifizierung eines Objekts innerhalb einer Hypothese basierend auf dem Vektor aus Schritt 2.
  4. Verbesserung (Anpassung) der Koordinaten der Hypothese.
  5. Alles wiederholt sich ab Schritt 2, bis alle Hypothesen aus Schritt 1 verarbeitet sind.

Betrachten Sie jeden Schritt genauer.



Hypothesensuche


Mit einem bestimmten Bild am Eingang zerfĂ€llt es als erstes in kleine Hypothesen unterschiedlicher GrĂ¶ĂŸe. Die Autoren dieses Artikels verwenden die selektive Suche - auf oberster Ebene können Sie eine Reihe von Hypothesen zusammenstellen (die Klasse des Objekts spielt noch keine Rolle), basierend auf der Segmentierung, um die Grenzen von Objekten nach PixelintensitĂ€t, Farbdifferenz, Kontrast und Textur zu bestimmen. Gleichzeitig stellen die Autoren fest, dass jeder Ă€hnliche Algorithmus verwendet werden kann. So fallen ca. 2.000 verschiedene Regionen auf, die sich teilweise ĂŒberlappen. FĂŒr eine genauere nachfolgende Verarbeitung wird jede Hypothese in allen vier Richtungen um 16 Pixel erweitert - als wĂŒrde sie einen Kontext hinzufĂŒgen .

Gesamt:

  • Eingabe: Originalbild.
  • Ausgabe: Eine Reihe von Hypothesen unterschiedlicher GrĂ¶ĂŸe und SeitenverhĂ€ltnisse.

Bildcodierung


Jede Hypothese aus dem vorherigen Schritt tritt unabhÀngig und getrennt voneinander in die Eingabe des Faltungs-Neuronalen Netzwerks ein. Da es die Architektur von AlexNet ohne die letzte Softmax-Schicht nutzt. Die Hauptaufgabe des Netzwerks besteht darin, das eingehende Bild in eine Vektordarstellung zu codieren, die aus der letzten vollstÀndig verbundenen FC7- Schicht extrahiert wird. Die Ausgabe ist also eine 4096-dimensionale Vektordarstellung.

Sie können feststellen, dass die Eingabe von AlexNet eine Dimension von 3 × 227 × 227 hat und die GrĂ¶ĂŸe der Hypothese nahezu jedes SeitenverhĂ€ltnis und jede GrĂ¶ĂŸe haben kann. Dieses Problem wird umgangen, indem die Eingabe einfach auf die gewĂŒnschte GrĂ¶ĂŸe komprimiert oder gedehnt wird.

Gesamt:

  • Eingabe: Jede im vorherigen Schritt vorgeschlagene Hypothese.
  • Ausgabe: Vektordarstellung fĂŒr jede Hypothese.

Einstufung


Nachdem der die Hypothese charakterisierende Vektor erhalten wurde, wird seine weitere Verarbeitung möglich. Um festzustellen, welches Objekt sich in der beabsichtigten Region befindet, verwenden die Autoren die klassische SVM-basierte Klassifizierungsmethode fĂŒr Trennebenen (Support Vector Machine - eine Support Vector Machine, die mithilfe des Scharnierverlusts modelliert werden kann ). Und das sollte es auch seinNc+1 individuell (hier, Ncbezeichnet die Anzahl der definierten Klassen von Objekten, und eine Einheit wird hinzugefĂŒgt, um den Hintergrund separat zu bestimmen) von Modellen, die nach dem OvR-Prinzip trainiert wurden (Eins gegen Ruhe - eins gegen alle, eine der Methoden der Klassifizierung mehrerer Klassen). TatsĂ€chlich wird das Problem der binĂ€ren Klassifizierung gelöst - gibt es eine konkrete Klasse eines Objekts innerhalb der vorgeschlagenen Region oder nicht? Der Ausweg ist alsoNc+1-dimensionaler Vektor, der das Vertrauen in eine bestimmte Klasse des in der Hypothese enthaltenen Objekts darstellt (der Hintergrund wird historisch durch die Nullklasse bezeichnet,Ci=0)

Gesamt:

  • Eingabe: Der Vektor jeder der vorgeschlagenen Hypothesen aus der vorletzten Schicht des Netzwerks (im Fall von AlexNet ist dies FC7).
  • Ausgabe: Nach dem sequentiellen Starten jeder Hypothese erhalten wir eine Dimensionsmatrix 2000×NcDarstellen der Klasse des Objekts fĂŒr jede Hypothese.

Angabe von Hypothesenkoordinaten


Die in Schritt 1 erhaltenen Hypothesen enthalten nicht immer die richtigen Koordinaten (z. B. kann ein Objekt erfolglos "beschnitten" werden), daher ist es sinnvoll, sie zusĂ€tzlich zu korrigieren. Laut den Autoren bringt dies zusĂ€tzliche 3-4% zu den Metriken. Hypothesen, die ein Objekt enthalten (das Vorhandensein eines Objekts wird im Klassifizierungsschritt bestimmt), werden also zusĂ€tzlich durch lineare Regression verarbeitet. Das heißt, Hypothesen mit der Klasse "Hintergrund" erfordern keine zusĂ€tzliche Verarbeitung von Regionen, da dort tatsĂ€chlich kein Objekt vorhanden ist ...

Jedes Objekt, das fĂŒr seine Klasse spezifisch ist, hat bestimmte GrĂ¶ĂŸen und SeitenverhĂ€ltnisse. Daher ist es logisch, fĂŒr jede Klasse einen eigenen Regressor zu verwenden .

Im Gegensatz zum vorherigen Schritt verwenden die Autoren keinen Vektor aus der FC7- Ebene, damit die Eingabe am besten funktioniertund Feature-Maps, die aus dem letzten MaxPooling-Layer extrahiert wurden (in AlexNet, MaxPool5Dimension 256 × 6 × 6). Die ErklĂ€rung lautet wie folgt: Der Vektor speichert Informationen ĂŒber das Vorhandensein eines Objekts mit einigen charakteristischen Details, und die Feature-Map speichert am besten Informationen ĂŒber den Standort von Objekten.

Gesamt:

  • Eingabe: Eine Zuordnung von Attributen aus der letzten MaxPooling-Ebene fĂŒr jede Hypothese, die ein beliebiges Objekt außer dem Hintergrund enthĂ€lt.
  • Ausgabe: Korrekturen an den Koordinaten des Begrenzungsrahmens der Hypothese.

Hilfstricks


Bevor wir mit den Details des Modelltrainings fortfahren, werden wir zwei notwendige Tricks betrachten, die wir spÀter benötigen werden.

Bezeichnung positiver und negativer Hypothesen


Beim Unterrichten mit einem Lehrer ist immer ein gewisses Gleichgewicht zwischen den Klassen erforderlich. Das Gegenteil kann zu einer schlechten Klassifizierungsgenauigkeit fĂŒhren. Wenn beispielsweise in einer Stichprobe mit zwei Klassen die erste nur in wenigen Prozent der FĂ€lle auftritt, ist es fĂŒr das Netzwerk schwierig zu lernen, wie sie ermittelt wird, da sie als Ausreißer interpretiert werden kann. Bei Objekterkennungsaufgaben gibt es genau ein solches Problem - im Bild mit einem einzelnen Objekt enthalten nur wenige Hypothesen (ab ~ 2000) genau dieses Objekt (Ci>0) und alle anderen sind der Hintergrund (Ci=0)

Nehmen wir die notwendige Notation: Hypothesen, die Objekte enthalten, werden als positiv (positiv) und ohne Objekte (die nur den Hintergrund oder einen unbedeutenden Teil des Objekts enthalten) als negativ (negativ) bezeichnet.

Um anschließend den Schnittpunkt zwischen den beiden Bildbereichen zu bestimmen, wird die Metrik Schnittpunkt ĂŒber Union verwendet . Es wird als recht einfach angesehen: Die SchnittflĂ€che zweier Regionen wird durch die GesamtflĂ€che der Regionen geteilt. In der Abbildung unten sehen Sie Abbildungen von Beispielen fĂŒr die MetrikzĂ€hlung.



Bei positiven Hypothesen ist alles klar - wenn die Klasse falsch definiert ist, mĂŒssen Sie mit einer Geldstrafe belegt werden. Aber was ist mit dem Negativen? Es gibt viel mehr als positive ... ZunĂ€chst stellen wir fest, dass nicht alle negativen Hypothesen gleich schwer zu erkennen sind. Beispielsweise sind FĂ€lle, die nur den Hintergrund enthalten ( leicht negativ ), viel einfacher zu klassifizieren als FĂ€lle, die ein anderes Objekt oder einen kleinen Teil des gewĂŒnschten Objekts enthalten ( hart negativ ).

In der Praxis werden leichtes Negativ und hartes Negativ durch den Schnittpunkt des Begrenzungsrahmens (gerade verwendete Schnittmenge ĂŒber Union) mit der korrekten Position des Objekts im Bild bestimmt. Wenn es beispielsweise keine Kreuzung gibt oder diese extrem klein ist, ist dies leicht negativ (Ci=0) wenn groß schwer negativ oder positiv ist.

Der Hard Negative Mining- Ansatz schlĂ€gt vor, nur hartes Negativ fĂŒr das Training zu verwenden, da wir, nachdem wir gelernt haben, sie zu erkennen, automatisch die beste Arbeit mit einfachen negativen Hypothesen erzielen. Eine solche Ideologie wird jedoch nur in nachfolgenden Implementierungen angewendet (beginnend mit Fast R-CNN).

Nicht maximale UnterdrĂŒckung


Sehr oft stellt sich heraus, dass das Modell mehrere Hypothesen mit großer Sicherheit identifiziert, die auf dasselbe Objekt verweisen. Mit NMS ( Non-Maximum Suppression ) können Sie solche FĂ€lle behandeln und nur einen, besten Begrenzungsrahmen belassen. Vergessen Sie jedoch nicht den Fall, dass das Bild zwei verschiedene Objekte derselben Klasse enthalten kann. Fig. 3 zeigt die Auswirkung der Operation vor (links) und nach (rechts) der Operation des Algorithmus.



Betrachten Sie den Algorithmus fĂŒr die Arbeit an einer Klasse (in Wirklichkeit wird er auf jede Klasse separat angewendet):

  1. Am Eingang nimmt die Funktion eine Reihe von Hypothesen fĂŒr eine Klasse und einen Schwellenwert, der den maximalen Schnittpunkt zwischen Hypothesen festlegt.
  2. Hypothesen werden nach ihrem "Vertrauen" sortiert.
  3. Im Zyklus wird die erste Hypothese ausgewĂ€hlt (sie hat den höchsten Konfidenzwert) und der Ergebnismenge hinzugefĂŒgt.
  4. Im Zyklus wird die nÀchste, zweite Hypothese ausgewÀhlt (unter den nach Schritt 3 verbleibenden).
  5. Wenn der Schnittpunkt zwischen den ausgewĂ€hlten Hypothesen grĂ¶ĂŸer als der ausgewĂ€hlte Schwellenwert ist (der Schnittpunkt wird auf der Grundlage des Schnittpunkts der Union berechnet), wird die zweite Hypothese verworfen und ist in der Ergebnismenge nicht weiter vorhanden.
  6. Alles wiederholt sich von Schritt 3 bis die Hypothesen vollstÀndig aufgezÀhlt sind.

Der Pseudocode sieht folgendermaßen aus:

function nms(hypotheses, threshold):
    sorted = sort(hypotheses.values, key=hypotheses.scores)
    result = []
    for first in sorted:
        result.join(first)
        without_first = sorted / first
        for second in without_first:
            if IoU(first, second) > threshold:
                 sorted.remove(second)
    return result


Ausbildung


Der Hypothesenisolationsblock ist nicht lernbar.

Da das Netzwerk in mehrere voneinander getrennte Blöcke unterteilt ist, kann es nicht durchgÀngig trainiert werden. Lernen ist also ein sequentieller Prozess.

Vector View Training


Das auf ImageNet vorab trainierte Netzwerk wird als Grundlage verwendet - solche Netzwerke können bereits wichtige Funktionen aus eingehenden Bildern extrahieren - und es muss noch trainiert werden, um mit den erforderlichen Klassen zu arbeiten. Ändern Sie dazu die Dimension der Ausgabeebene inNcund trainiere eine bereits modifizierte Version. Die ersten Ebenen können blockiert werden, da sie die primĂ€ren (fĂŒr alle Bilder nahezu identischen) Merkmale extrahieren und die nachfolgenden wĂ€hrend des Trainings an die Merkmale der gewĂŒnschten Klassen anpassen. Die Konvergenz wird also viel schneller erreicht. Wenn das Training jedoch immer noch schlecht lĂ€uft, können Sie die primĂ€ren Ebenen freischalten. Da ist es notwendig, die vorhandenen Gewichte genau einzustellen. Es wird nicht empfohlen, eine hohe Lernrate (Lernrate) zu verwenden - Sie können vorhandene Gewichte sehr schnell abwischen.

Wenn das Netzwerk gelernt hat, Objekte gut zu klassifizieren, wird die letzte Schicht mit SoftMax-Aktivierung verworfen und die FC7-Schicht wird zur Ausgabe, deren Ausgabe wiederum als Vektordarstellung der Hypothese interpretiert werden kann.

Positiv in diesem Schritt sind Hypothesen, die sich mit der korrekten Position des Objekts (IoU) um mehr als 0,5 ĂŒberschneiden. Alle anderen gelten als negativ. Zur Aktualisierung der Skalen wird ein 128-Mini-Batch verwendet, der aus 32 positiven und 96 negativen Hypothesen besteht.

Klassifikator Training


Ich möchte Sie daran erinnern, dass fĂŒr die Klassifizierung jeder Hypothese verwendet wird Nc+1SVM-Modelle, die die Eingabe der Vektordarstellung der Hypothese erhalten und auf dem Prinzip von einem gegen den anderen (One-vs-Rest) basieren, bestimmen die Klasse des Objekts. Sie werden mit einer Ausnahme als gewöhnliche SVM-Modelle trainiert - in diesem Schritt unterscheidet sich die Definition von Positiven und Negativen geringfĂŒgig. Hier werden die Hypothesen als Negative genommen, deren Schnittpunkt mit der richtigen Position weniger als 0,3 betrĂ€gt.

Regress Training


Bezeichnen:

  • G=(gx,gy,gw,gh)- die korrekten Koordinaten des Objekts;
  • G^=(gx^,gy^,gw^,gh^)- korrigierte Position der Hypothesenkoordinaten (muss mit ĂŒbereinstimmen G);
  • T=(tx,ty,tw,ty)- Korrekturen der Koordinaten korrigieren;
  • P=(px,py,pw,ph)- Koordinaten der Hypothese;

Regressoren (einer fĂŒr jede Klasse) reprĂ€sentieren also vier Funktionen:

  • dx(P), dy(P)- Bestimmen Sie die Korrekturen an den Mittelkoordinaten (x,y) Um den Effekt der UnabhĂ€ngigkeit von der OriginalgrĂ¶ĂŸe zu erzielen, sollte die Korrektur normalisiert werden.
  • dw(P)und dh(P)- Bestimmen Sie die Korrekturen fĂŒr Breite und Höhe im logarithmischen Raum (der logarithmische Raum wird fĂŒr die numerische StabilitĂ€t und Division verwendet - um die Richtung der Korrektur zu bestimmen).

Bezeichnen mit φ5(P)Feature-Map erhalten von MaxPool5Netzwerkschicht (erinnern Sie sich, sie hat eine Dimension von 256 × 6 × 6, dann wird sie einfach gestreckt), wenn eine Hypothese durch Anwenden auf das Netzwerk auf die Koordinaten beschrĂ€nkt wird P. Wir werden nach einer Transformation suchenP beim ^ g xGwie:

\ begin {align} Außerdem
gx^=pwdx(P)+pxgy^=phdy(P)+pygw^=pwedw(P)gh^=phedh(P)

d∗(P)=w∗Tφ5(P)(Hier ∗∈(x,y,w,h)) ist eine lineare Funktion und der Vektor w∗wird mit dem Optimierungsproblem (Ridge Regression) gesucht:

w∗=argmaxw∗^∑iN(Ti∗−d∗(P))2+λ‖wx^‖2


Um die Korrekturen an den Koordinaten zu bestimmen, sammeln wir Paare zwischen der korrekten Position der Hypothesen Gund ihren aktuellen Zustand Pund definieren Sie die Werte T∗wie:

\ begin {align} Die Notation in den Formeln in diesem Artikel kann zum VerstĂ€ndnis von der Notation des Originalartikels abweichen. Da es ~ 2000 Hypothesen zur Ausgabe des Netzwerks gibt, werden sie unter Verwendung der nicht maximalen UnterdrĂŒckung kombiniert. Die Autoren des Artikels weisen auch darauf hin, dass die Genauigkeit um ~ 4-4,5% sinkt (VOC 2007-Datensatz), wenn Sie anstelle von SVM die SoftMax-Ebene verwenden (die im zweiten Schritt ausgeklappt wurde). Sie stellen jedoch fest, dass die beste „Anpassung“ der Skalen wahrscheinlich zur Beseitigung beitrĂ€gt von einem solchen Problem.
Tx=gx−pxpwTy=gy−pyphTw=log⁡gwpwTh=log⁡ghph





Abschließend heben wir die Hauptnachteile dieses Ansatzes hervor:


  1. Die in Schritt 1 vorgeschlagenen Hypothesen können sich teilweise duplizieren - verschiedene Hypothesen können aus identischen Teilen bestehen, und jede dieser Hypothesen wurde separat von einem neuronalen Netzwerk verarbeitet. Es stellt sich heraus, dass sich die meisten Netzwerkstarts mehr oder weniger unnötig duplizieren.
  2. Es kann nicht fĂŒr den Echtzeitbetrieb verwendet werden, da ~ 53 Sekunden fĂŒr die Übergabe von 1 Bild (Frame) (NVIDIA Titan Black GPU) aufgewendet werden.
  3. Der Algorithmus zur Hypothesenextraktion wird in keiner Weise gelehrt, und daher ist eine weitere Verbesserung der QualitÀt fast unmöglich (niemand hat schlechte Hypothesen annulliert).

Dies analysiert das allererste R-CNN-Modell. WeiterfĂŒhrende Implementierungen (in Form von Fast R-CNN und Faster R-CNN) werden in einem separaten Artikel behandelt .

Referenzliste


1. R. Girshick, J. Donahue, T. Darrell und J. Malik. "Umfangreiche Feature-Hierarchien fĂŒr eine genaue Objekterkennung und semantische Segmentierung." In CVPR, 2014. arXiv: 1311.2524

2. R. Girshick, J. Donahue, T. Darrell und J. Malik. "Regionale Faltungsnetzwerke fĂŒr die genaue Objekterkennung und -segmentierung." TPAMI, 2015 Gepostet

von: Sergey Mikhaylin, Spezialist fĂŒr maschinelles Lernen, Jet Infosystems

All Articles