Ein wenig über die Suche
Wenn wir über die Suche sprechen, stellen wir uns sofort eine Google-Suchmaschine mit einem Formular zur Eingabe einer Textzeichenfolge und vielen hundert Ergebnissen von Links zu den gefundenen Seiten vor. Denken wir jedoch über das Thema unserer Suche nach.
Was suchen wir?
- Text
- Unterlagen
- HTML-Seiten
- Bilder
- Audio
- Video
- Binärdateien
Für einige Datentypen gibt es spezialisierte Suchmaschinen. Beispielsweise gibt es Websites, die sich auf das Auffinden von DLL-Dateien spezialisiert haben.
Video suchen
Werfen wir einen Blick auf die Suche nach Videoinformationen. Wie kannst du das tun? Rein theoretisch?
- Laut des Textes
- Nach Bild
- Auf einem kurzen Videoclip
- Durch kurzes Audiofragment
Gegenwaertiger Stand der Dinge
Suchmaschinen
- Microsoft
- Yandex
Ich habe die drei größten Suchmaschinen genannt, mit denen Sie nach Videos und Texten nach Videos suchen können.
Nachteile moderner Suchmaschinen
Leider leiden alle unter folgenden Problemen:
- Der genaue Name des gefundenen Videos ist nicht immer verfügbar. Stattdessen kann der Schauspieler korrekt angegeben und andere Bilder von ihm präsentiert werden.
- Es gibt keine genaue Angabe der Position im Video. Und das sind sehr nützliche Informationen.
Ja das stimmt. Probieren Sie es selbst aus und Sie werden sehen, dass ich Recht habe. Suchmaschinen neigen dazu, etwas unsicher zu sein. Schauen Sie sich den Screenshot oben an, der Tom Hanks zeigt. Es gibt weder den Namen des Films noch die Position, in der er gedreht wurde.
Formulierung des Problems
Bevor wir mit der Lösung des Problems beginnen, versuchen wir, es zu beschreiben. Was wollen wir also?
Gewünschte Ausführungsgeschwindigkeit der Anforderung
Heutzutage wird niemand ein paar Minuten warten, bis eine Suchabfrage abgeschlossen ist. Die Datenmenge und die Berechnung können jedoch so sein, dass die Verarbeitung der Anforderung einige Zeit in Anspruch nimmt. Sie müssen Kompromisse eingehen. Die Ausführungszeit für Suchanfragen wird bedingt auf 10 Sekunden (± einige Sekunden) begrenzt. Dies ermöglicht es dem Browser einerseits, die Verbindung nicht zu unterbrechen, andererseits gibt es Skripten Zeit, Informationen zu verarbeiten.
Wie viele Daten gibt es?
Lassen Sie es uns in unserem Kopf herausfinden.
Anzahl der Videos
Laut der IMDb-Kinematografiedatenbank wurden insgesamt etwa 2,6 Millionen Filme gedreht, darunter einzelne Folgen von Fernsehserien, Cartoons und Kurzfilmen. (Informationen vom 13. November 2018).
Beschränken wir uns zunächst auf die runde Anzahl von 1 Million Videos. Es ist klar, dass wir nicht einmal versuchen, YouTube und andere ähnliche Dienste zu berühren, bei denen das Videovolumen um ein Vielfaches größer ist. Und vor allem wird dieser Schneeball nur wachsen.
Anzahl der Frames
Einige Filme oder Folgen von Fernsehserien sind ziemlich kurz. Es gibt 15-20 Minuten. Auf der anderen Seite gibt es einige Filme mit einer Länge von bis zu 2 Stunden oder mehr. Nehmen wir ohne weiteres die durchschnittliche Videodauer von 1 Stunde.
Eine große Anzahl von Filmen wurde mit 24 Bildern pro Sekunde gedreht, aber es gibt auch schnellere. Heutzutage kann jeder seinen eigenen Film drehen und die Bildrate kann 60, 100 und 200 FPS und höher sein. Es hängt alles von einem Camcorder, einer Kamera, einer Action-Kamera, einem Smartphone, einer Videoüberwachungskamera usw. ab (unterstreichen Sie das Notwendige). Alles in unseren Händen. Nehmen wir als erste Annäherung die Bildrate eines durchschnittlichen Videos von 30 FPS.
In diesem Fall beträgt das durchschnittliche Video:
30 FPS * 3600 Sek. = 108.000 Bilder
Zusammenfassend ergibt sich, dass das durchschnittliche Video etwa 100.000 Bilder umfasst.
Datenvolumen
Was ist die Speicherkapazität für einen Frame? Offensichtlich hängt dieser Wert vom Algorithmus zum Vergleichen von Frames in unserer Datenbank mit einem bestimmten Beispiel ab. Wir verwenden zwei Algorithmen, um Daten zu vergleichen. Einer von ihnen benötigt ungefähr 30 Bytes pro Frame, der andere ungefähr 10 Bytes. Nehmen wir den Durchschnitt - 20 Bytes.
Dies bedeutet, dass zum Speichern von Informationen über 1 Million Videos 1.000.000 Videos * 100.000 Frames * 20 Bytes = 2.000.000.000.000 Bytes benötigt werden
Einfach ausgedrückt, wir benötigen ungefähr 2 TB, um alle unsere Frames irgendwie zu beschreiben. Was im Allgemeinen nicht so schlecht ist, da diese Informationsmenge auf eine moderne Festplatte oder SSD-Festplatte passen kann. Auf der anderen Seite sollten diese Informationen irgendwie optimiert werden, da sonst selbst ein einfaches Ablesen von 2 TB viel Zeit in Anspruch nimmt und wir uns einig waren, dass der Benutzer nicht länger als 10 Sekunden warten wird.
Selbst wenn wir Informationen mit einer Geschwindigkeit von 500 MB / s von der Festplatte lesen, benötigen wir 2000 Sekunden, also mehr als eine halbe Stunde!
Wie viele Server müssen wir für eine bestimmte Zeit suchen?
Wenn wir davon ausgehen, dass wir Informationen gleichmäßig auf mehreren Servern speichern, verringert sich in diesem Fall die Menge an Informationen, die zum Ausführen einer Suchabfrage verarbeitet werden. Wenn wir beispielsweise 10 Server haben, muss jeder von ihnen nicht 2 TB Informationen verarbeiten, sondern nur 200 GB. Oder wenn wir 100 Server haben, müssen wir nicht 2 TB, sondern 20 GB Informationen verarbeiten. Grundsätzlich sollte der angegebene Betrag für das Funktionieren einer solchen Suchmaschine ausreichen.
Wie viele Anfragen pro Sekunde kann ein solches System verarbeiten?
Es ist schwierig, genau zu antworten, aber höchstwahrscheinlich maximal mehrere zehn Anfragen pro Sekunde.
Was getan wurde
Zuerst haben wir eine Suche nach Videofragmenten implementiert. Die Bildsuche wurde jedoch bald implementiert.
Geschichte
1. Juli 2019
An diesem Tag wurde die erste Version des VideoColor-Pakets veröffentlicht. Es bestand aus drei Teilen:
- Manager (Quellvideo-Indizierung)
- Server (das Back-End, das Anforderungen akzeptiert und nach einer Übereinstimmung in der Indexdatenbank sucht)
- Client (eine Clientanwendung, mit der Sie AVI-Dateien abspielen und Suchanforderungen an den Server senden können).
März 2020
Es wurde eine Website erstellt, auf der Videos anhand des hochgeladenen Videofragments identifiziert werden können.
14. April 2020
Die erste Version der Anwendung zur Videoidentifizierung und Positionierung des abgespielten Videos wurde veröffentlicht, indem der Inhalt eines Teils des Monitorbildschirms erfasst wurde.
23. Juni 2020
Die erste Version der Anwendung zum Hinzufügen von Index- und beschreibenden Informationen zu Videos zur Site-Datenbank wurde veröffentlicht.
Suche nach Videofragmenten
Hauptidee
Wir werden ein Video als eine Folge von Bildern betrachten. Ermitteln Sie für jedes Bild den Durchschnitt aus Rot, Grün und Blau. Wir erhalten drei Diagramme gegen die Zeit. Lassen Sie uns diese Grafiken für jedes Video erstellen und speichern, das wir indizieren möchten.
Nachdem wir ein Videofragment zur Identifizierung erhalten haben, werden wir diese Grafiken dafür erstellen. Vergleichen wir die erhaltenen Grafiken mit den bereits verfügbaren. Natürlich müssen Vergleiche über die gesamte Länge jedes Originalfilms durchgeführt werden. Wenn der Unterschied zwischen den Diagrammen an einem bestimmten Punkt kleiner als ein bestimmter Wert ist, wird das Problem als gelöst betrachtet.
Es ist zu beachten, dass dies ein vereinfachtes Diagramm ist. Es gibt mehrere Punkte im Workflow, die sich von den hier beschriebenen unterscheiden. Aber im Allgemeinen ist dies die Idee.
Profis
- . 1 . , 1000 , 2 , 2 .
- . , , .
- 5-10 .
- ( ).
- . . , . , , .
- . .. . , . , . , . , 2- DDR3 1600 12 0,5 . 48 2- .
- ( ) . . , , , .
- . , , . — .
- .
Teilen Sie das Originalbild in Tabellenzellen M x N. Ermitteln Sie den Durchschnittswert der roten, grünen und blauen Komponenten in jedem der Bereiche. Tatsächlich wird die Menge dieser Werte das Merkmal dieses Bildes sein, mit dessen Hilfe wir sie alle voneinander unterscheiden können. Wir geben dieses Merkmal zusammen mit dem Zeiger auf die Videobeschreibung (Video-ID) und der Seriennummer des Frames im Video in die Datenbank ein. Die Frage bleibt nur, welche Werte M und N annehmen. Wir haben 5 x 5 genommen, aber Sie können auch andere Werte ausprobieren. Bei kleinen Werten dieser Parameter besteht die Möglichkeit, dass wir viele Duplikate haben, und bei großen Werten wird viel Speicherplatz aufgewendet.
Dies ist jedoch nicht alles. Wenn Sie in Zukunft nach all diesen Merkmalen suchen, wird die Bearbeitung jeder Anfrage viel Zeit in Anspruch nehmen! Wie soll ich sein? Sie können den Durchschnittswert der R-, G- und B-Komponenten für dieses Bild berechnen und anhand dieser Werte im Datenarray gruppieren. Zum Beispiel: R = 200, G = 188, B = 212. In diesem Fall geben wir Informationen zum Frame in den entsprechenden Abschnitt ein oder fügen der Tabelle ein Feld hinzu. Und bei der Suche definieren wir diese Komponenten auf ähnliche Weise und suchen unter Berücksichtigung dieser Parameter. Dadurch reduzieren wir die Menge der verglichenen Daten erheblich und beschleunigen die Suche.
Um ehrlich zu sein, ist dies nur theoretisch, in der Praxis ist alles etwas anders. Dies ist jedoch ein Thema für einen separaten Artikel.
Profis
- Relativ kleine Datengröße.
- Es ist möglich, alle Daten in Gruppen aufzuteilen und nach Gruppen zu suchen, was die Suche erheblich beschleunigt.
- Im Gegensatz zur vorherigen Methode ist keine permanente Speicherung großer Datenmengen im RAM erforderlich.
- Geringe Fehlerwahrscheinlichkeit.
Minuspunkte
- Aufgrund der Tatsache, dass das Video nach der Transcodierung geringfügig vom Original abweichen kann und die JPEG-Codierung (bei der Suche nach Bildern) das Original ändert und die Gruppe möglicherweise falsch bestimmt wird. Dies erfordert entweder eine Erweiterung des Bereichs der Gruppe (führt zu einer Verringerung der Suchgeschwindigkeit) oder zusätzliche Suchanfragen (verlangsamt auch die Suche).
Werkzeuge
Bisher wurden mehrere Anwendungen geschrieben, von denen einige veraltet sind und nicht mehr unterstützt werden.
Videosuche (clientseitig)
- Über ein Webformular auf der Website
- Über die Anwendung "Video Color Capture"
Videosuche (Backend)
- Video Color Server. : Windows ( ) Linux ( , crontab).
- «Video Color Creator»
- .
- .
- ().
- () .
- - , .
Angenommen, Sie haben eine Datei mit einem ungeschickten Namen. Der anfängliche Begrüßungsbildschirm fehlt entweder (die Absicht des Autors) oder ist ausgeschnitten. Was ist das für ein Film? Ich möchte die Beschreibung und Kommentare derjenigen lesen, die es gesehen haben.
Anzeigenblöcke finden und abschneiden
Beispiel: Sie haben Ihren eigenen selbstgeschriebenen Videoplayer und möchten, dass Ihre Nutzer beim Ansehen von Streaming-Videos Ihre eigenen Anzeigen und nicht die zentralen Kanäle sehen.
Überprüfen von Teilen des Videos auf Ausleihe aus anderen Filmen (Plagiat)
Beispiel: Wenn der Verdacht besteht, dass jemand Ihr Video (aus einem Quadcopter) in seinem Video verwendet.
Bestimmung des genauen Veröffentlichungsdatums und des Namens der Show (Programm), wenn diese Informationen im Repost fehlen
Beispiel: Sie sehen eine Videoshow, die auf einer unbekannten Site gehostet wird. Sie wissen vielleicht sogar, wie die Show heißt, wissen aber nicht, wann sie gezeigt wurde. Vor ein oder zwei Jahren?
Bestimmung einer mehr oder weniger genauen Position des abgespielten Streaming-Videos, wenn ein zuvor indiziertes Video gesendet wird
Beispiel: Dies kann erforderlich sein, wenn Sie eine Anwendung an das Streaming-Video einer anderen Person anhängen möchten, die Titel oder andere Kontextinformationen (Karten, Links, Nachrichten usw.) enthält. Zuerst gibt es Videoaufnahme, Indexberechnung, Videoidentifikation und Position auf dem Server, und dann zeigt die Anwendung Kontextinformationen in einem separaten Fenster an, das mit dem abgespielten Video synchronisiert ist.
So nutzen Sie den Dienst
Suchen Sie nach Videos über ein Webformular auf der Website
Dazu müssen Sie ein Videofragment oder Bild in das entsprechende Feld des Formulars hochladen.
Es ist zu beachten, dass der Server beim Laden eines Videofragments zunächst das Storyboard des hochgeladenen Videos und dessen Verarbeitung bearbeitet, was zusätzliche Zeit erfordert.
Die Ergebnisseite enthält den Titel des Films, den Namen des Regisseurs, Informationen zum Herkunftsland, Erscheinungsjahr, Genre, Namen der Schauspieler, eine kurze Beschreibung, die Länge des Videos sowie die Position im Video, Links zu zusätzlichen Informationen und ein tabellarisches Bild der Bilder aus dem Video.
Suchen Sie Videos mit der App
Die Suche nach Videos mit der Anwendung ist viel schneller, da die gesamte Vorverarbeitung auf der Clientseite erfolgt und nur ein kleiner Teil der Originaldaten an den Server gesendet wird. Dies belastet den Kanal weniger und erhöht die Geschwindigkeit der Suchabfrage.
Kann ich eine Datenbank im Alleingang mit Indexinformationen für eine Million Videos füllen?
Höchstwahrscheinlich nein. Wo kann ich diese Videos bekommen? Wie pumpe ich sie über das Netzwerk? Woher erhalten Sie Computerressourcen für deren Verarbeitung?
Sie können die Basis jedoch für das Befüllen durch die Benutzer selbst zur Verfügung stellen. Und das wurde bereits umgesetzt. Wir haben die Datenbank mit hundert Videos gefüllt und Sie können sicherstellen, dass unser Service funktioniert. Sie können auch eine kostenlose Anwendung zum Indizieren von Videos und zum Hinzufügen einer Beschreibung herunterladen und installieren, gefolgt vom Hochladen von Daten auf den Server. Die Anwendung ermöglicht es in Zukunft, einige Vorgänge mit den geladenen Daten auszuführen: Löschen, Bearbeiten der Beschreibung, Anzeigen und Suchen.
Wenn Sie Ihr oder ein anderes Video hinzufügen möchten, stellen Sie bitte sicher, dass dieses Video noch nicht in der Datenbank enthalten ist. Sie können in der Anwendung nach Name, Direktor, Erstellungsjahr und anderen Parametern suchen.
Die Geschwindigkeit beim Erstellen von Indexinformationen hängt von der Leistung Ihres Computers und den Eigenschaften des Videos selbst ab (Auflösung, Codec, Bildrate). Im Durchschnitt dauert die Verarbeitung einige Minuten. Zu diesem Zeitpunkt kann der Benutzer die Videobeschreibungs-Textfelder ausfüllen.
Pläne für die Zukunft
- Suchbeschleunigung.
- Verbesserung der Suchgenauigkeit.
- Suche nach Audiofragmenten.
Die Suche nach Videos anhand kurzer Audiofragmente ergänzt die beiden vorhandenen Suchmethoden (anhand von Videofragmenten und Bildern).
Ergebnis
- In diesem Beitrag haben wir den aktuellen Stand der Technik mit Videosuche überprüft.
- Wir haben die Methoden der Videosuche durch kurze Videofragmente und Bilder kennengelernt.
- Wir haben über die Video Color Capture -Videosuchanwendung gesprochen .
- Erwähnt wurde die Anwendung Video Color Creator zum Hinzufügen zur gemeinsam genutzten Videodatenbank der AAP-Software .
Links
Webseite
http://www.videocolor.aapsoftware.ru/
Die Website bietet eine Suche nach einem kurzen Videofragment sowie nach einem Bild aus dem Video.
Anwendungen
- Windows x64-Videoidentifizierungsanwendung Video Color Capture
- Windows x64-Anwendung zum Hinzufügen von Videos zur Video Color Creator- Datenbank
- Alle Apps sind kostenlos.
Video
- Suchen Sie Video nach Bild und Video nach kurzem Videosegment
- Suchen Sie nach einem Film nach Videofragment
- Videoidentifikation mit Video Color Capture
- Video der Arbeit mit dem Programm "Video Color Capture" Version 1.1
- Arbeiten mit dem Programm "Video Color Creator" Version 2.0