Die Suche abstimmen
Die Standardwerte finden ein gut eingelerntes Objekt in einem vernünftigen Bild. Diese Seite beschreibt, was Sie ändern, wenn sie das nicht tun.
Konfidenz-Schwellwert
input/confidence-threshold ist der kleinste Score, den ein Treffer erreichen muss, von 0 bis 1. Der
Standardwert ist 0.6.
Die Scores sind hier zwischen Durchläufen vergleichbar, also ist die praktische Methode das Messen statt des Ratens:
-
Setzen Sie den Schwellwert niedrig, auf
0.4. -
Führen Sie die Suche mit echten Teilen aus und sehen Sie sich die Scores in
output/resultan. -
Setzen Sie den Schwellwert mit etwas Reserve unter den schlechtesten Score, den ein echtes Teil erzeugt.
Ein Schwellwert ab 0.9 lehnt in der Regel alles ab, auch gute Treffer.
Doppelte Meldungen entfernen
input/nms-min-dist ist der Mindestabstand in Pixeln zwischen zwei gemeldeten Treffern. Fallen mehrere Treffer
in diesen Abstand, wird nur der mit dem höchsten Score behalten.
Ohne diesen Wert wird ein einzelnes Teil häufig mehrfach gemeldet, als Häufung von Treffern wenige Pixel
voneinander entfernt. Setzen Sie ihn auf etwa die halbe Größe des Teils in Pixeln. Der Standardwert 0
behält jeden Treffer, was nur dann sinnvoll ist, wenn Teile tatsächlich enger beieinanderliegen als ihre eigene
Größe.
Glättung
input/preprocess/blur-sigma-x wendet vor dem Matching eine Gauß-Glättung sowohl auf das Bild als auch auf das
Bild des Objekts an. Sie ist standardmäßig aus.
Schalten Sie sie ein - beginnen Sie mit 1.0 -, wenn die Scores nahe am Schwellwert liegen oder die Bilder
verrauscht sind. An realen Aufbauten gemessen, hebt die Glättung schwache Treffer spürbar an (etwa von 0.53 auf
0.60), während bereits starke Treffer ungefähr dort bleiben, wo sie waren. Genau deshalb ist sie standardmäßig
aus: Sie hilft den Grenzfällen und tut nichts für die gesunden.
blur-sigma-y hat standardmäßig denselben Wert wie X. Die Kernelgrößen werden aus dem Sigma berechnet, sofern
Sie sie nicht setzen; dann müssen sie ungerade sein. Alle werden ignoriert, solange blur-sigma-x 0 oder
kleiner ist.
Die Glättung wird vor dem Binning angewendet, sodass ein Sigma eine Pixelzahl in Ihrem Originalbild bleibt
und seine Bedeutung nicht ändert, wenn Sie bin-size ändern.
Bin-Größe
input/preprocess/bin-size verkleinert vor dem Matching sowohl das Bild als auch das Bild des Objekts um einen
ganzzahligen Faktor. Der Standardwert ist 1, was das Binning deaktiviert. Das ist die Einstellung, die eine
Suche schneller macht.
Die Kosten eines Matchings skalieren mit der Pixelzahl, daher zahlt sich Binning stark aus. Gemessen an einem 1920x1080-Bild mit einem 128x128-Objekt, Mittelwert aus fünf Durchläufen:
bin-size |
Zeit | Bester Score | Im Vergleich zu 1 |
|---|---|---|---|
|
49 ms |
1.00 |
- |
|
8.4 ms |
1.00 |
etwa 6x schneller |
|
3.5 ms |
0.94 |
etwa 14x schneller |
|
- |
- |
das Objekt wurde abgelehnt - nach dem Binning zu klein |
Was Sie aufgeben, ist Präzision - gemeldete Positionen werden auf bin-size Pixel quantisiert - und
Detail. Binnen Sie weit genug, hat das Bild des Objekts die Kanten nicht mehr, auf die sich der Detektor
stützt: Bei bin-size 8 wird ein 128x128-Objekt auf 16x16 reduziert, und der Detektor lehnt es ab. Das wird
als fehlgeschlagener Durchlauf gemeldet, der das abgelehnte Objekt benennt, nie als leeres Ergebnis, sodass es
nicht mit einem fehlenden Teil verwechselt werden kann.
Positionen in output/result sind immer in den Pixeln des Bildes, das Sie konfiguriert haben - die Anwendung
rechnet sie zurück -, sodass eine höhere bin-size nichts daran ändert, wie Sie das Ergebnis lesen.
Kleine Objekte erreichen diese Grenze früher als große. Erhöhen Sie bin-size schrittweise und beobachten Sie
die Scores: Wenn sie Richtung Schwellwert zu fallen beginnen, sind Sie einen Schritt zu weit gegangen.
bin-size kostet Sie an den Rändern der Region nichts: Sie wird unabhängig vom Binning genau wie konfiguriert
durchsucht - siehe
Die Region wird genau wie angegeben durchsucht.
Pyramidenebenen
input/pyramid listet die Ebenen der Bildpyramide, auf denen die Suche läuft, Standard [1,2]. Größere Werte
machen die Erkennung toleranter, aber gröber.
|
Das ist keine Geschwindigkeitseinstellung, auch wenn sie so klingt. Tiefere Pyramiden waren gemessen etwas
langsamer, nicht schneller - |
Welche Ebenen gültig sind, hängt von der Bildgröße ab, und es gibt keine allgemeine Regel. Eine ungültige Kombination wird als fehlgeschlagener Durchlauf mit negativem Statuscode gemeldet, statt geraten zu werden. Ändern Sie sie daher in kleinen Schritten und prüfen Sie den Status.
Den Bereich einschränken
input/crop/{startX, startY, width, height} beschränkt die Suche auf einen Teil des Bildes. Eine Breite oder
Höhe von null reicht bis zum entsprechenden Rand. Die Standardregion aus lauter Nullen durchsucht also alles,
und startX=100 mit Nullgrößen sucht von dort bis zur rechten unteren Ecke.
Zwei Gründe, sie zu verwenden: Geschwindigkeit, weil eine kleinere Region schneller durchsucht wird, und Zuverlässigkeit, weil das Ausschließen von Bereichen, in denen das Teil nicht sein kann, Fehltreffer auf ähnlich aussehendem Hintergrund vermeidet.
Das ist das erste Mittel, wenn eine Suche zu langsam ist, denn anders als bin-size kostet es keinerlei
Präzision.
Die Region wird genau so durchsucht, wie Sie sie setzen - siehe Die Region wird genau wie angegeben durchsucht.
Ansichten hinzufügen statt abzustimmen
Wird ein Objekt in bestimmten Orientierungen verfehlt, während es in anderen zuverlässig gefunden wird, hilft keine Einstellung auf dieser Seite. Der Detektor dreht Vorlagen nicht - lernen Sie eine weitere Ansicht in der verfehlten Orientierung ein. Siehe Ein Objekt anlegen.
Ebenso: Wird das Objekt verfehlt, wenn es näher an der Kamera oder weiter von ihr entfernt liegt, lernen Sie eine Ansicht in diesem Abstand ein.
Geschwindigkeit
Die Reihenfolge, in der Sie vorgehen sollten:
-
Den Bereich einschränken mit
input/crop. Das kostet keine Präzision und kommt daher immer zuerst. -
input/preprocess/bin-sizeerhöhen, auf Kosten von Präzision und feinen Details. Auf einem Full-HD-Bild bringt das etwa 6x bei2und 14x bei4. -
Nach weniger Objekten suchen. Jedes
executesucht nach einem Objekt und verarbeitet das ganze Bild erneut; ein Objekt wegzulassen, das Sie nicht brauchen, spart also einen ganzen Durchlauf.
input/pyramid zu erhöhen steht nicht auf dieser Liste: Gemessen ist es etwas langsamer statt schneller.
Halten Sie die Einstellungen zwischen Durchläufen stabil. Der Detektor wird beim ersten Durchlauf aus dem Bild des Objekts kompiliert und wiederverwendet, solange sich nichts ändert; das Ändern einer Eingabe baut ihn neu auf, und der Neuaufbau kostet weit mehr als eine Erkennung.