Empfindlichkeit der Faltungsskala für neuronale Netze


11

Nehmen wir zum Beispiel an, wir erstellen einen Altersschätzer, der auf dem Bild einer Person basiert. Unten haben wir zwei Personen in Anzügen, aber die erste ist deutlich jünger als die zweite.


(Quelle: tinytux.com )

Es gibt viele Merkmale, die dies implizieren, zum Beispiel die Gesichtsstruktur. Das aussagekräftigste Merkmal ist jedoch das Verhältnis von Kopfgröße zu Körpergröße :


(Quelle: wikimedia.org )

Nehmen wir also an, wir haben eine CNN-Regression trainiert, um das Alter der Person vorherzusagen. In vielen der Altersvorhersagen, die ich ausprobiert habe, scheint das obige Bild des Kindes die Vorhersagen zu täuschen, dass es älter ist, aufgrund des Anzugs und wahrscheinlich, weil sie sich hauptsächlich auf das Gesicht stützen:

Ich frage mich, wie gut eine Vanille-CNN-Architektur auf das Verhältnis von Kopf zu Rumpf schließen kann.

Wird die Vanille-CNN im Vergleich zu einer regionalen RCNN, die Begrenzungsrahmen an Körper und Kopf bekommen kann, immer schlechter abschneiden?

Kurz vor der globalen Abflachung im Vanille-CNN (dh kurz nach allen Windungen) hat jeder Ausgang ein entsprechendes Empfangsfeld, das einen Sinn für Skalierung haben sollte. Ich weiß, dass schnelleres RCNN dies ausnutzt, indem es genau zu diesem Zeitpunkt Vorschläge für Begrenzungsrahmen macht, sodass alle vorherigen Faltungsfilter automatisch auf alle Skalen trainieren.

Ich würde also denken, dass das Vanille-CNN in der Lage sein sollte, das Verhältnis von Kopf- zu Rumpfgröße abzuleiten? Ist das richtig? Wenn ja, ist der einzige Vorteil der Verwendung eines schnelleren RCNN-Frameworks, um die Tatsache auszunutzen, die möglicherweise für die Erkennung von Personen vorab geschult wurde?


1
Wissen Sie, wo genau Ihr Alterserkennungsgerät ausfällt? Warum denkst du, ist es der Kopfgrößenanteil? Haben Sie sich die Ausgabe der mittleren Ebenen angesehen?
Aksakal

@Aksakal Ich glaube nicht, dass er experimentiert hat, ein CNN zu trainieren. Soweit ich verstanden habe, hat er Tests mit vorhandenen Webdiensten durchgeführt: "In vielen Altersvorhersagen, die ich ausprobiert habe [..]".
DeltaIV

Antworten:


8

Zunächst einmal vielen Dank, dass Sie eine sehr interessante Frage gestellt haben.

Um es kurz zu beantworten: Ein Vanille-Convnet, das Ende-2-Ende trainiert hat, um das Alter eines Fotos vorherzusagen, neigt im Allgemeinen dazu, Bilder wie das von Ihnen veröffentlichte falsch zu klassifizieren . Zweitens ist zu beachten, dass eine genaue Schätzung des Alters einer Person eine nahezu unmögliche Aufgabe ist 1 .

Der Hauptunterschied zu Ihrem vorgeschlagenen Ansatz bei der Verwendung einiger Objektdetektoren (RCNN, Faster RCNN, YOLO oder SSD) besteht darin, dass Sie unterschiedliche Informationen zum Trainieren der Modelle verwenden. Das CNN wird nur auf Bildern trainiert und muss alle erforderlichen Funktionen selbst herausfinden. Es wird höchstwahrscheinlich verschiedene Gesichtsmerkmale finden, aber es wird auch von Kleidung und möglicherweise Szenenmerkmalen abhängen (Kinder sind oft mit einigen Spielsachen auf dem Bild, Erwachsene sind eher in Büroumgebungen usw.). Diese Funktionen sind für Ihr Gegenbeispiel nicht robust.

Wenn Sie andererseits das Netzwerk so trainieren, dass Objekte explizit als "Torso" und "Kopf" erkannt werden, geben Sie zusätzliche Informationen an, dass diese Objekte für die Aufgabe wichtig sind, und vereinfachen so das Problem 2 .

Während der Ansatz, Kopf und Rumpf zu erkennen und dann das Größenverhältnis der Begrenzungsrahmen zu bewerten, interessant klingt, kann ich mehrere Hindernisse erkennen:

  1. Daten erhalten: Mir ist nicht bekannt, ob ein großer Datensatz verfügbar ist, in dem sowohl Alter als auch Begrenzungsrahmen vorhanden sind.
  2. Unvollkommenes Sichtfeld: In den meisten Bildern (z. B. Ihren beiden Beispielen) werden die Personen nicht als Ganzes angezeigt. Sie müssten sich mit der Tatsache auseinandersetzen, dass die Torso-Begrenzungsrahmen nicht immer perfekt wären, nur weil ein Teil der Person nicht im Bild ist und das Netz erraten müsste, wie groß ein Teil fehlt (und die Grundwahrheits-Begrenzungsrahmen am meisten würden wahrscheinlich nicht erfassen diese Informationen). Außerdem behandeln die oben genannten Objektdetektoren Vorhersagen von Teilobjekten nicht immer richtig. Dies kann zu viel Rauschen im Modell verursachen.
  3. Verschiedene Posen: Das Verhältnis von Rumpf zu Kopf wäre für Menschen, die von vorne und von der Seite betrachtet werden, sehr unterschiedlich.
  4. Erwachsene: Es scheint, dass das Verhältnis gut funktioniert, um das Alter zwischen 0 und 21 vorherzusagen, aber ich sehe nicht ein, wie es helfen würde, das Alter von Erwachsenen vorherzusagen (ich nehme an, dass sich das Verhältnis im höheren Alter nicht ändert).

All diese Probleme deuten darauf hin, dass der Ansatz des Kopf-Rumpf-Verhältnisses auch nicht perfekt funktioniert, obwohl er für Ihr spezielles Gegenbeispiel möglicherweise robuster ist.

Ich denke, der beste Weg, um diese Aufgabe auszuführen, wäre, 1) das Gesicht zu erkennen, 2) das Alter nur anhand der Gesichtsfrucht vorherzusagen (entfernt möglicherweise irreführende Informationen). Beachten Sie, dass einige R-CNN-ähnliche Architekturen, die ROI-Pooling verwenden, für dieses Ende-2-Ende trainiert werden könnten.


1 Selbst mit sehr ausgefeilten medizinischen Methoden (die wohl viel informativer sind als ein Foto der Person) ist dies nicht genau möglich. Weitere Informationen finden Sie in diesem Quora-Thread .

2 Lesen Sie den Artikel Knowledge Matters: Wichtigkeit von Vorinformationen für die Optimierung, um ein Beispiel zu finden, wie das Bereitstellen von Zwischenwissen über die Aufgabe das Lernen erheblich vereinfachen kann.


8

CNNs sind eine zu große Klasse von Modellen, um diese Frage zu beantworten. LeNet, AlexNet, ZFNet und VGG16 verhalten sich ganz anders als GoogLeNet, das speziell für die meisten Funktionen von R-CNN mit einer CNN-Architektur entwickelt wurde (Sie kennen GoogLeNet möglicherweise mit dem Namen Inception, obwohl Inception genau genommen gerecht ist die Basiseinheit (Subnetz), auf der GoogLeNet basiert). Schließlich verhalten sich ResNets anders. Und all diese Architekturen wurden nicht zur Klassifizierung von Altersklassen erstellt, sondern für die 1000 ImageNet-Klassen, die keine Altersklassen für Menschen enthalten. Man könnte Transferlernen verwenden(wenn Sie über genügend Trainingsbilder verfügen), um eines der oben verfügbaren weit verbreiteten trainierten Modelle zu trainieren und zu sehen, wie sie funktionieren. Im Allgemeinen haben jedoch ältere Architekturen (sagen wir bis zu VGG16) Schwierigkeiten, "globale Merkmale" zu lernen, die das Erlernen von "Kopf" (bereits ein komplexes Merkmal), "Torso" (ein weiteres komplexes Merkmal) und deren Merkmalen erfordern Verhältnis (was auch erfordert, dass die beiden Merkmale in einer bestimmten räumlichen Beziehung stehen). Solche Dinge hätten Capsule Networks können können.

Convnets wurden geboren, um genau das Gegenteil zu tun: Seien Sie empfindlich gegenüber lokalen Merkmalen und relativ unempfindlich gegenüber ihrer relativen Position / Skala. Ein guter Convnet sollte "weiße Katze" erkennen, ob das Bild eine Nahaufnahme oder eine amerikanische Aufnahme ist. Durch die Kombination von Faltungsebenen (die für lokale Merkmale empfindlich sind) mit Poolebenen (die einen Teil der Empfindlichkeit für Abweichungen im Maßstab oder für die Übersetzung des Bildes entfernen) erhalten Sie eine Architektur, die in ihrer grundlegendsten Form das Erlernen der Art von Raum nicht besonders gut macht Beziehungen zwischen Objekten, die Sie suchen. Es gab irgendwo ein Beispiel (aber ich kann es nicht mehr finden), bei dem das CNN nach dem Aufteilen eines Katzenbildes in verschiedene rechteckige, nicht überlappende Kacheln und dem Zusammenfügen in zufälliger Reihenfolge das Bild weiterhin als identifiziertecat. Dies weist darauf hin, dass CNNs empfindlicher auf lokale Merkmale (Texturen oder ähnliches) reagieren als auf die räumliche Beziehung zwischen Merkmalen auf hoher Ebene. Weitere Informationen hierzu finden Sie im Papier zu Capsule-Netzwerken . Ein Beispiel dafür zeigte Hinton auch in einem Video über die Grenzen von Convnets .

Meine wilde Vermutung ist, dass eine der jüngsten Architekturen perfekt in der Lage wäre (bei ausreichenden Daten), Männer von Kindern zu unterscheiden, aber nicht aufgrund einer "Schwelle" für eine metrische Beziehung zwischen Merkmalen auf hoher Ebene wie "Kopf" und "Torso". . Es würde eine statistische Regelmäßigkeit lernen, die für Menschen möglicherweise völlig unbemerkt bleibt und die Bilder von Erwachsenen von Bildern von Kindern im Trainingssatz trennt.


Ich weiß Ihre Antwort zu schätzen, aber ich habe Probleme, zuzustimmen. RCNN-Architekturen haben im Wesentlichen die gleiche Filterstruktur wie Objektkonvnets, z. B. VGG und Resnet. Und da RCNN Skalierung und relative Position erkennen kann, sollten VGG und Resnet auch Skalierung erkennen können. RCNN-Architekturen basieren jedoch auf Box-Vorschlägen, von denen sie Tausende pro Bild machen, wonach jeder Box-Vorschlag bewertet wird. Wenn ich also zumindest einige dieser Box-Vorschläge einbeziehe, sollte ein Vanille-CNN die Skalierung besser erkennen. Ich bin mir nur nicht sicher, ob es dazu notwendig ist.
Alex R.

RCNN sind keine CNN. Sie verpassen nicht nur die selektive Suche nach den Begrenzungsrahmen, sondern auch die linearen SVM- und Begrenzungsrahmen-Regressorstufen. Es gibt auch einen großen Unterschied zwischen der Fähigkeit, die Skalierung von AlexNet (dem im Original-RCNN-Papier verwendeten CNN) oder VGG zu erkennen, und der Fähigkeit von GoogLeNet oder ResNet: GoogLeNet wurde genau entwickelt, um das zu tun, was RCNN tut. Ich denke, sowohl GoogLeNet als auch ResNet könnten das Alter klassifizieren, aber es gibt keine Möglichkeit zu wissen, ob sie dies tun würden, indem sie eine für uns sinnvolle Funktion verwenden (Verhältnis von Kopf zu Rumpf) oder indem sie ein statistisches 1 /
DeltaIV vom

2 / Regelmäßigkeiten, die ein Mensch niemals bemerken würde. Ich würde Ihnen vorschlagen, zu experimentieren und es zu versuchen, aber leider wäre nur das Erstellen der Bilddatenbank ein Forschungsprojekt für sich (es sei denn, Sie arbeiten in einer Modefirma).
DeltaIV

1
Ich entschuldige mich für die Verwirrung. Ich weiß, dass es 20 verschiedene RCNN-Architekturen gibt, von denen jede behauptet, die anderen seien veraltet.
Alex R.

1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat Auch ein anderes Problem, das jedoch immer noch mit dem Texturabgleich zusammenhängt, und von angeseheneren Forschern, arxiv.org/pdf/ 1703.06857
DeltaIV

0

Nun, es hängt alles davon ab, wie Ihr Datensatz aufgebaut ist. Nach meiner Erfahrung tendieren neuronale Netze dazu, einfachste Erklärungen zu finden. Und das Alter aus dem Outfit abzuleiten ist tatsächlich einfacher als das Verhältnis von Kopf zu Körper. Wenn Sie Ihren Datensatz vor diesem Hintergrund erweitern können, sollte Ihr CNN wie erwartet funktionieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.