Ultralytics integriert Bildkacheln für die Erkennung kleiner Objekte

Ultralytics hat eine integrierte Bildkachelung in seine YOLO-Werkzeuge aufgenommen. Damit können Modelle überlappende Ausschnitte hochauflösender Bilder analysieren, statt jedes Bild auf eine einzige Modelleingabe zu verkleinern. Nach Angaben des Unternehmens lassen sich so kleine Objekte in Luftaufnahmen, Verkehrsbildern und Inspektionsaufnahmen wiedererkennen. Allerdings sind pro Bild mehr Modelleingaben erforderlich.
- Die Kachelung verarbeitet überlappende Ausschnitte in der ursprünglichen Auflösung statt eines einzigen verkleinerten Bildes.
- Ultralytics meldet bei einem VisDrone-Bild 161 Erkennungen mit Kachelung gegenüber 35 ohne Kachelung.
- Ein Bild mit 1920 x 1080 Pixeln verwendet bei tile=640 acht Ausschnitte.
- Die Python-Unterstützung beginnt mit Ultralytics 8.4.204, die Rust-Unterstützung mit Inference 0.0.57.
- Kachelung kann die Erkennung kleiner Objekte verbessern, erhöht jedoch den Rechenaufwand und kann große Objekte aufteilen.
Warum das Verkleinern von Bildern kleine Objekte verbergen kann
Bei der Standardeinstellung imgsz=640 wird ein Bild mit 1920 x 1080 Pixeln verkleinert, bevor Ultralytics YOLO es verarbeitet. Nach Angaben von Ultralytics wird ein 15 Pixel großes Fußgängerobjekt im Originalbild durch die Größenänderung etwa 5 Pixel hoch. Dem Modell stehen dadurch weniger Details zur Verfügung, um das Objekt von Texturen und Bildrauschen zu unterscheiden.
Bei der Bildkachelung wird das Modell stattdessen auf überlappende Ausschnitte in der ursprünglichen Bildauflösung angewendet. Anschließend werden die daraus resultierenden Vorhersagen zusammengeführt. In einem VisDrone-Beispiel meldete YOLO26s laut Ultralytics 35 Erkennungen für das gesamte Bild bei imgsz=640, verglichen mit 161 Erkennungen bei tile=640. Ein zweites Validierungsbild ergab ohne Kachelung 8 Erkennungen und mit Kachelung 128. Das Unternehmen betont, dass es sich dabei um die Anzahl der Vorhersagen und nicht um eine bewertete Evaluation handelt.
Die Methode richtet sich an Bilder, in denen Objekte nur einen kleinen Teil eines großen Bildes einnehmen. Dazu zählen Drohnen- und Satellitenbilder, Verkehrsszenen aus der Vogelperspektive, Menschenmengen, weitwinklige Aufnahmen von Verkaufsregalen und hochauflösende Inspektionsbilder.
Mehr Details erfordern mehr Modelleingaben
Nach Angaben von Ultralytics überlappen sich die gekachelten Ausschnitte standardmäßig um 20 Prozent. Die letzte Zeile und Spalte werden an der Bildgrenze ausgerichtet, wodurch an den Rändern eine stärkere Überlappung entstehen kann. Ein Bild mit 1920 x 1080 Pixeln wird bei tile=640 in acht Ausschnitten verarbeitet, die in vier Spalten und zwei Zeilen angeordnet sind. Ein Bild mit 3840 x 2160 Pixeln verwendet bei tile=640 32 Ausschnitte.
Damit ist die Kachelung rechenintensiver als eine einmalige Verarbeitung des gesamten Bildes. Auch eine Erhöhung der Eingabegröße des Gesamtbildes auf imgsz=1280 steigert den Rechenaufwand, während kleinere Kacheln die Zahl der Eingaben weiter erhöhen können. Ultralytics zufolge kann Batch-Verarbeitung den Durchsatz verbessern. Das Unternehmen empfiehlt jedoch, die Latenz auf der Zielhardware zu messen.
Die Kachelung eignet sich nicht für jede Szene. Objekte, die größer als die Überlappung sind, können auf mehrere Ausschnitte verteilt werden. Der Zusammenführungsprozess setzt getrennte Fragmente nicht wieder zusammen. Kleinere Ausschnitte können außerdem mehr Hintergrund und damit mehr Fehlalarme erzeugen. Der Leitfaden empfiehlt, zwei oder drei Kachelgrößen auf einem Validierungsdatensatz zu vergleichen und neben dem Recall auch die Präzision zu beobachten.
Unterstützung für Python und Rust
Das Python-Paket unterstützt die Kachelung ab Ultralytics 8.4.204, das am November 6 veröffentlicht wurde. Die Rust-Kiste erhielt am November 9 in Ultralytics Inference 0.0.57 ein --tile-Flag. Python-Nutzer können tile=True übergeben, um imgsz als Fenstergröße zu verwenden, oder eine Ganzzahl für eine separate Kachelgröße angeben. Dieselbe Einstellung ist über die Befehlszeile verfügbar. Mit batch lässt sich steuern, wie viele Ausschnitte gemeinsam verarbeitet werden.
Nach der Inferenz werden die Vorhersagen der Ausschnitte auf die Koordinaten des Quellbilds zurückgeführt und als jeweils ein Results-Objekt pro ursprünglichem Bild ausgegeben. Bei der Objekterkennung werden überlappende Vorhersagen mit Non-Maximum Suppression anhand der konfigurierten Einstellungen iou, agnostic_nms und max_det gefiltert.
Ultralytics zufolge unterstützt die Python-Pipeline die gekachelte Vorhersage außerdem für YOLO-World, YOLOE, RT-DETR und FastSAM. Ausgaben für Erkennung, Segmentierung, Pose und OBB werden entsprechend ihrer jeweiligen Aufgabe zusammengeführt. Semantische Segmentierung, Tiefenschätzung und Klassifizierung verwenden für überlappende Kacheln eigene Verfahren. Das Unternehmen beschreibt außerdem gekacheltes Training und gekachelte Validierung. Dabei werden Beschriftungen auf die Ausschnitte zugeschnitten und Vorhersagen vor der Bewertung der Validierung zusammengeführt.


