2 Punkte von GN⁺ 2026-03-26 | 1 Kommentare | Auf WhatsApp teilen
  • Semantisches Suchsystem, das Szenen in Videodateien wie Dashcam-Aufnahmen per natürlichsprachiger Suche findet und den entsprechenden Abschnitt automatisch als Clip ausschneidet
  • Nutzt das Modell Google Gemini Embedding 2, um das Video selbst als Vektor einzubetten, speichert es in ChromaDB und vergleicht es direkt mit Textabfragen
  • Verwendet ffmpeg, um Videos in überlappende Chunks zu zerlegen und einzubetten, und liefert bei der Suche den ähnlichsten Abschnitt mit Geschwindigkeit im Subsekundenbereich zurück
  • Vorverarbeitung und Überspringen von Standbildern senken die Kosten für API-Aufrufe; das Indizieren von 1 Stunde Video kostet etwa $2.84
  • Nutzt die direkte Video-Embedding-Funktion von Gemini Embedding 2, um schnelle semantische Suche in mehrstündigem Videomaterial auch ohne Untertitel-Erstellung zu ermöglichen

Überblick

  • SentrySearch ist ein Tool für semantische Suche in Dashcam-Videos, das bei einer natürlichsprachigen Suchanfrage einen zugeschnittenen Clip (trimmed clip) mit der passenden Szene zurückgibt
  • Mit Google Gemini Embedding 2 wird das Video selbst als Vektor eingebettet und in der lokalen Datenbank ChromaDB gespeichert
  • Textabfragen werden in denselben Vektorraum eingebettet, um die ähnlichsten Videofragmente zu finden
  • Suchergebnisse werden automatisch aus der Originaldatei ausgeschnitten und gespeichert; die Suche arbeitet im Subsekundenbereich (sub-second)

Funktionsweise

  • Videos werden in überlappende Abschnitte (overlapping chunks) aufgeteilt, und jeder Abschnitt wird direkt über das Gemini-Embedding-Modell eingebettet
  • Jeder Embedding-Vektor wird in ChromaDB gespeichert; bei der Suche wird die Textabfrage in denselben Vektorraum umgewandelt und abgeglichen
  • Der Abschnitt mit der höchsten Ähnlichkeit wird automatisch aus dem Originalvideo ausgeschnitten und als Clip gespeichert
  • ffmpeg wird für die Aufteilung und das Trimmen der Videos verwendet; ist es nicht im System installiert, wird automatisch imageio-ffmpeg genutzt

Installation und Ersteinrichtung

  • Installation unter Python 3.10 oder höher mit folgendem Befehl möglich
    • nach git clone mit pip install -e .
  • Mit dem Befehl sentrysearch init wird der Gemini-API-Schlüssel eingerichtet und in der Datei .env gespeichert
    • Zur Prüfung der Gültigkeit des Schlüssels wird ein Test-Embedding durchgeführt
  • Bei manueller Einrichtung kann .env.example kopiert und der API-Schlüssel direkt eingetragen werden

Wichtige Befehle und Optionen

  • index

    • Führt die Indizierung durch, indem .mp4-Dateien im angegebenen Ordner rekursiv gescannt werden
    • Jede Datei wird in mehrere Chunks aufgeteilt und eingebettet
    • Optionen
      • --chunk-duration : Chunk-Länge in Sekunden
      • --overlap : Überlappungslänge zwischen Chunks
      • --no-preprocess : Überspringt Downscaling und Frame-Reduktion
      • --target-resolution : Zielauflösung bei der Vorverarbeitung (Standard: 480p)
      • --target-fps : Ziel-Bildrate bei der Vorverarbeitung (Standard: 5fps)
      • --no-skip-still : Bindet auch Standbildbereiche vollständig ein
  • search

    • Beispiel: sentrysearch search "red truck running a stop sign"
    • Ergebnisse werden mit Ähnlichkeitswert angezeigt, das beste Ergebnis wird automatisch zugeschnitten und gespeichert
    • Liegt der Ähnlichkeitswert unter dem Standardschwellenwert (0.35), wird eine Bestätigungsabfrage angezeigt
    • Optionen
      • --results N : Anzahl der anzuzeigenden Ergebnisse
      • --output-dir DIR : Speicherpfad für Clips
      • --no-trim : Deaktiviert automatisches Trimmen
      • --threshold : Passt den Ähnlichkeitsschwellenwert an
  • stats

    • Zeigt die Gesamtzahl der indizierten Chunks und der Originaldateien an
  • --verbose

    • Gibt Debug-Informationen wie Embedding-Dimensionen, API-Antwortzeiten und Ähnlichkeitswerte aus

Technischer Hintergrund

  • Gemini Embedding 2 kann Videos direkt einbetten und mit Textabfragen im selben 768-dimensionalen Vektorraum vergleichen
  • Ein separater Schritt zur Untertitel-Erstellung oder Frame-Beschriftung ist nicht erforderlich
  • So kann beispielsweise eine Textabfrage wie „red truck at a stop sign“ direkt mit einem 30 Sekunden langen Videoclip verglichen werden
  • Dadurch wird semantische Suche im Subsekundenbereich auch in mehrstündigem Videomaterial möglich

Kostenstruktur

  • Mit der Standardkonfiguration (30-Sekunden-Chunks, 5 Sekunden Überlappung) liegen die Indizierungskosten für 1 Stunde Video bei etwa $2.84
    • Die Gemini-API verarbeitet aus hochgeladenem Videomaterial nur 1 Frame pro Sekunde
    • Die Vorverarbeitung skaliert auf 480p und 5fps herunter, um die Übertragungsgeschwindigkeit zu optimieren und Timeouts zu vermeiden
  • Optimierungen zur Kostensenkung

    • Vorverarbeitung (preprocessing) : reduziert Upload-Größe und Übertragungszeit
    • Überspringen von Standbildern (still-frame skipping) : Abschnitte ohne visuelle Veränderung werden nicht eingebettet
      • Besonders effektiv bei lang aufgezeichnetem Material während des Parkens
    • Suchabfragen führen nur Text-Embeddings aus und verursachen daher nahezu keine Kosten
    • Zusätzliche Anpassungsoptionen
    • --chunk-duration, --overlap : steuern die Anzahl der API-Aufrufe
    • --no-skip-still : bettet alle Chunks ein
    • --target-resolution, --target-fps : passen die Vorverarbeitungsqualität an
    • --no-preprocess : sendet die Original-Chunks unverändert

Einschränkungen und künftige Verbesserungen

  • Die Standbilderkennung basiert auf einer heuristischen Methode über den Vergleich von JPEG-Dateigrößen und kann feine Bewegungen übersehen oder Standbildbereiche falsch einbeziehen
  • Die Suchqualität hängt von Chunk-Grenzen ab; wenn sich ein Ereignis über zwei Chunks erstreckt, wird es möglicherweise nicht vollständig erfasst
    • Künftig ist eine Verbesserung durch Chunk-Aufteilung auf Basis von Szenenerkennung (scene detection) möglich
  • Gemini Embedding 2 befindet sich derzeit in der Preview-Phase, daher können sich API-Verhalten und Preise ändern

Kompatibilität und Anforderungen

  • Funktioniert mit allen Videodateien im Format .mp4 und ist nicht auf Tesla-Sentry-Mode-Videos beschränkt
  • Durchsucht alle .mp4-Dateien rekursiv, unabhängig von der Ordnerstruktur
  • Anforderungen
    • Python 3.10 oder höher
    • ffmpeg muss installiert sein (oder automatische Nutzung von imageio-ffmpeg)
    • Gemini-API-Schlüssel erforderlich (kostenloser Schlüssel verfügbar: aistudio.google.com/apikey)

1 Kommentare

 
GN⁺ 2026-03-26
Hacker-News-Kommentare
  • Ich finde diese Art der Umsetzung wirklich beeindruckend. Embeddings fühlen sich immer noch ein bisschen wie Magie an.
    Am meisten Sorge macht mir aber, dass solche Technologien in der realen Welt zu einer Überwachungsgesellschaft führen könnten.
    Schon jetzt gibt es unzählige Kameras, aber weil Menschen unmöglich alles Material sichten können, bleibt ein gewisses Maß an Anonymität und Privatsphäre erhalten.
    Wenn KI jedoch sämtliches Videomaterial in Echtzeit analysieren und bestimmte Personen oder Verhaltensweisen per natürlichsprachiger Suche erkennen kann, könnte ein Panoptikum Realität werden.
    Es gäbe zwar positive Einsatzmöglichkeiten wie Kriminalitätserkennung oder Sturzerkennung, aber ohne Regulierung wäre das Ergebnis sehr gefährlich.

    • Das wird gerade tatsächlich umgesetzt. Ich habe bei einer Stadtratssitzung eine Diskussion über einen Vertrag für ALPR-Kameras gehört und dabei ein Dashboard-Produkt namens Fusus kennengelernt.
      Es soll verschiedene Kamerasysteme, ALPR und Alarme integrieren und natürlichsprachige Videoabfragen ermöglichen.
      Künftig sollen sogar von Bürgern installierte Kameras eingebunden werden. Wenn das am Ende mit Diensten wie der Citizen-App verbunden wird, könnten wir in einer Welt landen, in der die Kamera des Nachbarn direkt an Polizeisysteme angeschlossen ist.
      Das ist wirklich eine besorgniserregende Richtung.
    • Im Moment sind Echtzeit-Indizierung wegen der Kosten ($2.50/Stunde) und der Latenz noch schwierig, aber in naher Zukunft wird das möglich sein.
      Deshalb halte ich es für wichtig, so etwas mit lokalen Modellen zu verarbeiten, damit das Videomaterial das Gerät nicht verlässt.
      Über die grundsätzliche Richtung dieser Technologie sollte man aber sehr sorgfältig nachdenken.
    • Auf die meisten Kameras hat nicht eine einzelne Organisation vollständig Zugriff, und der Staat braucht einen gerichtlichen Beschluss dafür.
      Das Problem entsteht, wenn Systeme wie Flock oder Ring in großem Maßstab ausgerollt werden oder ein einziges Unternehmen Zugriff auf sämtliches Material hat.
    • Technisch ist ein flächendeckendes Überwachungssystem bereits möglich. Im Moment ist es nur noch zu teuer.
    • Wenn solche Vision-Module einmal auch auf stromsparenden ASICs laufen, könnten Drohnen zu furchtbaren Waffen werden.
  • Multimodale KI wird wohl ein Wettrüsten zwischen Werbeerkennung und Werbeeinblendung auslösen.
    Ich habe früher mit einem Modell vor Gemini das Entfernen von Werbung per KI getestet, aber diese Technik ist deutlich leistungsfähiger und könnte Werbung sofort erkennen, stummschalten oder entfernen.
    Die entsprechenden Experimente habe ich hier zusammengefasst.

    • Das war ein interessanter Beitrag. Jemand hat darin die Zukunft der KI-basierten Websuche entworfen, und das Fazit war nicht gerade positiv.
      Werbung wird letztlich nicht verschwinden. KI-Anbieter könnten Whitelists für Werbung erhalten, oder schlimmer noch: Die KI könnte selbst Werbeprodukte anpreisen.
  • Ich habe vor ein paar Monaten eine Rexing-Dashcam gekauft, aber der Zugriff auf die Aufnahmen ist so umständlich, dass ich mir selbst ein System bauen will.
    Ich arbeite daran, das Material durchsuchen und herunterladen zu können, ohne die SD-Karte herausnehmen zu müssen.
    Beim Durchscrollen der Aufnahmen dachte ich mir, wie praktisch es wäre, diese Szenen per natürlicher Sprache zu durchsuchen, und nach diesem Projekt möchte ich das sofort ausprobieren.
    Danke fürs Teilen.

  • Ich frage mich, ob man diese Technik in Videoschnittsoftware einsetzen könnte.
    Zum Beispiel als Premiere-Plugin, bei dem man sagt: „Entferne alle Szenen mit einer Katze“, und dann wird automatisch eine EDL (Edit Decision List) erzeugt.

    • Gute Idee. Ich hatte das auch schon als nächsten Schritt im Kopf.
      SentrySearch gibt für natürlichsprachige Abfragen bereits präzise In-/Out-Zeitstempel zurück und übernimmt das automatische Trimmen mit ffmpeg.
      Das auf EDL oder ein Premiere-Plugin auszuweiten, wäre eine natürliche Weiterentwicklung.
      Ich bin kein Premiere-Experte, aber wenn jemand einen EDL-Exporter oder ein Plugin ausprobieren möchte, würde ich gern beim Review und Mergen von PRs helfen.
      Wenn du anfängst, gib mir gern über ein GitHub-Issue Bescheid.
  • Ich frage mich, ob das auch mit lokalen Modellen funktionieren kann.

  • Das ist nicht nur für Dashcams interessant, sondern auch für Home-Monitoring.

    • Die meisten Home-Monitoring-Systeme zeichnen nur bei Bewegung auf, wodurch der Suchraum ohnehin stark reduziert wird.
      Wenn man schnell vor- und zurückspult, findet man die etwa 30 Sekunden, in denen sich jemand der Haustür nähert, ziemlich leicht.
    • So eine Funktion wird künftig wahrscheinlich eine Pflichtfunktion jedes Home-Security-Systems sein.
      Ich habe früher schon stundenlang Aufnahmen durchgesehen, um zu prüfen, ob die Katze durch die offene Tür nach draußen gelaufen ist, und am Ende hatte sie sich nur im Haus versteckt.
  • Ich arbeite ebenfalls an einem Embeddings-Projekt, allerdings noch im Prototypenstadium.
    Bei mir geht es nicht um Gemini, sondern um ein Reverse-Connections-Rätselspiel.
    Mehr dazu gibt es hier.

  • Ich habe mir den Code angeschaut, der „prüft, ob Videosegmente größtenteils Standbilder sind“, und denke, dass sich das mit ffmpegs select- und scene-Parametern automatisch erledigen ließe.

  • Ich arbeite im Bereich Content-/Video-Intelligence.
    Gemini ist ein Werkzeug, das für solche Use Cases wirklich sehr gut passt.

  • Ich musste lachen, als in der Demo nach „dem Auto gesucht wurde, das mich nachts mit einem Fahrradträger hinten dran geschnitten hat“.
    Wahrscheinlich war genau dieses Auto der eigentliche Anlass, dieses Projekt zu bauen.

    • So falsch ist das vermutlich nicht.