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?
quelle
Antworten:
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:
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.
quelle
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 identifizierte
cat
. 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.
quelle
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.
quelle