Tecnología de búsqueda de video en color de video

Un poco de búsqueda



Cuando hablamos de búsqueda, inmediatamente imaginamos un motor de búsqueda de Google con un formulario para ingresar una cadena de texto y muchos cientos de resultados de enlaces a las páginas encontradas. Sin embargo, pensemos en el tema de nuestra búsqueda.



¿Qué estamos buscando?



  • Texto
  • Documentos
  • Páginas HTML
  • Imagenes
  • Audio
  • Vídeo
  • Archivos binarios


Para algunos tipos de datos, existen motores de búsqueda especializados. Por ejemplo, hay sitios especializados en buscar archivos DLL.



Buscar video







Echemos un vistazo a la búsqueda de información de video. ¿Cómo puedes hacer esto? ¿Puramente en teoría?



  • Según el texto
  • Por imagen
  • Por un breve videoclip
  • Por fragmento de audio corto


Situación actual



Los motores de búsqueda



  • Google
  • Microsoft
  • Yandex


Nombré los tres motores de búsqueda más grandes y todos te permiten buscar videos por texto e imágenes.



imagen



Desventajas de los motores de búsqueda modernos



Desafortunadamente, todos sufren los siguientes problemas:



  • El nombre exacto del video encontrado no siempre está disponible. En cambio, se puede especificar correctamente al actor y presentar otras imágenes de él.
  • No hay una indicación precisa de la posición en el video. Y esta es una información muy útil.


imagen



Sí lo es. Pruébelo usted mismo y verá que tengo razón. Los motores de búsqueda tienden a ser algo inciertos. Mira la captura de pantalla de arriba, la que muestra a Tom Hanks. No hay ni el nombre de la película ni la posición en la que se realizó.



imagen



Formulación del problema



Antes de comenzar a resolver el problema, intentemos describirlo. Entonces, ¿qué queremos?



Velocidad de ejecución de la solicitud deseada



Hoy en día, nadie esperará unos minutos a que se complete una consulta de búsqueda. Sin embargo, la cantidad de datos y cálculos puede ser tal que lleve algún tiempo procesar la solicitud. Tienes que ceder. Limitaremos condicionalmente el tiempo de ejecución de la consulta de búsqueda a 10 segundos (± unos segundos). Esto, por un lado, permitirá que el navegador no interrumpa la conexión, pero, por otro lado, dará tiempo para que los scripts procesen la información.



¿Cuántos datos hay?



Resolvámoslo en nuestra cabeza.



Numero de videos



Según la base de datos cinematográfica de IMDb, se han rodado aproximadamente 2,6 millones de películas en total, incluidos episodios individuales de programas de televisión, dibujos animados y cortos. (Información al 13 de noviembre de 2018).



Para empezar, limitémonos a la cantidad redonda de 1 millón de videos. Está claro que ni siquiera intentamos tocar en YouTube y otros servicios similares, donde el volumen de video es muchas veces mayor. Y lo más importante, esta bola de nieve solo crecerá.



Numero de cuadros



Algunas películas o episodios de series de televisión son bastante breves. Hay 15-20 minutos. Por otro lado, hay bastantes películas de hasta 2 horas de duración o más. Sin más preámbulos, tomemos la duración promedio del video igual a 1 hora.



Se filmaron una gran cantidad de películas a 24 fotogramas por segundo, pero también hay otras más rápidas. Hoy en día, todo el mundo puede filmar su propia película y la velocidad de fotogramas puede ser de 60, 100 y 200 FPS y más. Todo depende de una videocámara, una cámara, una cámara de acción, un teléfono inteligente, una cámara de videovigilancia, etc. (subraye lo necesario). Todo en nuestras manos. Pero, tomemos como primera aproximación la velocidad de fotogramas de un video promedio igual a 30 FPS.



En este caso, el video promedio será:



30 FPS * 3600 seg = 108,000 cuadros



Redondeando, obtenemos que el video promedio es de aproximadamente 100,000 cuadros.



Volumen de datos



¿Cuál es la capacidad de almacenamiento de un marco? Obviamente, este valor depende del algoritmo para comparar marcos en nuestra base de datos con una muestra determinada. Usamos dos algoritmos para comparar datos. Uno de ellos requiere unos 30 bytes por trama, el otro unos 10 bytes. Tomemos el promedio: 20 bytes.



Esto significa que para almacenar información sobre 1 millón de videos, se necesitan



1,000,000 videos * 100,000 cuadros * 20 bytes = 2,000,000,000,000 bytes



En pocas palabras, necesitamos alrededor de 2 TB para describir de alguna manera todos nuestros marcos. Lo cual, en términos generales, no es tan malo, porque esta cantidad de información puede caber en un disco HDD o SSD moderno. Por otro lado, esta información debería simplificarse de alguna manera, de lo contrario, incluso una simple lectura de 2 TB llevará mucho tiempo, y acordamos que el usuario no esperará más de 10 segundos.



Incluso si leemos información del disco a una velocidad de 500 MB / s, necesitaremos 2000 segundos, es decir, ¡más de media hora!



¿Cuántos servidores necesitamos buscar durante un tiempo específico?



Si asumimos que almacenamos información de manera uniforme en varios servidores, entonces, en este caso, la cantidad de información procesada para completar una consulta de búsqueda disminuye. Por ejemplo, si tenemos 10 servidores, cada uno de ellos necesitará procesar no 2 TB de información, sino solo 200 GB. O si tenemos 100 servidores, entonces necesitamos procesar no 2 TB, sino 20 GB de información. En principio, la cantidad especificada debería ser suficiente para el funcionamiento de dicho motor de búsqueda.



¿Cuántas solicitudes por segundo puede digerir un sistema así?



Es difícil responder con exactitud, pero lo más probable es que un máximo de varias decenas de solicitudes por segundo.



Lo que fue hecho



Primero, implementamos una búsqueda por fragmentos de video. Sin embargo, pronto se implementó la búsqueda de imágenes.



Historia



1 julio 2019



Ese día, se lanzó la primera versión del paquete VideoColor. Incluía tres partes:



  • Administrador (indexación de videos de origen)
  • Servidor (el back-end que acepta solicitudes y busca una coincidencia en la base de datos del índice)
  • Cliente (una aplicación cliente que le permite reproducir archivos AVI y enviar consultas de búsqueda al servidor).


Marzo de 2020



Se creó un sitio web con la capacidad de identificar videos por el fragmento de video subido.



14 de abril de 2020



Lanzó la primera versión de la aplicación para identificación de video y posicionamiento del video que se está reproduciendo capturando el contenido de una parte de la pantalla del monitor.



23 junio 2020



Se lanzó la primera versión de la aplicación para agregar índice e información descriptiva sobre videos a la base de datos del sitio.



Buscar por fragmentos de video



idea principal







Consideraremos un video como una secuencia de imágenes. Para cada imagen, encuentre el promedio de rojo, verde y azul. Obtenemos tres gráficos en función del tiempo. Construyamos y guardemos estos gráficos para cada video que queramos indexar.







Habiendo recibido un fragmento de video para su identificación, también crearemos estos gráficos. Comparemos los gráficos resultantes con los que ya están disponibles. Por supuesto, tendrá que comparar la duración completa de cada película original. Si la diferencia entre las gráficas en un punto específico es menor que cierto valor, entonces consideramos que el problema está resuelto.



Cabe señalar que este es un diagrama simplificado. Hay varios puntos que difieren en el flujo de trabajo de lo que se describe aquí. Pero, en general, la idea es solo eso.



pros



  • . 1 . , 1000 , 2 , 2 .
  • . , , .
  • 5-10 .
  • ( ).
  • . . , . , , .




  • . .. . , . , . , . , 2- DDR3 1600 12 0,5 . 48 2- .
  • ( ) . . , , , .
  • . , , . — .
  • .






Divida la imagen original en celdas de la tabla M x N. Encuentre el valor promedio de los componentes rojo, verde y azul en cada una de las áreas. En realidad, el conjunto de estos valores será el característico de esta imagen, con la ayuda de la cual podremos distinguirlos entre sí. Ingresamos esta característica en la base de datos junto con el puntero a la descripción del video (ID de video) y el número de serie del cuadro en el video. La única pregunta que queda es, ¿qué valores toman M y N? Tomamos 5 x 5, pero puedes probar con otros valores. Con valores pequeños de estos parámetros, existe la posibilidad de que tengamos muchos duplicados, y con valores grandes, gastemos mucha memoria.







Sin embargo, esto no es todo. Si en el futuro busca todas estas características, ¡le llevará mucho tiempo procesar cada solicitud! ¿Cómo ser? Puede calcular el valor promedio de los componentes R, G, B para esta imagen y, basándose en estos valores, agruparlos en la matriz de datos. Por ejemplo: R = 200, G = 188, B = 212. En este caso, ingresamos información sobre el marco en la sección correspondiente o agregamos un campo a la tabla. Y a la hora de buscar, definimos estos componentes de forma similar y buscamos teniendo en cuenta estos parámetros. Por lo tanto, reducimos en gran medida la cantidad de datos comparados y aceleramos la búsqueda.







Para ser honesto, esto es solo en teoría, en la práctica todo es un poco diferente. Pero este es un tema para otro artículo.



pros



  • Tamaño de datos relativamente pequeño.
  • Es posible dividir todos los datos en grupos y buscar por grupos, lo que acelera significativamente la búsqueda.
  • A diferencia del método anterior, no requiere el almacenamiento permanente de grandes cantidades de datos en RAM.
  • Baja probabilidad de error.




Desventajas



  • Debido al hecho de que después de la transcodificación, el video puede diferir ligeramente del original, y la codificación JPEG (al buscar por imagen) cambia el original y el grupo puede determinarse incorrectamente. Esto requiere expandir el rango del grupo (conduce a una disminución en la velocidad de búsqueda) o consultas de búsqueda adicionales (también ralentiza la búsqueda).


Herramientas



Hasta la fecha, se han escrito varias aplicaciones, algunas de ellas están desactualizadas y ya no son compatibles.



Búsqueda de videos (lado del cliente)



  • A través de un formulario web en el sitio
  • A través de la aplicación "Video Color Capture"


Búsqueda de video (backend)



  • Video Color Server. : Windows ( ) Linux ( , crontab).




  • «Video Color Creator»








  • .
  • .
  • ().
  • () .
  • - , .




Suponga que tiene un archivo con un nombre torpe. Falta la pantalla de presentación inicial (la intención del autor) o está cortada. ¿Qué es esta película? Me gustaría leer la descripción y comentarios de quienes lo vieron.



Encontrar y cortar bloques de anuncios



Ejemplo: tiene su propio reproductor de video personalizado y desea que sus usuarios vean sus propios anuncios, no los canales centrales, cuando ven videos en streaming.

Comprobación de partes del video para tomarlas prestadas de otras películas (plagio)

Ejemplo: si existe la sospecha de que alguien está usando su video (tomado de un quadcopter) en su video.



Determinar la fecha exacta de publicación y el nombre del programa (programa) si esta información falta en el repost



Ejemplo: está viendo un programa de video alojado en un sitio desconocido. Incluso puede saber cómo se llama el programa, pero no sabe cuándo se mostró. ¿Hace un año o dos?



Determinación de una posición más o menos precisa del video en streaming que se está reproduciendo si se está transmitiendo un video indexado previamente



Ejemplo: esto puede ser necesario si desea adjuntar una aplicación a la transmisión de video de otra persona que muestra títulos u otra información contextual (mapas, enlaces, noticias, etc.). Primero, hay captura de video, cálculo de índice, identificación de video y posición en el servidor, y luego la aplicación muestra información contextual en una ventana separada, sincronizada con el video que se está reproduciendo.



Cómo utilizar el servicio



Busque videos a través de un formulario web en el sitio



Para hacer esto, debe cargar un fragmento de video o una imagen en el campo correspondiente del formulario.







Cabe señalar que si se carga un fragmento de video, el servidor primero se ocupará del guión gráfico del video subido y su procesamiento, lo que requerirá tiempo adicional.



La página de resultados contiene el título de la película, el nombre del director, información sobre el país de origen, el año de estreno, el género, los nombres de los actores, una breve descripción, la duración del video, así como la posición que se encuentra en el video, enlaces a información adicional y una imagen tabular de fotogramas del video.







Buscar videos usando la aplicación



La búsqueda de videos usando la aplicación es mucho más rápida, ya que todo el preprocesamiento se realiza en el lado del cliente y solo una pequeña parte de los datos originales se envía al servidor. Esto pone menos carga en el canal y aumenta la velocidad de la consulta de búsqueda.



















¿Puedo completar una base de datos con información de índice para un millón de videos sin ayuda?



Probablemente no. ¿Dónde puedo conseguir estos videos? ¿Cómo bombearlos a través de la red? ¿Dónde conseguir recursos informáticos para procesarlos?



Pero puede hacer que la base esté disponible para que la llenen los propios usuarios. Y esto ya se ha implementado. Hemos llenado la base de datos con cien videos y puede asegurarse de que nuestro servicio funcione. También puede descargar e instalar una aplicación gratuita para indexar videos y agregar una descripción, seguida de cargar datos al servidor. La aplicación permite en el futuro realizar algunas operaciones con los datos cargados: borrar, editar la descripción, visualizar y buscar.







Si decide agregar su video o cualquier otro, asegúrese de que este video aún no esté en la base de datos. Puede buscar en la aplicación por nombre, director, año de creación y otros parámetros.







La velocidad de creación de información de índice depende de la potencia de su computadora y de las características del video en sí (resolución, códec, velocidad de fotogramas). En promedio, el procesamiento tarda unos minutos. En este momento, el usuario puede completar los campos de texto de descripción del video.







Planes para el futuro



  • Aceleración de búsqueda.
  • Mejora de la precisión de la búsqueda.
  • Busque por fragmentos de audio.


La búsqueda de videos por fragmentos de audio cortos complementará los dos métodos de búsqueda existentes (por fragmentos de video e imágenes).



Salir



  • En esta publicación, revisamos el estado actual del arte con la búsqueda de videos.
  • Nos familiarizamos con los métodos de búsqueda de video por fragmento de video corto e imagen.
  • Hablamos sobre la aplicación de búsqueda de video Video Color Capture .
  • Se mencionó la aplicación Video Color Creator para agregarla a la base de datos de video compartida del software AAP .


Enlaces



Sitio web



http://www.videocolor.aapsoftware.ru/

El sitio puede buscar un fragmento de video corto, así como una imagen del video.



Aplicaciones



  • Aplicación de identificación de video de Windows x64 Video Color Capture
  • Aplicación de Windows x64 para agregar video a la base de datos de Video Color Creator
  • Todas las aplicaciones son gratuitas.


Vídeo





Publicaciones






All Articles