3

Wenn Menschen versuchen, die Aufgabe der semantischen Segmentierung mit CNN zu lösen, verwenden sie normalerweise einen Softmax-Crossentropy-Verlust während des Trainings (siehe Fully conv. - Long). Wenn es jedoch darum geht, die Leistung verschiedener Ansätze zu vergleichen, werden Maßnahmen wie "crossing-over-union" gemeldet.Warum benutzt man keine IOU für das Training?

Meine Frage ist, warum trainieren Menschen nicht direkt auf die Maßnahme, die sie optimieren möchten? Es scheint mir etwas seltsam zu sein, während des Trainings in irgendeiner Form zu trainieren, aber ich bewerte ein anderes Maß für Benchmarks.

Ich kann sehen, dass die IOU Probleme hat, Proben zu trainieren, wo die Klasse nicht vorhanden ist (Union = 0 und Schnittpunkt = 0 => Division Null durch Null). Aber wenn ich sicherstellen kann, dass jede Probe meiner Grundwahrheit alle Klassen enthält, gibt es einen anderen Grund, diese Maßnahme nicht zu verwenden?

Antwort

1

Es ist wie fragen: "Warum für die Klassifizierung trainieren wir Log-Verlust und nicht Genauigkeit?". Der Grund ist wirklich einfach - Sie können nicht direkt für die meisten Metriken trainieren, weil sie nicht differenzierbar sind. zu Ihren Parametern (oder erzeugen Sie zumindest keine Fehleroberfläche). Log-Verlust (Softmax-Crossentropie) ist ein gültiger Ersatz für die Genauigkeit. Jetzt haben Sie vollkommen Recht, dass es völlig falsch ist, mit etwas zu trainieren, das kein gültiger Surrogat der Metrik ist, und das verlinkte Papier macht keinen guten Job, da für mindestens ein paar Metriken, die sie in Betracht ziehen, wir könnten leicht zu zeigen, gute Ersatz (wie für gewichtete Genauigkeit alles, was Sie tun müssen, ist auch Gewichtsverlust Verlust).

2

Gehen Sie diese paper, wo sie mit einer Möglichkeit, das Konzept der IoU differenzierbar machen kommen. Ich habe ihre Lösung mit erstaunlichen Ergebnissen implementiert!

+1

Könnte hier einige der Mathematik aufnehmen möchten dies kein Link nur beantworten zu machen. Ihr Algorithmus sieht ähnlich aus [Y. Wang et al] (http://www.cs.umanitoba.ca/~ywang/papers/isvc16.pdf). Ungefähr, I ~ = Summe (Y * Y ') 'und' U ~ = Summe (Y + Y' - Y * Y ') '. Ihr Papier verwendet den negativen Logarithmus von "I/U" und der von mir verlinkte verwendet "1-I/U". Ich mag das negative Protokollformular, aber ich werde beide bald versuchen. Deines rechnet auch nach dem I/U statt vorher. – Poik

+0

Meiner Meinung nach ist es physikalisch sinnvoller, für jede Probe im Trainingssatz "I/U" zu berechnen und dann die Summierung durchzuführen. Auf diese Weise bewerten Sie die Genauigkeit pro Stichprobe und die einzelnen Fehler addieren sich. Die Durchführung der Summierung kann zuerst zur Fehlerlöschung führen ("Summe (I)/Summe (U)" kann ein gutes Ergebnis liefern, während "Summe (I/U)" für die gleichen Daten nicht ausreicht). Ich bin keineswegs ein Experte, obwohl ... – MPA

0

Hier ist eine andere Möglichkeit, auf einfache Weise darüber nachzudenken.

Denken Sie daran, dass es nicht ausreicht, einfach eine Metrik wie Genauigkeit oder IoU zu bewerten, während Sie ein relevantes Bildproblem lösen. Auswerten der Metrik muss auch Hilfe das Netzwerk lernen in welche Richtung müssen die Gewichte Nudge angestoßen werden, so dass ein Netzwerk effektiv über Iterationen und Epochen lernen kann.

Auswerten dieser Richtung ist, was die früheren Kommentare bedeuten, dass die Fehler differentiable sind. Ich nehme an, dass es nichts über die IoU-Metriken gibt, die das Netzwerk verwenden kann, um zu sagen: "hey, es ist nicht genau hier, aber ich muss vielleicht meine Bounding Box ein wenig nach links bewegen!"

nur ein Rinnsal einer Erklärung, aber hoffe, es hilft ..

Verwandte Themen