Un peu sur la recherche
Quand on parle de recherche, on imagine tout de suite un moteur de recherche Google avec un formulaire de saisie d'une chaßne de texte et plusieurs centaines de résultats de liens vers les pages trouvées. Cependant, réfléchissons au sujet de notre recherche.
Que cherchons-nous?
- Texte
- Des documents
- Pages HTML
- Images
- l'audio
- Vidéo
- Fichiers binaires
Pour certains types de données, il existe des moteurs de recherche spécialisés. Par exemple, il existe des sites spécialisés dans la recherche de fichiers DLL.
Rechercher une vidéo
Jetons un coup d'Ćil Ă la recherche d'informations vidĂ©o. Comment pouvez-vous faire cela? Purement en thĂ©orie?
- Selon le texte
- Par image
- Par un court clip vidéo
- Par court fragment audio
Ătat actuel des choses
Moteurs de recherche
- Microsoft
- Yandex
J'ai nommé les trois plus grands moteurs de recherche et ils vous permettent tous de rechercher des vidéos par texte et images.
Inconvénients des moteurs de recherche modernes
Malheureusement, ils souffrent tous des problĂšmes suivants:
- Le nom exact de la vidĂ©o trouvĂ©e n'est pas toujours disponible. Au lieu de cela, l'acteur peut ĂȘtre correctement spĂ©cifiĂ© et d'autres images de lui prĂ©sentĂ©es.
- Il n'y a pas d'indication précise de la position dans la vidéo. Et ce sont des informations trÚs utiles.
Oui, ça l'est. Essayez vous-mĂȘme et vous verrez que j'ai raison. Les moteurs de recherche sont sujets Ă une certaine incertitude. Regardez la capture d'Ă©cran ci-dessus, celle montrant Tom Hanks. Il n'y a ni le nom du film, ni la position dans laquelle il a Ă©tĂ© rĂ©alisĂ©.
Formulation du problĂšme
Avant de commencer à résoudre le problÚme, essayons de le décrire. Alors que voulons-nous?
Vitesse d'exécution des demandes souhaitée
De nos jours, personne n'attendra quelques minutes pour qu'une requĂȘte de recherche se termine. Cependant, la quantitĂ© de donnĂ©es et de calculs peut ĂȘtre telle que le traitement de la demande prend un certain temps. Vous devez faire des compromis. Nous limiterons conditionnellement le temps d'exĂ©cution de la requĂȘte de recherche Ă 10 secondes (± quelques secondes). Cela, d'une part, permettra au navigateur de ne pas interrompre la connexion, mais, d'autre part, laissera le temps aux scripts de traiter les informations.
Combien de données y a-t-il?
DĂ©couvrons-le dans notre tĂȘte.
Nombre de vidéos
Selon la base de données cinématographique IMDb, environ 2,6 millions de films ont été tournés au total, y compris des épisodes individuels d'émissions de télévision, de dessins animés et de courts métrages. (Information au 13 novembre 2018).
Pour commencer, limitons-nous au nombre rond de 1 million de vidĂ©os. Il est clair que nous n'essayons mĂȘme pas de toucher Ă YouTube et Ă d'autres services similaires, oĂč le volume vidĂ©o est plusieurs fois plus important. Et surtout, cette boule de neige ne fera que croĂźtre.
Nombre de cadres
Certains films ou épisodes de séries télévisées sont assez courts. Il y a 15-20 minutes. D'un autre cÎté, il y a pas mal de films d'une durée maximale de 2 heures ou plus. Sans plus tarder, prenons la durée moyenne de la vidéo égale à 1 heure.
Un grand nombre de films ont Ă©tĂ© tournĂ©s Ă 24 images par seconde, mais il y en a aussi des plus rapides. De nos jours, tout le monde peut tourner son propre film et la cadence d'images peut ĂȘtre de 60, 100 et 200 FPS et plus. Tout dĂ©pend d'un camĂ©scope, d'une camĂ©ra, d'une camĂ©ra d'action, d'un smartphone, d'une camĂ©ra de vidĂ©osurveillance, etc. (souligner le nĂ©cessaire). Tout est entre nos mains. Mais, prenons comme premiĂšre approximation la frĂ©quence d'images d'une vidĂ©o moyenne Ă©gale Ă 30 FPS.
Dans ce cas, la vidéo moyenne sera:
30 FPS * 3600 s = 108 000 images
En arrondissant, nous obtenons que la vidéo moyenne est d'environ 100 000 images.
Volume de données
Quelle est la capacitĂ© de stockage pour un cadre? Ăvidemment, cette valeur dĂ©pend de l'algorithme de comparaison des cadres de notre base de donnĂ©es avec un Ă©chantillon donnĂ©. Nous utilisons deux algorithmes pour comparer les donnĂ©es. L'un d'eux nĂ©cessite environ 30 octets par image, l'autre environ 10 octets. Prenons la moyenne - 20 octets.
Cela signifie que pour stocker des informations sur 1 million de vidéos, 1 000 000 de vidéos * 100 000 images * 20 octets = 2 000 000 000 000 d'octets sont nécessaires
En termes simples, nous avons besoin d'environ 2 To pour dĂ©crire en quelque sorte tous nos cadres. Ce qui, d'une maniĂšre gĂ©nĂ©rale, n'est pas si mal, car cette quantitĂ© d'informations peut tenir sur un disque dur ou SSD moderne. D'un autre cĂŽtĂ©, ces informations devraient ĂȘtre en quelque sorte rationalisĂ©es, sinon mĂȘme une simple lecture de 2 To prendra beaucoup de temps, et nous avons convenu que l'utilisateur n'attendra pas plus de 10 secondes.
MĂȘme si nous lisons des informations sur le disque Ă une vitesse de 500 Mo / s, il nous faudra 2000 secondes, soit plus d'une demi-heure!
De combien de serveurs avons-nous besoin pour rechercher une heure spécifiée?
Si nous supposons que nous stockons les informations uniformĂ©ment sur plusieurs serveurs, alors, dans ce cas, la quantitĂ© d'informations traitĂ©es pour effectuer une requĂȘte de recherche diminue. Par exemple, si nous avons 10 serveurs, chacun d'entre eux devra traiter non pas 2 To d'informations, mais seulement 200 Go. Ou si nous avons 100 serveurs, nous devons traiter non pas 2 To, mais 20 Go d'informations. En principe, le montant spĂ©cifiĂ© devrait ĂȘtre suffisant pour le fonctionnement d'un tel moteur de recherche.
Combien de requĂȘtes par seconde un tel systĂšme peut-il digĂ©rer?
Il est difficile de rĂ©pondre exactement, mais trĂšs probablement un maximum de plusieurs dizaines de requĂȘtes par seconde.
Ce qui a été fait
Tout d'abord, nous avons implĂ©mentĂ© une recherche par fragments vidĂ©o. Cependant, la recherche d'images a Ă©tĂ© rapidement mise en Ćuvre.
Histoire
1 juillet 2019
Ce jour-là , la premiÚre version du package VideoColor a été publiée. Il comprenait trois parties:
- Manager (indexation vidéo source)
- Serveur (le back-end qui accepte les demandes et recherche une correspondance dans la base de données d'index)
- Client (une application cliente qui vous permet de lire des fichiers AVI et d'envoyer des requĂȘtes de recherche au serveur).
Mars 2020
Un site Web a été créé avec la possibilité d'identifier les vidéos par le fragment vidéo téléchargé.
14 avril 2020
Sortie de la premiÚre version de l'application pour l'identification vidéo et le positionnement de la vidéo en cours de lecture en capturant le contenu d'une partie de l'écran du moniteur.
23 juin 2020
La premiÚre version de l'application permettant d'ajouter des informations d'index et de description sur la vidéo à la base de données du site a été publiée.
Recherche par fragments vidéo
idée principale
Nous considérerons une vidéo comme une séquence d'images. Pour chaque image, trouvez la moyenne du rouge, du vert et du bleu. Nous obtenons trois graphiques en fonction du temps. Construisons et sauvegardons ces graphiques pour chaque vidéo que nous voulons indexer.
AprĂšs avoir reçu un fragment vidĂ©o pour identification, nous construirons ces graphiques pour cela. Comparons les graphiques obtenus avec ceux dĂ©jĂ disponibles. Bien entendu, des comparaisons devront ĂȘtre faites sur toute la longueur de chaque film original. Si la diffĂ©rence entre les graphiques en un point spĂ©cifique est infĂ©rieure Ă une certaine valeur, alors nous considĂ©rons que le problĂšme est rĂ©solu.
Il est à noter qu'il s'agit d'un schéma simplifié. Plusieurs points du flux de travail diffÚrent de ce qui est décrit ici. Mais, en général, c'est l'idée.
avantages
- . 1 . , 1000 , 2 , 2 .
- . , , .
- 5-10 .
- ( ).
- . . , . , , .
- . .. . , . , . , . , 2- DDR3 1600 12 0,5 . 48 2- .
- ( ) . . , , , .
- . , , . â .
- .
Divisez l'image d'origine en cellules de tableau M x N. Trouvez la valeur moyenne des composantes rouge, verte et bleue dans chacune des zones. En fait, l'ensemble de ces valeurs sera la caractéristique de cette image, à l'aide de laquelle nous pourrons toutes les distinguer les unes des autres. Nous saisissons cette caractéristique dans la base de données avec le pointeur vers la description de la vidéo (ID vidéo) et le numéro de série de l'image dans la vidéo. La seule question qui reste est de savoir quelles valeurs prennent M et N? Nous avons pris 5 x 5, mais vous pouvez essayer d'autres valeurs. Avec de petites valeurs de ces paramÚtres, il y a une chance que nous ayons de nombreux doublons, et avec de grandes valeurs, nous dépenserons beaucoup de mémoire.
Cependant, ce n'est pas tout. Si vous recherchez davantage toutes ces caractĂ©ristiques, le traitement de chaque demande prendra beaucoup de temps! Comment ĂȘtre? Vous pouvez calculer la valeur moyenne des composants R, V, B pour cette image et, en fonction de ces valeurs, les regrouper dans le tableau de donnĂ©es. Par exemple: R = 200, G = 188, B = 212. Dans ce cas, nous saisissons des informations sur le cadre dans la section appropriĂ©e ou ajoutons un champ Ă la table. Et lors de la recherche, nous dĂ©finissons ces composants de maniĂšre similaire et recherchons en tenant compte de ces paramĂštres. Ainsi, nous rĂ©duisons considĂ©rablement la quantitĂ© de donnĂ©es comparĂ©es et accĂ©lĂ©rons la recherche.
Pour ĂȘtre honnĂȘte, ce n'est qu'en thĂ©orie, en pratique tout est un peu diffĂ©rent. Mais c'est un sujet pour un article sĂ©parĂ©.
avantages
- Taille des données relativement petite.
- Il est possible de diviser toutes les données en groupes et de rechercher par groupes, ce qui accélÚre considérablement la recherche.
- Contrairement à la méthode précédente, il ne nécessite pas de stockage permanent de grandes quantités de données dans la RAM.
- Faible probabilité d'erreur.
Moins
- En raison du fait qu'aprĂšs le transcodage, la vidĂ©o peut lĂ©gĂšrement diffĂ©rer de l'original, et le codage JPEG (lors de la recherche par image) modifie l'original et le groupe peut ĂȘtre dĂ©terminĂ© de maniĂšre incorrecte. Cela nĂ©cessite soit d'Ă©largir la portĂ©e du groupe (entraĂźne une diminution de la vitesse de recherche), soit des requĂȘtes de recherche supplĂ©mentaires (ralentit Ă©galement la recherche).
Outils
à ce jour, plusieurs applications ont été écrites, certaines d'entre elles sont devenues obsolÚtes et ne sont plus supportées.
Recherche vidéo (cÎté client)
- Via un formulaire web sur le site
- Via l'application "Video Color Capture"
Recherche vidéo (backend)
- Video Color Server. : Windows ( ) Linux ( , crontab).
- «Video Color Creator»
- .
- .
- ().
- () .
- - , .
Supposons que vous ayez un fichier avec un nom maladroit. L'écran de démarrage initial est soit manquant (l'intention de l'auteur), soit coupé. Quel est ce film? J'aimerais lire la description et les commentaires de ceux qui l'ont consulté.
Rechercher et supprimer des blocs d'annonces
Exemple: vous disposez de votre propre lecteur vidéo auto-écrit et vous souhaitez que vos utilisateurs voient vos propres annonces, et non les chaßnes centrales, lorsqu'ils regardent des vidéos en streaming.
Vérifier des parties de la vidéo pour les emprunter à d'autres films (plagiat)
Exemple: s'il y a un soupçon que quelqu'un utilise votre vidéo (prise à partir d'un quadcopter) dans sa vidéo.
DĂ©termination de la date exacte de publication et du nom du spectacle (programme) si cette information est absente du repost
Exemple: vous regardez une Ă©mission vidĂ©o hĂ©bergĂ©e sur un site inconnu. Vous savez peut-ĂȘtre mĂȘme comment le spectacle s'appelle mais ne savez pas quand il a Ă©tĂ© montrĂ©. Il y a un an ou deux?
Détermination d'une position plus ou moins précise de la vidéo en streaming en cours de lecture si une vidéo précédemment indexée est diffusée
Exemple: Cela peut ĂȘtre nĂ©cessaire si vous souhaitez joindre une application Ă la vidĂ©o en continu de quelqu'un d'autre qui montre des titres ou d'autres informations contextuelles (cartes, liens, actualitĂ©s, etc.). Tout d'abord, il y a la capture vidĂ©o, le calcul d'index, l'identification vidĂ©o et la position sur le serveur, puis l'application affiche des informations contextuelles dans une fenĂȘtre sĂ©parĂ©e, synchronisĂ©e avec la vidĂ©o en cours de lecture.
Comment utiliser le service
Rechercher une vidéo via un formulaire Web sur le site
Pour ce faire, vous devez télécharger un fragment vidéo ou une image dans le champ correspondant du formulaire.
Il est à noter que si un fragment vidéo est chargé, le serveur s'occupera d'abord du storyboard de la vidéo téléchargée et de son traitement, ce qui nécessitera du temps supplémentaire.
La page de résultats contient le titre du film, le nom du réalisateur, des informations sur le pays d'origine, l'année de sortie, le genre, les noms des acteurs, une brÚve description, la longueur de la vidéo, ainsi que la position trouvée dans la vidéo, des liens vers des informations supplémentaires et une image tabulaire des images de la vidéo.
Rechercher des vidéos à l'aide de l'application
La recherche de vidĂ©o Ă l'aide de l'application est beaucoup plus rapide, car tout le prĂ©traitement est effectuĂ© cĂŽtĂ© client et seule une petite partie des donnĂ©es d'origine est envoyĂ©e au serveur. Cela met moins de charge sur le canal et augmente la vitesse de la requĂȘte de recherche.
Puis-je à lui seul remplir le contenu d'une base de données avec des informations d'index pour un million de vidéos?
TrĂšs probablement non. OĂč puis-je obtenir ces vidĂ©os? Comment les pomper sur le rĂ©seau? OĂč trouver les ressources informatiques pour les traiter?
Mais vous pouvez rendre la base disponible pour le remplissage par les utilisateurs eux-mĂȘmes. Et cela a dĂ©jĂ Ă©tĂ© mis en Ćuvre. Nous avons rempli la base de donnĂ©es d'une centaine de vidĂ©os et vous pouvez vous assurer que notre service fonctionne. Vous pouvez Ă©galement tĂ©lĂ©charger et installer une application gratuite pour indexer les vidĂ©os et ajouter une description, puis tĂ©lĂ©charger des donnĂ©es sur le serveur. L'application permet Ă l'avenir d'effectuer certaines opĂ©rations avec les donnĂ©es chargĂ©es: suppression, Ă©dition de la description, visualisation et recherche.
Si vous décidez d'ajouter votre vidéo ou une autre, veuillez vous assurer que cette vidéo n'est pas encore dans la base de données. Vous pouvez rechercher dans l'application par nom, directeur, année de création et d'autres paramÚtres.
La vitesse de crĂ©ation des informations d'index dĂ©pend de la puissance de votre ordinateur et des caractĂ©ristiques de la vidĂ©o elle-mĂȘme (rĂ©solution, codec, frĂ©quence d'images). En moyenne, le traitement prend quelques minutes. Ă ce stade, l'utilisateur peut remplir les champs de texte de description de la vidĂ©o.
Projets pour le futur
- Accélération de la recherche.
- Amélioration de la précision de la recherche.
- Recherche par fragments audio.
La recherche de vidéo par de courts fragments audio complétera les deux méthodes de recherche existantes (par fragments vidéo et images).
RĂ©sultat
- Dans cet article, nous avons passé en revue l'état actuel de la technique avec la recherche vidéo.
- Nous nous sommes familiarisés avec les méthodes de recherche vidéo par court fragment vidéo et image.
- Nous avons parlé de l'application de recherche vidéo Video Color Capture .
- Il a été fait mention de l'application Video Color Creator pour l'ajout à la base de données vidéo partagée du logiciel AAP .
Liens
Site Internet
http://www.videocolor.aapsoftware.ru/
Le site propose une recherche par un court fragment vidéo, ainsi que par une image de la vidéo.
Applications
- Application d'identification vidéo Windows x64 Video Color Capture
- Application Windows x64 pour ajouter une vidéo à la base de données Video Color Creator
- Toutes les applications sont gratuites.
Vidéo
- Rechercher une vidéo par image et rechercher une vidéo par court segment vidéo
- Rechercher un film par fragment de vidéo
- Identification vidéo à l'aide de la capture vidéo des couleurs
- Vidéo de travail avec le programme "Video Color Capture" version 1.1
- Travailler avec le programme "Video Color Creator" version 2.0