En bref, fait la couleur blockbuster centenaire

Synopsis

La coloration des films avant cette année a coûté des centaines de milliers de dollars, a nécessité la participation d'une masse de spécialistes et a pris beaucoup de temps. Maintenant, tout a changé. Le développement du projet Deoldify a atteint un tel état que les résultats de son travail peuvent être confortablement observés en relaxant le visage. À partir du texte, vous découvrirez les détails d'une expérience réussie de colorisation d'un film sans frais, réalisée en quelques semaines par une seule personne.


retourner l'image


10 commencer

Cette histoire a commencé comme toute autre histoire similaire. L'algorithme de recommandation YouTube extravagant a produit quelque chose qui a attiré mon attention et qui a eu les conséquences les plus inattendues. L'avant-dernière fois, cela a conduit à rester sur le canal des armes oubliées. Il est difficile de comprendre pourquoi on m'a donné une telle offre à l'époque, mais c'était probablement comme ceci:

1. user_id regarde des vidéos sur RDR2.
2. Il y a un pistolet volcanique dans RDR2.
3. Sur le canal des armes oubliées, il y a une revue du pistolet volcanique.
4. Les personnes intéressées par RDR2 veulent souvent en savoir plus sur le pistolet volcanique.
5. Mille démons, mais des armes oubliées viendront à lui!

Moins de deux jours plus tard, j'ai déjà étudié la littérature partisane sur la fabrication de divers types d'armes à feu, regardé à travers des photographies de karamultuk de pays tiers et examiné à quel point il était facile de couper le tronc d'une maison. Déchiré entre les options: acheter un semi-jouet et le mettre dans le bon état ou assembler un ensemble de pièces dans une quincaillerie. Finalement, la tombola du magasin a gagné pour des raisons légales. Heureusement, il n'y a pas eu de réponse à la question «pourquoi», et les actions actives dans ce sens ont échoué.


Et envelopper ....

Cette fois, il n'y avait aucune raison évidente de jeter un œil au Charlie Chaplin de couleur. Les voies de réponse du réseau neuronal sont mystérieuses. La vue observée a provoqué d'abord de la confusion et des questions, puis une violente salivation mentale. Contrairement aux tentatives auparavant déplorables de coloration automatique, cette séquence vidéo a été perçue comme un spectacle tout à fait crédible. Creuser, bien sûr, c'était quoi, mais:

a. il n'y avait pas de contrariété de bizarrerie
b. il y avait vraiment un sentiment de la profondeur de l'image, supprimant la complexité de la perception des images n / b par le cerveau moderne

La curiosité a traîné, étudiant déjà un projet sur github. Après le test de la version cloud sur quelques photos, après avoir regardé les vidéos, j'ai clairement commencé à voir un peu de désir en moi. La possibilité de remettre des preuves réelles du passé dans le contexte médiatique actuel, sans investir des centaines de milliers d'argent, hmm, il y a quelque chose d'excitant à ce sujet, quelque chose de tout à fait suffisant pour revigorer l'esprit de refroidissement.

«Essayons», cette phrase sacrée, qui se prononce timidement, mais quelque part dans les profondeurs de l'âme, il y a déjà un noyau de compréhension qu'une bonne histoire commence maintenant.


Observation

Eh bien, supposons que le moteur, l'action. Nous prenons la première séquence vidéo pendant 4 minutes. Quoi en premier? Supprimez les vils tremblements de l'appareil photo et du film, qui sont toujours dans un tel matériau par défaut. Il recherche les options disponibles avec une large gamme de contrôle et en dehors des éditeurs vidéo. Comme il était nécessaire d'utiliser toute une chaîne d'outils logiciels différents, l'utilisation de tout progiciel de montage vidéo standard a immédiatement disparu. Seulement des images uniques avec des fichiers, uniquement du hardcore. Et, bien sûr, il est nécessaire non seulement de se stabiliser d'une manière ou d'une autre, mais de se stabiliser cinématographiquement, en imitant les mouvements limités et fluides de la caméra. Au moins une certaine confiance a été causée par un seul module pour python. Eh bien, ça veut dire que le code ira tout de suite.

Stabilisé. Un peu long, d'accord. Wow, cool, il s'est avéré, oui, ce dont vous avez besoin, bien sûr, vous devez terminer avec un fichier, mais sinon pourquoi sommes-nous ici? Plus d'auto-floraison. On le met, on le met, on en met un autre, encore un conflit, on le met toujours, en haut, sur le côté, on n'abandonne pas, peut-être le manuel lu, semble-t-il, il est allé, non, supprimer dir, encore une fois, oh, c'est tout, bon, enfin. Lancer. Merde, quelque chose de très long. Mais les couleurs, les couleurs, wow, vous avez raison, mais dans tout cela, cependant, cela a du sens et cela vaut la peine de continuer.

Et maintenant Probablement, en 2019, l'interpolation d'images n'est pas quelque chose d'exceptionnel, et vous pouvez creuser un projet pour une utilisation professionnelle conditionnelle. Et pourtant oui, succès encore, un tel projet est disponible gratuitement. Nous le mettons, le mettons ... Lancement. Merde, quelque chose n'est pas encore rapide. Mais comment en douceur, comment en douceur les cadres se remplacent, un miracle, comme si les 24 cadres habituels.

Alors, c'est ce qui sort, tout a fonctionné? L'ensemble du convoyeur ici est prêt à l'emploi, il vous suffit de jeter quelque chose dessus et d'obtenir le résultat?

:: résolu ::


Difficultés temporaires

À chaque étape du traitement, le temps passé a été enregistré. J'extrapole pendant 90 minutes: des attaques de découragement, pour dire le moins. J'ai même vérifié les mesures et les calculs plusieurs fois, car les chiffres obtenus ont transformé l'idée originale de «juste-rapide-facile-amusant» en «juste-longtemps-facile-triste». Bien que plus tard, deux autres mots dans cette formule changeront pour le pire, mais il y avait déjà quelque chose à penser sérieusement.

Ainsi, le film sélectionné prendra 4 heures de stabilisation, 420 heures de floraison et 30 heures d'interpolation d'images. Ouais ... Eh bien, merci, Charlie.

Cho de faire quelque chose? Le Mac mini 2012 à huit cœurs est la seule chose que vous pouvez exploiter. Devant mes yeux se tenait une vidéo avec Linux fonctionnant sur PS4. Les dents grinçaient dans une colère impuissante face à l'impossibilité de faire reculer les mises à jour du firmware, qui ont été installées avec la fière conviction que le jailbreak n'était pas nécessaire. ¿Comment tous ces projets python fonctionneraient-ils là-bas? ¿Y aurait-il accès aux calculs sur le GPU? Je n'étais pas destiné à étudier ces questions.

Il restait soit à se rendre, soit à se lancer humblement et à attendre. La remise n'est pas une option. Attendez quelques semaines aussi. Mais il n'y avait pas d'autre option.


Stabilisez-le


À propos de l'outil de stabilisation
Lien vers le projet de stabilisation vidéo: pypi.org/project/vidstab
Description: le projet utilise les fonctions opencv pour déterminer le décalage du cadre par rapport à la valeur attendue, calcule la compensation de décalage nécessaire et effectue un recadrage pour masquer les bords de saut, créant ainsi une image en mouvement fluide. En raison de la possibilité de choisir une méthode de recherche des différences entre les trames, cela permet d'obtenir un degré de stabilisation / rapport de perte de pixels différent. Il a une fonctionnalité de débogage très utile pour afficher graphiquement les valeurs d'entrée et calculées.


Enfin, la dure réalité commence à pénétrer dans un monde confortable. En plus des problèmes matériels, des problèmes logiciels apparaissent. Ce qui a fonctionné dans un test par défaut sur un clip vidéo de test commence à échouer ici et là dans un film à part entière. (De façon inattendue, hein?)

Je dois avouer qu’il est temps d’échanger des pantoufles contre des bottes en caoutchouc, et il est préférable de retrousser les manches, car je ne le voudrais pas, mais l’immersion dans l’intérieur du module ne peut pas être évitée.

La principale difficulté est le changement de scènes. Le projet est conçu pour gérer uniquement de courts fragments dans lesquels le contexte ne change pas. Après avoir étudié ce qui se passe et comment cela se produit, il y a une place pour un patch approximatif, dont le sens est de désactiver la stabilisation aux décalages de trame élevés. Sans ce patch, l'effet négatif s'est manifesté comme une exploration fluide de la scène suivante, quelque part du bord vers un champ noir.

Au lieu de lancer le script terminé, un script est apparu à la fin, dont l'essence réside dans le recadrage du cadre et la définition des valeurs optimales. Le code donné n'a aucune valeur, car il répète essentiellement l'exemple de l'auteur du module, mais vous devez diluer le texte avec quelque chose.


retourner l'image

Une découverte intéressante en était exactement une: pour quelques scènes, le recadrage a été effectué de façon linéaire, ce qui crée un effet d'approximation, mais masque en fait des sauts de cadre complètement sauvages dans la scène. Si vous configurez immédiatement un recadrage étroit, alors beaucoup d'informations sont perdues, dans la version finale, le spectateur ne remarque rien de suspect, car le «zoom avant» est combiné avec un rythme dramatique.


Cher long


À propos de l'outil de floraison
Lien vers le projet: github.com/jantic/DeOldify
Description: Le projet réalise des images couleur en noir et blanc. Il a trois modes de fonctionnement: photographies, images d'art, vidéo. Pour chaque mode, vous devez télécharger l'état de votre modèle. Il est possible de former le modèle par l'utilisateur. L'auteur du projet a utilisé une approche non standard pour l'architecture du réseau neuronal, grâce à laquelle un effet stable a été obtenu, différent des autres implémentations.


retourner l'image

L'ordinateur est emporté dans la cuisine, car le Mac Mini, généralement silencieux, sous charge, fait constamment du bruit. Peu de propriétaires de ces gadgets parviennent à entendre ce son, car ce qu'ils considèrent comme le bruit des ventilateurs (qui peut être entendu à une charge grave) n'est que la moitié de la vitesse du possible. La floraison commence.

Les fichiers du projet ont dû être patchés un peu afin d'apprendre à travailler avec mes données entrantes, et les mettre dans le bon format, l'ordre et la vue. Bien que nous devions écrire un petit script pour l'exécuter, nous supposons que le projet fonctionne sans fichier. Des questions ne peuvent se poser que sur le paramètre render_factor.

L'effet sur le résultat est le suivant:
0-7 bouillie complète
8-12 couleurs sursaturées, coloration rugueuse (pour les scènes mal reconnues, cela donne au moins un certain effet)
13-18 est ainsi pour vous-même, pour les scènes non reconnues, cela vaut la peine d'essayer cette gamme en premier
19-20 pour des expériences (nous effectuerons des goulottes de barres à partir d'écorce de bouleau)
21 est le nombre optimal
> = 22 la saturation commence à se perdre, le sens de l'usage diminue

Plus ce nombre est petit, plus la consommation de mémoire est faible et plus le calcul est rapide.


retourner l'image

Ouais Le lendemain, des souvenirs surgissent dans ma tête que le processeur i7 a le mode turbo, et même d'une manière ou d'une autre son fonctionnement a été vérifié. Des informations sont trouvées sur la façon de l'activer sous Windows et les utilitaires de test commencent à afficher des valeurs de fréquence centrale plus vigoureuses. La température du processeur passe de 85 à 99 ° C. Une casserole d'eau est placée sur le dessus pour éliminer la chaleur. De dessous le refroidisseur souffle de l'ordinateur portable. Si plus de 5% des images étaient traitées par jour auparavant, alors en mode accéléré, cette valeur devenait 7%. Au moins un peu de joie.


retourner l'image

L'aventure nous attend

Tout programme peut tomber. Bien sûr, la floraison est tombée. Eh bien tombé, redémarrez. Et puis est venu "oh". Parfois, les versions pour les expériences tombent dans la prod, vous savez, donc quand j'ai patché les modules du projet, j'ai été distrait et j'ai oublié de regarder toute la chaîne et la signification de chaque instruction et j'ai considéré que le patch était terminé. Le projet supprime initialement le dossier temporaire, en crée un nouveau, y ajoute les images extraites de la vidéo ... en général, vous avez déjà deviné que le dossier avec les résultats de la journée m'avait été soufflé.

Ensuite, il y a eu R.saver, pendant plusieurs heures au lieu de fleurir, nous scannons le disque, et c'est un inconvénient par rapport au temps de rendu. Nous passons à un autre ordinateur avec le enregistré. De plus, bien sûr, il s'avère que, puisque le problème n'a pas été remarqué immédiatement, un tas de fichiers n'ont pas le contenu complet. Nous devons écrire un vérificateur afin, d'une part, d'estimer les pertes, et d'autre part, de compiler une liste de cadres pour la re-floraison.

Smaku ajoute que la floraison supprime les images d'origine, et il est normal de ne pas se confondre lors du redémarrage de ce qui doit être traité et de ce qui ne l'est pas. Il n'est pas normal d'avoir un dossier d'images stabilisées, pas «bien, qu'est-ce qui ne va pas» et «si cela, vous pouvez toujours vous stabiliser à nouveau». Eh bien, oui, tout est possible en passant du temps.


Affaires, inquiétudes

D'accord, il semblait que la vie s'était en quelque sorte améliorée, le minicut bourdonnait doucement, il était déjà possible de planifier d'autres travaux et d'écrire des scripts pour le post-traitement.

L'observation de la matière fleurie, outre la joie, a également causé des ennuis. Il y avait deux choses désagréables. Premièrement, la tonalité de couleur galopait entre les images, probablement en raison de la luminosité inégale de la source.


retourner l'image

Deuxièmement, un tas de cadres en double est apparu. Il semblerait pourquoi, mais, apparemment, les lecteurs vidéo domestiques ne sont pas devenus fous avec quelque chose de moins de 24 images / s.

Il y a des problèmes et ils doivent être résolus d'une manière ou d'une autre. Il devient évident que le flux d'images doit être décomposé en scènes. Pour régler la tonalité / luminosité, vous devez avoir des bordures. Et pour ne pas supprimer les textes avec des cadres en double, il est nécessaire de diviser les cadres en texte et non-texte.

De longues expériences commencent à déterminer la similitude du personnel. Eh bien bonjour, qu'est-ce que tu es?
Ignorons les lancers de cœur (ils seront visibles par le code), le nombre de versions, les méthodes essayées (visibles par le nombre de fonctions auxiliaires).


retourner l'image

Je vais essayer d'expliquer la version finale.


retourner l'image

Nous chargeons deux images séquentiellement. Nous faisons un léger flou, le diable sait pourquoi, mais si c'est le cas, alors les expériences ont montré une amélioration des résultats (peut-être que l'influence du bruit est éliminée). Trouvez les points clés dans les cadres et comparez-les.


retourner l'image

Explication pour ceux qui ne connaissent pas l'ouverture:

Recherche de points clés (points-clés, kp) - mettant en évidence les caractéristiques qui restent inchangées lorsque l'image change. Très grossier, mais simple, il peut être imaginé comme un tableau de micro-hachages.

ORB est l'une des nombreuses méthodes de mise en évidence des points clés.

des - descriptions, descriptions paramétriques des points clés.

BFMatcher - raifort pour comparer les points clés en utilisant des. Sa tâche consiste à sélectionner le même point dans deux matrices et à calculer la distance de départ de chaque point d'enroulement par rapport à sa position d'origine. Désolé ma mine inglezh.

Il s'avère que plus la distance totale du déplacement des points est petite, plus les cadres sont identiques.


retourner l'image

Si le score est supérieur au nombre magique, alors il vaut la peine d'effectuer des vérifications supplémentaires, peut-être que c'est vraiment une scène différente? Tout d'abord, vérifions s'il y a un cadre de deux textes, premièrement, nous avons besoin de cette fonctionnalité, et deuxièmement, si le type du cadre a changé (texte -> not_text), alors la scène a définitivement changé. Réduisez l'image couleur à monotone et envoyez la personne malsaine à la détection de texte (bien que is_text soit encore plus beau).


retourner l'image

Si vous essayez de décrire l'essence, alors il y a une recherche de contours fermés, et s'il s'avère que nous avons de nombreux contours qui correspondent à nos attentes magiques, alors il est fort probable que ce soit du texte. Comme vous pouvez le deviner, ce code a remplacé is_text, il peut être considéré comme réussi, bien qu'il y ait des échecs sur de très GRANDES lettres et des scènes comme des reflets sur l'eau noire. Avec des mots, il sera difficile de transmettre tout le lancer entre les différentes options «simple, mais ça marche» et «ça marche définitivement, mais exagéré». Une sorte de redneck d'ingénierie ne nous permettait pas d'aller loin de la solution «bandes noires sur tous les bords = texte».


retourner l'image

Si le texte ne sent pas ici, alors nous essayons de comparer les histogrammes en noir et blanc, si les soupçons s'intensifient, puis nous comparons ceux en couleur, si c'est directement très suspect, alors nous le comparons dans un cadre, donc c'est sûr.


retourner l'image

Ici, des actions purement pratiques: si le script voulait faire une courte scène, alors il lui semblait probablement préférable d'ajouter cette scène à la précédente. Et s'il y a plus de 90 images dans la scène, cela augmentera le temps de traitement ultérieur de la scène.

Trouver quelque chose pour compenser le ton n'a pas été facile. Un seul article scientifique et projet connexe sont évidemment google.

Outil pro pour stabiliser la tonalité des couleurs
Lien vers le projet: github.com/Al-th/MVA_Project_TonalStabilization
Lien vers un article décrivant l'essence mathématique: www.cse.huji.ac.il/labs/cglab/projects/tonestab
Description: Le projet examine d'abord les images de la vidéo, en calculant les différences locales d'images dues au hardcore matan. Dans la deuxième passe, ces différences sont réduites à la valeur «correcte» calculée.


Il y a un petit problème. Voici Matlab. Pour une raison quelconque, je ne voulais vraiment pas mettre immédiatement ce monstre et me traîner vers GNU Octave. Le code, bien sûr, n'était pas complètement compatible, je devais comprendre comment lire et écrire des images, satisfaire les attentes de ces fonctions qui fonctionnent différemment dans Octave, en général, le langage n'est pas entièrement conforme au courant dominant, plus j'ai dû me plonger dans différentes nuances Matanov, et c'est un jour perdu.

Quand cela a finalement fonctionné, la vitesse de traitement est pour le moins contrariée. 20 secondes par image. Même sur l'ancien processeur, c'est exagéré. Bon, voyons comment va Matlab. "Choisissez un forfait." Eh, mais xs de quoi ai-je besoin, eh bien, allons avec DSP. Et lancez-vous! "Le package de traitement d'image n'est pas installé dans votre version." Bon, ok, j'ai encore des adresses gratuites pour l'inscription.

Enfin ça a commencé et même travaillé beaucoup plus vite qu'en Octave, mais encore trop long, comparable à la floraison, cette fois, et d'autre part, les résultats des corrections reçues n'ont pas répondu à mes attentes.


Si vous voulez faire quelque chose, faites-le vous-même. Je n'ai pas envie de le faire moi-même, mais je dois le faire. Googler avec la dépendance a finalement aidé à trouver au moins quelque chose dans l'opencv qui pourrait m'aider. Un ensemble de classes a été trouvé pour l'assemblage de photos panoramiques, parmi lesquelles un mécanisme pour corriger les différences de lumière et de ton. Pas tout à fait ce dont vous avez besoin, mais au moins c'est une option.

Après de longues expériences avec le seul (oui!) Exemple d'utilisation de cette chose, j'ai finalement obtenu un code utile.


retourner l'image

Toute la magie était d'établir expérimentalement une classe qui convenait à mes besoins et de déterminer le format du masque. Ensuite, c'est évident: alimentez le compensateur avec des images pour calculer la valeur moyenne de l'exposition totale et le niveau de chaque canal de couleur, puis re-palmez la source pour la conversion.

Le premier résultat ne me convenait plus. , . , , . - . , .

.




, . « , ». , , , .

, , , , . small_wb , run, , , , - - . , . , .

. , , , . . Presque.


, , . , - . , . , . , , .

github.com/sniklaus/3d-ken-burns

, , . Mais. . «». «», , , . Dommage.

opencv.




, . , .




, , , , , .





, , -, . , -. , , . , , , , . - . : . , , , . , , , , (, ) mac mini .

, , , .

. , - . , , .


, , . - , . , , . , , , / . , « , ».

, , (, , ?), / . , . «». , , 2014. « ». - , . , «», « ?», - . ? ? ? . ! !

. , «», ? , .

3 , . - . , , . , . «---» - . .


,

GPU- . . , .

, , . . . , . , , , 720 400 . , . . , Pentium 133 ( Cyrix 100, ). , . . , , , . ? . , , .

2 , , . , , 12 , .

, , ssd . , , - , .

, . ! ? , - GPU. , , , «if APU available», APU , , ? Non.




Nous n'hésitons pas à overclocker et à obtenir un 1 GHz gratuit, un long choix de refroidisseur et son coût ont payé. Nous avons mis un coloriste. Nous commençons. Boum! CUDA manque de mémoire. Cool, super, nous allons le découvrir le matin.

Le matin, il n'y avait aucun souvenir. Google a signalé que cette erreur signifie que la taille de la mémoire vidéo disponible est inférieure à celle nécessaire. Je ne voulais vraiment pas y croire, car cela ne devrait pas être vrai. Après tout, je ne pouvais pas me tromper, ayant acheté une version d'une carte vidéo avec une mémoire épurée, non je ne pouvais pas, mais je ne me trompe jamais.

Les expériences ont commencé par le nettoyage forcé de la mémoire, en changeant les paramètres, l'espoir était donné par le fait que la chute ne se produisait pas immédiatement, que plusieurs images avaient le temps d'apparaître sur la sortie. Il était possible de démarrer le redémarrage de la floraison dans un cycle, bien sûr, mais le temps de préparation pour le lancement était d'environ 2 minutes, et cela n'avait aucun sens.

Soudain, le script de débogage a commencé à fonctionner correctement, et le traitement a volé, je n'ai aucune idée de ce que j'ai fait là-bas, j'ai décidé de ne rien toucher et de récupérer mes cadres de couleur déjà. Les 60% restants des images se sont terminés après 5 heures. À ce jour, le traitement sur une minicar ne commencerait qu'à se terminer, oh, pauvre minicar.


Commence toujours

Exécutez le script de recherche de scène et remplissez les répertoires. Nous allons plus loin, vérifions si quelque chose ne va pas, nous le réparons. En général, tout va bien. Ensuite, vous devez nettoyer les images en double afin d'exclure une perte de temps lors de manipulations ultérieures. Un hitch, comment être sûr que le script ne supprimera que le nécessaire et ne manquera de rien. Si vous pensez logiquement, ajouter des images supplémentaires ne devrait pas être chaotique, mais devrait avoir une sorte d'algorithme. Bien sûr, il ne faut pas y être attaché, mais il faut en tenir compte. Nous faisons cela: copiez toutes les scènes sans images en double dans un autre dossier, puis comparez chaque dossier avec l'original, en utilisant la comparaison des répertoires du gestionnaire de fichiers. Si le rythme répétitif dans les fichiers supprimés est observé visuellement, nous considérons que tout est normal. Cela a fonctionné à première vue.

Seulement une demi-heure et vous pouvez aller plus loin. Nous commençons la compensation de tonalité. Après quelques heures, nous essayons d'apprécier le résultat, mais la moitié de la joie. Une petite partie des scènes est mal colorée. Encore une petite partie des scènes de compensation de tonalité a mal tourné. Si c'était possible avec le second, ou simplement prendre ce qui était avant la compensation, ou essayer d'égaliser le ton sans utiliser la balance des blancs. Cela avec la re-floraison était d'autant plus difficile. Certaines scènes se sont améliorées en diminuant le paramètre render_factor, les autres n'ont tout simplement pas cédé. L'algorithme n'a tout simplement pas trouvé quelque chose de similaire dans le modèle entraîné et a produit des résultats étranges. J'ai dû colorer chacune de ces scènes plusieurs fois avec un render_factor différent, puis choisir la meilleure image pour qu'elle ressemble au moins à la vérité. Il est difficile de dire à quel point cette activité épuise le cerveau. J'ai dû écrire des scripts qui collectent les options pour chaque image dans un dossier séparé, ce qui a augmenté la productivité et réduit le flux d'abus.


Avant de continuer, vous devez couper des textes supplémentaires et réorganiser plusieurs scènes à certains endroits. Il a fallu des moyens simples pour le montage vidéo. Nous chargeons la structure des dossiers avec des cadres directement dans l'éditeur actuel.


retourner l'image

Nous supprimons des scènes, les échangeons, déchargeons la structure mise à jour sur le disque dans un nouveau dossier.


retourner l'image

Vous pouvez maintenant convertir 12 ips en 24 ips.

Outil de ralentissement vidéo
Lien vers le projet: github.com/avinashpaliwal/Super-SloMo
Description: Le projet calcule les images intermédiaires à l'aide d'un modèle formé. Vous pouvez télécharger des paramètres prêts à l'emploi. Vous pouvez vous apprendre. Avec le bon choix de données d'entraînement, le résultat est d'une beauté enchanteresse.


Nous corrigeons le projet pour travailler avec des images individuelles, sinon cela fonctionne. Nous commençons, regardons le résultat. Avec «wow», un nouveau problème surgit, certaines scènes sont remplies d'artefacts, car pour obtenir 12 images sur 24, vous devez spécialement former le modèle.

Il y a deux options. Et vous n'aimerez pas tous les deux. Supprimez manuellement les cadres défectueux ou suivez une formation sur le modèle. Autrement dit, ou passez beaucoup de temps, ou passez un temps inconnu avec des résultats imprévisibles. La clarté a prévalu.

Eh bien, regardez plus de 200 000 images. Quelle est la difficulté? Le fait que vous ne pouvez pas supprimer tous les mauvais cadres. Il est nécessaire d'éliminer exactement ceux qui frappent les yeux et de laisser ceux qui sont invisibles. Autrement dit, essayez, répétez, force brute la bonne combinaison. Quelque part dans la seconde moitié des trames, le réseau neuronal organique a également appris, et il est devenu intuitif à quels moments attendre les défauts, et quelles trames doivent être supprimées et lesquelles ne doivent pas être touchées. Seulement 4 jours et nous avons une version fluide.

Nous collectons le fichier vidéo. Nous regardons. Ça semble bien. Mais quelque chose semble se bloquer. Qu'est-ce que c'est? Wow, wow, wow en double, mais comment, où, pourquoi? Il devient clair que ce boomerang est parti du passé. La stabilisation a également traité les images en double et saisi chacune d'elles séparément dans l'arc de mouvement, en ajoutant un décalage unique à chacune. Et l'algorithme de recherche en double, raisonnablement considéré qu'il s'agit de trames différentes, puisqu'elles sont décalées, tout est logique.

Super, super. Mais ne revoyez pas tous les cadres sans essayer d'écrire au moins un peu de code?

Les expériences ont commencé avec des algorithmes pour comparer des images similaires. La difficulté était que la plupart d'entre eux vous permettent de signaler que les images sont complètement différentes ou relativement similaires. Pour moi, des images vraiment différentes dans une scène étaient presque similaires, et il fallait capturer des images qui sont des copies offset. Tous les algorithmes testés et éprouvés interféraient dans un seul tas, et les deux.

Compare_ssim de skimage pourrait apporter certains avantages. Je ne prétendrai pas me souvenir de ce que c'est, cela a au moins parfois donné les bons résultats et permis d'identifier immédiatement certains des doublons. Je devais chercher le reste avec mes yeux. Le deuxième jour, mon réseau neuronal naturel a été formé pour remarquer ce qui n'était pas visible. À ce stade, j'étais déjà tourmenté par une déformation professionnelle: les images en noir et blanc qui ont attiré mon attention étaient perçues comme un travail incomplet, et toute contraction du contenu vidéo tiers a été entendue comme "des doublons à nouveau!"

Mettre la prochaine version de la vidéo, regarder. Il s'agit de comprendre que certaines scènes ont une saturation acide. Et c'est encore un problème, car vous ne pouvez pas simplement prendre et réduire la saturation de toutes les scènes à la valeur générale, certaines d'entre elles, au contraire, ne sont pas très lumineuses.

Le défi de saturation commence. La modification de ce paramètre est facile, mais incroyablement difficile à mesurer correctement. Cela était compréhensible en théorie, dans la pratique, cela n'a été que confirmé. Toute manière naïve de comparer la saturation des images est apparue lors des tests sur des scènes lumineuses, mais leur fréquence était normale ou décolorée, mais leur fréquence était très élevée.

À la fin de la journée, au moins d'une manière ou d'une autre, une solution de travail était née.


retourner l'image

À la médiane de la propagation de la saturation des pixels, nous ajoutons l'écart type de la saturation, et nous obtenons la saturation maximale conditionnelle de l'image. Ce n'est pas idéal, mais avec cette méthode de mesure, l'égalisation de la saturation a commencé à fonctionner. Il ne restait plus qu'à substituer le polynôme correction_value = f (valeur_mesurée) . Nous établissons la plaque sur les données de test avec nos mains «gelées» -> «la valeur de correction qui a donné un résultat agréable», nous enfonçons la plaque dans n'importe quel outil qui peut se rapprocher.

Fonction de correction de saturation totale:


retourner l'image

On passe de l'espace BGR (vue par défaut d'opencv) à HSV. Nous caractérisons la matrice de saturation par un nombre. Nous calculons le gain / atténuation de la saturation. Nous avons coupé les départs pour la gamme. Fusionnez la matrice de saturation ajustée avec la luminosité et la tonalité d'origine, revenez à l'espace BGR.


Quand est la sortie déjà?

Eh bien, il semble que la vidéo soit enfin prête. Vous pouvez faire de la musique.

Puisqu'aucun des accompagnements musicaux existants ne me semblait adéquat, il n'y avait rien d'autre à faire que de faire quelque chose moi-même.

Un problème stupide s'est posé dès le début: la moitié du disque était obstruée par des sauvegardes de différents états du film. Et le programme, qui devait faire de la musique, nécessitait des dizaines de gigaoctets pour la bibliothèque de morceaux. J'ai pensé: "qu'est-ce qui pourrait mal se passer?" Et j'ai supprimé les sauvegardes préfinales, car j'ai des sauvegardes préfinales sur deux disques, et je ne perds rien de significatif, et il est peu probable que quelque chose doive être refait.

Le troisième jour de travail avec la musique, le nombre de scènes qui ont perdu leur saturation ne pouvait plus être ignoré. Certains des cadres sont devenus complètement noirs et blancs, et avant cela, ce sont ces cadres qui étaient les plus brillants. Fait intéressant, que pourrait-il être? Un polynôme de troisième ordre à l'extérieur de la table d'origine vole-t-il brusquement dans l'espace? C'est une surprise, non? Il convient de noter qu'une fois de plus, je ne voulais pas revoir l'intégralité du film après correction de la saturation, je me suis limité à visualiser une image de chaque scène, ce qui donnait une impression illusoire de la suffisance du résultat.

Il n'y a eu aucun problème à ajouter des conditions aux limites au code de correction de saturation. Le problème était le manque de source à partir de laquelle vous pouviez obtenir la même séquence d'images pour lesquelles la synchronisation avec le son était déjà terminée.


Il existe deux options: libérer une image incurvée dans le monde avec un son cool ou revenir en arrière de deux étapes. Il était dommage de perdre accidentellement la parfaite synchronisation parfaite, mais tout le point du travail était en couleur.

Nous répétons le nettoyage des doublons, le remontage, le réglage de la saturation, bien sûr, nous obtenons une forte désynchronisation du son, nous commençons à accorder les points clés des pistes, nous sommes fâchés que la synchronisation magique disparaisse presque. Une autre semaine s'est donc écoulée.


À propos de la musique

Écrire de la nouvelle musique gratuitement n'est pas une option du tout, mais coller quelque chose parmi les options d'accompagnement disponibles (bien qu'il y en ait au moins 5) manque également d'honnêteté. Dans le processus de recherche de titres gratuits, je tombe sur une chose intéressante.

filmstro.com

À partir de la description, il devient clair que cela vous permet de faire quelque chose entre la substitution des pistes des autres et la composition à partir de zéro. Il possède une vaste bibliothèque de compositions, dont chacune peut être représentée comme un projet à partir des boucles conditionnelles Fruity. Toutes les pistes d'une même composition sont regroupées en trois sections: intensité, profondeur, tension. En changeant la "force" de la section, vous pouvez changer le nombre de pistes activées. Total: une composition contient en moyenne 11 options sonores, qui résultent de l'influence mutuelle des sections. Avec l'aide de la disposition des points clés le long de la séquence vidéo, le changement dans le son de la composition est lié à ce qui se passe à l'écran. Un tel doshirak. Savoureux, si vous ne savez pas comment c'est arrivé.


retourner l'image


À propos de YouTube

Enfin, vous pouvez créer une chaîne et télécharger la vidéo. Il semblerait que tout, fini, vous puissiez vous détendre. Mais la réalité n'a pas lâché prise, et si la vidéo originale peut être arbitrairement considérée comme HD, alors après le téléchargement, elle s'est avérée d'une qualité dégoûtante. Selon toutes les indications et opinions, il s'est avéré sur Internet que Google utilise intentionnellement un débit binaire très faible pour toutes les nouvelles chaînes. Heureusement, un bon conseil a glissé quelque part: remplissez à un taux de 1440p, comme si cela rend YouTube plus prudent en matière de serrage. Le conseil a vraiment aidé, il est devenu au moins observable.

Après le téléchargement, les plaintes concernant l'utilisation des vidéos d'autres personnes ont immédiatement volé. Très intéressant, il s'avère que le grand Youtube n'a toujours pas de base de données de travail dans le domaine public, nous allons l'aider en envoyant des objections.

Résultat: www.youtube.com/watch?v=r3NQyCInZiQ
Lien de téléchargement en qualité d'origine: drive.google.com/uc?id=1dEPcjKbjNowxsfaNcbV6DsbAr3kbACKH&export=download


Outro

Dans l'ensemble, j'aime ce qui s'est passé. L'équipe de spécialistes rémunérés ferait des bonbons. Dans ce cas: 70% des images normales, 20% des images pauvres, 10% épiques. Gratuit, automatiquement. Tous les problèmes que j'ai dû résoudre avec mes mains ne sont dus qu'au fait que cela a été fait pour la première fois. Le prochain film à colorier sera infiniment plus facile. Je ne sais pas ce que ce sera, à l'ère du cinéma muet, je n'ai pas encore rencontré d'autres œuvres qui demanderaient leur transfert à notre méta-événement. Probablement, ce sera quelque chose d'un premier film sonore, ce qui signifie qu'il est nécessaire de restaurer le son, de le porter à 20-20 KHz, de le convertir en stéréo. Vous pouvez toucher autant de réseaux de neurones différents =) Aujourd'hui, la qualité de la floraison dépend fortement du matériau source, plus les nuances de gris sont préservées, plus la clarté est élevée, meilleur est le résultat. Très probablement, la prochaine génération de tels outils synthétisera de nouvelles images de haute qualité, et n'adaptera pas la couleur aux anciens contours, ce sera similaire à des projets qui font des imitations de photographies en dessinant. En attendant, pour obtenir un excellent résultat, vous devez étirer l'image en noir et blanc et former individuellement le spécificateur de couleur sur les matériaux vidéo correspondant au film cible.

Notre vie change de plus en plus vite, le délai avec lequel nous entrons dans une autre réalité se rétrécit. Nous écrivons des réseaux de neurones afin de garder une trace de tout ce qui se passe avec les réseaux de neurones. Mais nous avons de moins en moins de temps. Il y a à peine six mois, ils m'ont demandé s'il était possible de faire automatiquement une photo arbitraire de couleur authentique, ma réponse a été: "non, c'est toujours fantastique".

Source: https://habr.com/ru/post/fr481710/


All Articles