Der Fehler, der 10.000 nutzlose Bilder produziert
Der offensichtliche Ansatz, Videos in Trainingsdaten umzuwandeln, besteht darin, jedes Bild zu extrahieren. Es fühlt sich gründlich an. Das ist nahezu das Schlimmste, was Sie tun können.
Aufeinanderfolgende Bilder eines 30-fps-Videos haben einen Abstand von 33 Millisekunden. Sofern sich die Kamera oder das Motiv nicht schnell bewegt, ist Bild 1.001 nahezu identisch mit Bild 1.000 – gleiche Pose, gleiche Beleuchtung, gleicher Hintergrund, ein paar Pixel Unterschied. Ein Datensatz mit 10.000 solchen Frames enthält keine 10.000 Beispiele. Es enthält vielleicht 300 verschiedene Situationen, die jeweils dreißigmal wiederholt werden.
Was sich das auf das Training auswirkt, ist spezifisch und schädlich. Die Kosten für Anmerkungen skalieren mit der Anzahl der Bilder, sodass Sie für dieselben Informationen das Dreißigfache bezahlen. Trainingszeitskalen auch. Und was am wichtigsten ist: Wenn diese Beinahe-Duplikate auf beiden Seiten Ihrer Zug-/Validierungsaufteilung landen, hat das Modell den Validierungssatz effektiv gesehen – Sie erhalten eine Validierungsbewertung, die nichts bedeutet.
Die erste Entscheidung ist also keine Werkzeugeinstellung. Es lautet: Wie stark muss sich der Inhalt ändern, bevor ein Frame als neues Beispiel zählt?
Auswahl des Abtastintervalls
Leiten Sie es von der Bewegung in der Szene ab, nicht von der Bildrate der Quelle. Einige funktionierende Ausgangspunkte:
- Statische Kamera, langsames Motiv (Überwachung, eine wachsende Pflanze, eine Warteschlange) – 1 Bild alle 2–10 Sekunden. Alles, was dichter ist, ist überflüssig.
- Statische Kamera, aktives Motiv (eine Person, die an einer Bank arbeitet, Verkehr) – 1 Bild alle 0,5–2 Sekunden.
- Bewegte Kamera (Handheld, Drohne, Dashcam) – 2–5 Bilder pro Sekunde. Der Hintergrund ändert sich kontinuierlich, sodass die Bilder deutlich erkennbar bleiben.
- Schnelle Aktion, bei der die Pose selbst die Bezeichnung ist (Sport, Gestenerkennung) – 5–15 Bilder pro Sekunde, aber nur in den Segmenten, die die Aktion enthalten.
Der Weg, das Problem zu lösen: Extrahieren Sie in einigen Abständen ein einminütiges Testsegment und sehen Sie sich die Ergebnisse nebeneinander an. Wenn Sie sie durchblättern können und jedes Bild Ihnen etwas Neues erzählt, ist das Intervall richtig. Wenn es sich wie ein Daumenkino anfühlt, erweitern Sie es.
Rechnen Sie vor dem Extrahieren. Frames = Dauer × Zielrate. Neunzig Minuten Filmmaterial mit 1 Bild pro Sekunde ergeben 5.400 Bilder – wahrscheinlich eine Woche Kommentierung. Bei 1 Bild pro 5 Sekunden sind es 1.080, was ein paar Tagen entspricht. Diese Entscheidung ist fünf Minuten Nachdenken wert.
Im Extraktor, der Modus „Zeitintervall“ misst die Lücke direkt in Sekunden und die Frame-Anzahl wird während der Eingabe angezeigt – so ist die obige Zahl sichtbar, bevor Sie einen Commit durchführen, und wird danach nicht entdeckt.
Extraktionseinstellungen, die nachgelagert wichtig sind
Format: PNG oder JPEG
Die ehrliche Antwort ist, dass es normalerweise nicht so wichtig ist, wie die Leute erwarten, aber die Fälle, in denen es es tut, sind es wert Wissen.
Verwenden Sie PNG wenn die Aufgabe empfindlich auf feine Details oder Komprimierungsartefakte reagiert – Fehlererkennung auf Oberflächen, OCR-nahe Arbeit, medizinische oder wissenschaftliche Bildgebung, alles, wo Sie später Pixelwerte messen könnten. Verwenden JPEG bei 90–95 % für die allgemeine Objekterkennung und -klassifizierung, wobei Modelle robust gegenüber leichter Komprimierung sind und der Speicherunterschied das Fünf- bis Zehnfache beträgt.
Eine Konsistenzregel, unabhängig von der Wahl: Nicht mischen. Ein Datensatz, der zur Hälfte aus PNG und zur Hälfte aus JPEG mit unterschiedlicher Qualität besteht, gibt dem Modell ein Störsignal, und Modelle sind sehr gut darin, Störsignale zu finden.
Auflösung
Bei Quellauflösung extrahieren und herunterskalieren Ihre Vorverarbeitungspipeline, nicht zum Extraktionszeitpunkt. Sie können verworfene Details nicht wiederherstellen, und in einem Jahr möchten Sie möglicherweise 512-Pixel-Ausschnitte aus Filmmaterial, das Sie mit 224 extrahiert haben. Die Speicherung ist günstiger als die erneute Extraktion, insbesondere wenn das Quellmaterial an einem ungünstigen Ort archiviert wird.
Benennung
Mit Nullen aufgefüllte sequentielle Namen, breit genug für den größten Satz, den Sie jemals produzieren werden. frame_00001.png, nicht frame_1.png. Tools, die Dateinamen als Text sortieren, sortieren frame_10 vor frame_2, und wenn die zeitliche Reihenfolge irgendwo in Ihrer Pipeline eine Rolle spielt, ist dieser Fehler subtil und schwer zu erkennen.
Fügen Sie die Quelle in den Pfad und nicht in den Dateinamen ein, damit die Herkunft erhalten bleibt:
dataset/
raw/
cam01_2026-03-14/
frame_00001.png
frame_00002.png
cam02_2026-03-14/
frame_00001.png
splits/
train.txt
val.txt
test.txt
Behalten Sie die Aufteilung als Textdateien mit Pfaden bei – anstatt Bilder physisch in train/ und zu kopieren val/-Verzeichnisse – bedeutet, dass Sie ohne erneutes Kopieren erneut aufteilen können und genau sehen können, was wohin gegangen ist.
Die Aufteilungsregel, auf die es wirklich ankommt
Das ist der Teil, den es wert ist, zweimal gelesen zu werden, denn es ist der Unterschied zwischen einem Benchmark, dem Sie vertrauen können, und einem Benchmark, dem Sie nicht vertrauen können.
Aufgeteilt nach Quellvideo, niemals nach Frame.
Wenn Sie alle Bilder mischen und eine zufällige 80/20-Aufteilung vornehmen, landen Bilder aus derselben Sekunde desselben Videos auf beiden Seiten. Der Validierungssatz ist dann fast eine Kopie des Trainingssatzes, und Ihre Validierungsgenauigkeit misst das Auswendiglernen. Modelle, die auf diese Weise trainiert wurden, melden routinemäßig 97–99 % und scheitern dann bei wirklich neuem Filmmaterial, und der Fehler ist verblüffend, bis man sich anschaut, wie die Aufteilung vorgenommen wurde.
Der richtige Ansatz: Weisen Sie ganze Videos dem Training, der Validierung und dem Test zu. Wenn Sie nur ein langes Video haben, teilen Sie es nach Zeit in zusammenhängende Blöcke auf – erster 70 %-Zug, nächste 15 %-Validierung, letzter 15 %-Test – und verwerfen Sie auf beiden Seiten jeder Grenze ein paar Sekunden, damit sich kein nahezu doppeltes Paar darüber erstreckt.
Wenn möglich, gehen Sie noch einen Schritt weiter: Halten Sie die gesamte Aufnahme durch Sitzungen, Kameras oder Standorte für den Testsatz. Dadurch wird gemessen, ob das Modell über Bedingungen und nicht über Zeitstempel hinweg verallgemeinert wird, was fast immer die Frage ist, die Sie wirklich interessiert.
Arbeiten vor Ort und warum es hier oft wichtig ist
Ein praktischer Hinweis speziell für diesen Bereich: Forschungs- und Industrievideos sind häufig Material, das nicht einfach hochgeladen werden kann – Patientenaufzeichnungen, Aufnahmen von Personen, die einer Studie und nicht einem Cloud-Dienst zugestimmt haben, proprietäre Fertigungslinien, Experimente vor der Veröffentlichung.
Bei der browserbasierten Extraktion bleibt die Datei auf dem Computer; Es wird nichts übertragen, was wichtig ist, wenn es sich bei der Einschränkung eher um eine Ethikgenehmigung oder eine Datenverarbeitungsvereinbarung als um eine Präferenz handelt. Sie können dies bestätigen, anstatt es auf Vertrauen zu vertrauen: Laden Sie die Seite, trennen Sie die Verbindung zum Netzwerk und extrahieren Sie sie. Wenn es immer noch funktioniert, hat sich nichts getan. Die Methode zur Überprüfung, dass dauert etwa eine Minute.
Machen Sie sich auch über die Grenzen im Klaren. Frames werden bis zum Herunterladen im Speicher gehalten, sodass lange Quellen in Zeitabschnitten verarbeitet werden müssen. Für eine wiederholbare Pipeline über Hunderte von Dateien ist ein lokales FFmpeg-Skript das richtige Werkzeug – der Browser eignet sich für explorative Arbeiten, für einmalige Extraktionen und für Fälle, in denen Sie die Frames sehen möchten, während Sie das Intervall festlegen.
Eine Checkliste vor Beginn der Annotation
Annotation ist der teure Schritt. Wenn Sie diese erfassen, bevor es beginnt, sparen Sie am meisten Zeit:
- Durchblättern Sie 50 zufällige Frames. Unterscheiden sie sich sichtbar voneinander? Wenn nicht, erweitern Sie das Intervall und extrahieren Sie erneut – jetzt, nicht nach der Kennzeichnung.
- Überprüfen Sie die Klassenbilanz. Durch das gleichmäßige Zeitsampling erhalten Sie Bilder im Verhältnis dazu, wie lange Dinge auf dem Bildschirm waren, und nicht im Verhältnis dazu, wie wichtig sie Ihnen sind. Seltene Ereignisse müssen gezielt aus ihren spezifischen Zeitbereichen extrahiert werden.
- Entfernen Sie die toten Frames. Ausblendungen, schwarze Rahmen an Schnitten, Blendenfleck, jemandes Hand über der Linse. Sie sind Lärm und kosten Annotationszeit.
- Bestätigen Sie, dass die Aufteilung nach Video oder Zeitblock erfolgt, nicht nach gemischtem Frame.
- Nehmen Sie die Herkunft auf. Quelldatei, Intervall, Extraktionsdatum, Format und Qualität, zusammen mit dem Datensatz. In sechs Monaten müssen Sie es reproduzieren oder erweitern, und es ist unangenehm, aus den Bildern zu rekonstruieren, „welches Intervall ich verwendet habe“.
Nichts davon ist schwierig. Es wird nur vor der Extraktion entschieden und nicht erst nach der Annotation entdeckt, was den ganzen Unterschied ausmacht.