Repeindre le texte dans vos vidéos avec le deep learning

By 10 février 2021avril 9th, 2024Technique

Faire disparaitre un texte dans une vidéo peut être particulièrement fastidieux, en particulier si le texte est animé. De plus, le rendu avec un effet de floutage appliqué sur le texte reste visible et dégrade la qualité visuelle de la vidéo. Dans cet article, nous vous proposons une méthode pour effacer le texte de vos vidéos de manière automatique à l’aide du deep learning. Nous avons d’ailleurs intégré cette solution parmi les fonctionnalités de notre outil de montage vidéo openveo-prod.

Fonctionnement du modèle

Notre solution se base sur deux réseaux de neurones profonds : le premier détecte les textes dans l’image tandis que le second repeint les zones concernées.

Pour la détection du texte, nous nous sommes basés sur le modèle CRAFT (github). Celui-ci utilise un réseau à base de convolutions 2D classique (VGG-16) afin de détecter les caractères ainsi que leurs affinités dans chaque image. Dans notre cas, nous utilisons directement la carte de détection en sortie du réseau de neurones pour créer un masque. Celui-ci sera utilisé dans un deuxième temps pour définir les zones à repeindre par le second modèle.

Fonctionnement de notre solution de text-inpainting : 1) image originale, 2) carte de détection, 3) masque, 4) image repeinte.

L’image inpainting est un problème classique de retouche ou de restauration d’images. Le but consiste à repeindre une zone définie afin de faire disparaitre les éléments qui y sont présents. Si vous souhaitez voir des exemples, Nvidia propose une démo en ligne que vous pouvez tester facilement.

Dans notre cas, nous utilisons un réseau de neurones de type GAN (lire notre article pour plus de détails sur les GANs) afin de repeindre les zones données par notre masque. Le modèle d’inpainting utilisé est celui proposé dans le projet General Image Inpainting.

Pistes d’améliorations

Notre solution montre cependant quelques imperfections. D’une frame à l’autre, toutes les informations obtenues par les modèles sont perdues. Comme nous le voyons dans la figure ci-dessous, la génération est très différente entre deux frames proches. Pour résoudre ce genre de problème, nous pourrions utiliser un modèle plus adapté à la vidéo tel que ce projet.

Comparaison de la génération entre deux frames consécutives