Vídeo florescendo sob o capô
Continuo falando sobre meu hobby incomum. Meu hobby é a transformação algorítmica de vídeo antigo em preto e branco em material que pareça moderno. Meu primeiro emprego é descrito neste artigo . O tempo passou, minhas habilidades melhoraram, e agora não estou rindo do meme "Ampliar e aprimorar" .
O passatempo pode parecer estranho, mas é verdade que é agradável. Talvez seja a habilidade de ser um mago que transforma as cinzas do passado em fogo com a ajuda da tecnomagia, ou talvez o motivo esteja em muitos quebra-cabeças intelectuais que não têm uma solução pronta, talvez seja uma compensação para um falta de autoexpressão criativa, talvez todos juntos. A cada novo vídeo, o processo fica repleto de detalhes, o número de ferramentas e scripts de terceiros envolvidos está crescendo.
É necessário esclarecer que não estamos falando de restauração manual e coloração, que exigem toneladas de índios e quilos de dinheiro, mas sobre o uso de algoritmos de autotune (muitas vezes chamados de "AI", "redes neurais").
Antes meus trabalhos eram ligeiramente melhores em clareza e cor do que trabalhos semelhantes de outros amadores, mas agora o arsenal de ferramentas usado se expandiu tanto que a qualidade do resultado final depende apenas do tempo investido.
▍Pequena história
Do lado de fora, o processo de desbotamento automático das cores do vídeo não é percebido como algo confuso, pois é óbvio que basta baixar um determinado programa e jogar nele uma gravação de vídeo, e todo o trabalho complexo já foi feito por aquele que projetou o algoritmo de desbotamento de cores e gastou eletricidade no treinamento.
Deixe-me contar agora sobre como o revolucionário algoritmo de desbotamento de cores Deoldify surgiu . Mesmo que você goste de aprendizado de máquina, não é verdade que você sabe quem é Jeremy Howard . Sua carreira profissional começou como consultor contratado, há 20 anos ele se dedicava ao que hoje se chama Data Science, ou seja, lucrar com dados por meio da matemática.
A venda de algumas startups permitiu-lhe pensar em fazer deliberadamente uma contribuição positiva para o desenvolvimento da humanidade. Depois de se mudar para Dolina, ele se juntou à multidão dos principais especialistas em aprendizado de máquina e, em 2011, tornou-se o melhor participante da competição Kaggle.
Uma grande virada aconteceu em 2014, quando seu projeto de detecção automática de anormalidades médicas em radiografias apresentou resultados que superaram a qualidade do trabalho de médicos experientes. Ao mesmo tempo, o projeto não representou nada de grandioso em termos de recursos intelectuais e materiais investidos, e o treinamento final foi realizado na noite anterior à apresentação. Um típico projeto de trabalho, que por sua existência simbolizava um ponto de transição no progresso técnico.
Jeremy entende claramente que uma ferramenta tão poderosa pode ser uma fonte de crescimento em qualquer área. O principal problema era (e é) que o número de especialistas em sistemas de autoaprendizagem é incomparável com o número de projetos nos quais suas habilidades poderiam ser utilizadas. Do seu ponto de vista, seria muito mais eficaz dar esta ferramenta a todos. Foi assim que surgiu o projeto Fast.Ai , que é uma simbiose de um código e um treinamento. O código, por outro lado, torna o Pytorch muito mais fácil de usar (uma ferramenta para construir algoritmos de aprendizado de máquina) e, por outro lado, contém muitas técnicas prontas que os profissionais usam para aumentar a velocidade e a qualidade do aprendizado. O currículo é estruturado de cima para baixo, primeiro os alunos aprendem a usar pipelines prontos para uso e, em seguida, Jeremy mostra como cada elemento do pipeline pode ser escrito do zero, começando com uma demonstração ao vivo em uma planilha do Excel do algoritmo-chave por trás tudo de Deep Learning. O objetivo do projeto Fast.Ai é ensinar um especialista de qualquer campo a resolver problemas típicos em arquiteturas típicas (claro, se você tiver habilidades de programação). Milagres não acontecem, o nível de habilidade após esse treinamento não ultrapassa o nível de "kati - quadrado vert", mas mesmo isso é suficiente para resolver problemas de trabalho em um novo nível, inacessível aos colegas.
No tutorial Fast.Ai, um dos tópicos é dedicado ao uso da arquitetura UNet , que tem como foco a reinterpretação de imagens. Por exemplo, esta arquitetura pode ser treinada para gerar fotografias realistas de imagens capturadas com um termovisor ou para contrastar anomalias nas imagens. De um modo geral, tal arquitetura, por sua forma e propriedades conhecidas, permite prever a presença de propriedades na forma, cuja identificação foi o objetivo do treinamento.
Como lição de casa, os alunos do curso foram incentivados a usar a UNet para resolver qualquer problema de interesse. Um certo Jason Antic ficou interessado em converter fotografias em preto e branco em cores. Seus experimentos mostraram que tal arquitetura produz resultados adequados e há um potencial significativo para desenvolvimento posterior. Foi assim que nasceu o projeto Deoldify, que, com a ajuda do próprio Jeremy Howard, cresceu até se tornar um produto acabado e acabou explodindo a Internet. O autor disponibilizou a primeira versão para todos, e ele próprio começou a desenvolver uma versão comercial fechada, que de forma limitada pode ser usada no projeto genealógico MyHeritage.com (requer cadastro, várias fotos são gratuitas).
▍ « »
O principal problema com os projetos de aprendizado de máquina de código aberto de ponta é que a facilidade de uso geralmente fica à esquerda de zero. O autor do projeto foca no pipeline de aprendizagem, ele precisa dos resultados do algoritmo apenas para apresentação à comunidade, o que é normal, já que o objetivo de tais projetos é a autopromoção e contribuição para a pesquisa. A autopreenchimento de projetos pelo usuário é a norma. Para não ir muito longe: antes de processar o vídeo, ele deve ser decodificado, processado cada quadro e a compressão resultante em um arquivo de vídeo, se um vídeo for processado com várias ferramentas, depois de sucessivas compressões você pode esquecer a qualidade. Cada nova ferramenta deve ser refeita para funcionar com uma pilha de fotos.Mas e se na ferramenta no nível do pipeline o uso de não mais do que 8 quadros por execução for incorporado? O algoritmo é suficiente para demonstração, mas não para fins práticos. Você terá que escrever um wrapper externo para executá-lo várias vezes, porque é improvável que você consiga alterar o pipeline de outra pessoa sem perder a compatibilidade com o estado pré-treinado do algoritmo. E, é claro, os escritores acadêmicos realmente não se importam com a otimização. Houve um projeto que se recusou a trabalhar com imagens maiores que uma caixa de fósforos, após a otimização passou a exigir 5 vezes menos memória de vídeo e agora pode lidar com FullHd.que será possível alterar o pipeline de outra pessoa sem perder a compatibilidade com o estado pré-treinado do algoritmo. E, é claro, os escritores acadêmicos realmente não se importam com a otimização. Teve um projeto que se recusou a trabalhar com imagens maiores que uma caixa de fósforos, após a otimização passou a exigir 5 vezes menos memória de vídeo e agora pode lidar com FullHd.que será possível alterar o pipeline de outra pessoa sem perder a compatibilidade com o estado pré-treinado do algoritmo. E, é claro, os escritores acadêmicos realmente não se importam com a otimização. Houve um projeto que se recusou a trabalhar com imagens maiores que uma caixa de fósforos, após a otimização passou a exigir 5 vezes menos memória de vídeo e agora pode lidar com FullHd.
Você pode listar as ombreiras que foram encontradas por um longo tempo, é suficiente insistir no fato de que a instalação de bibliotecas instrumentais é necessária para qualquer algoritmo funcionar, às vezes pode levar 2-3 dias de experimentos antes que as bibliotecas parem conflitantes entre si (mesmo que haja uma lista de versões exatas, há muitos motivos pelos quais terá que pesquisar no Google por um longo tempo).
▍ Um minuto de beleza
Escolher um material para colorir não é tão fácil. Por um lado, o conteúdo deve ser interessante para mim, por outro lado, o longo filme publicitário da empresa Diesel, saturado de detalhes técnicos, dificilmente interessará a um grande público, por outro lado, existem restrições no escolha devido aos direitos autorais. Novas opções vêm da memória ou da busca por registros específicos. Meus últimos trabalhos são dedicados à bailarina russa Anna Pavlova. Muito já foi escrito e dito sobre ela, muitas fotografias sobreviveram, mas como sua atividade profissional está associada ao movimento no tempo e no espaço, a testemunha mais interessante é o filme. Infelizmente, alguns dos registros sobreviventes são desconhecidos do público em geral, e o que agora está sendo pesquisado é de uma qualidade absolutamente nojenta. O que é interessante sobre a figura de Anna Pavlova,então é literalmente uma figura. Ela pode ser considerada o protótipo do padrão da bailarina moderna, talvez não seja uma descoberta para você que, no final do século 19, a magreza ainda era coletivamente percebida como um sinal de doença ou pobreza, é claro, entre pessoas ricas havia números diferentes, mas em geral, a gordura era percebida como um marcador de uma vida de sucesso. Mulheres cheias de saúde, muitas vezes representadas no palco do teatro, aqui estão as fotos de três estrelas da época.Mulheres cheias de saúde, muitas vezes representadas no palco do teatro, aqui estão as fotos de três estrelas da época.Mulheres cheias de saúde, muitas vezes representadas no palco do teatro, aqui estão as fotos de três estrelas da época.
Em um de meus trabalhos, você pode até ver como ficou. Os espectadores que não têm um bom conhecimento da história dificilmente levam a sério tal quadro, embora os habitantes mais avançados de nosso planeta certamente encontrarão um aspecto positivo aqui.
Voltando a Anna Pavlova: vários filmes retratam uma bailarina na dança. Eles existem em boa qualidade, mas não estão disponíveis publicamente. Mas no decorrer da busca, para minha surpresa, encontrei um longa-metragem completo no qual nossa bailarina desempenhava o papel principal. No início do filme é inserido um número com uma dança que nada tem a ver com o enredo, por isso é bastante apropriado considerá-lo um vídeo separado, no qual venho trabalhando.
▍Problemas no início
Decodifique o vídeo original em uma série de arquivos PNG. Olhamos as imagens resultantes e notamos que há frames que repetem os anteriores.
Esta é uma história padrão, porque no início da cinematografia, uma velocidade de filmagem de 12-19 quadros por segundo (doravante denominada fps) era usada para salvar o filme. Na era analógica posterior, quando 99% da filmagem tinha 24-25 fps, as fitas antigas eram copiadas quadro a quadro, resultando em uma reprodução mais rápida. Portanto, na opinião da maioria, a velha crônica está firmemente associada a homenzinhos impetuosos e indistintos. A verdade é que os originais em filme preto e branco retêm muito bem, até melhor do que os coloridos, e têm uma resolução entre DVD e FullHD. Na maioria dos casos, tudo o que você podia ver eram cópias de má qualidade, refeitas da projeção para a tela. Embora muitos filmes tenham sobrevivido apenas com essas cópias (as perdas são devido ao fator humano), o número de originais que sobreviveram ainda é significativo.Apenas uns poucos selecionados têm acesso aos originais, felizmente, atualmente o processamento de imagens por computador permite a replicação ilimitada de cópias digitalizadas de alta qualidade dos originais, elimina defeitos e reproduz o material em uma taxa de quadros normal.
Existem dois problemas separados com baixas taxas de quadros. Em primeiro lugar, não é padrão, se qualquer velocidade de reprodução pode ser usada em um computador pessoal, então há muitos casos em que é necessário aderir à faixa de 24-30 fps. A maneira mais fácil de corrigir a taxa de quadros é repetir o último a cada 3-4 quadros. Ao mesmo tempo, a velocidade de movimento dos objetos torna-se natural, mas a imagem é percebida como espasmódica, esse é na verdade o segundo problema. Em 2021, as tecnologias permitirão que você faça uma imagem uniforme interpolando quadros. A tecnologia de interpolação de quadros em TVs e reprodutores de vídeo de software começou a ser encontrada por volta de 2005. Devido a algoritmos matemáticos, duas imagens adjacentes são misturadas para que durante a reprodução haja uma sensação de movimento suave no quadro. Funciona bem para 24 fps,uma vez que a diferença entre os quadros raramente é significativa. Mas para 12-19 fps, esses algoritmos não são adequados: eles desenham uma imagem dupla desfocada ou artefatos malucos. Este problema é resolvido com mais sucesso por algoritmos de autoaprendizagem que são capazes de lembrar exatamente como desenhar uma imagem intermediária para diferentes movimentos de diferentes tipos de objetos.
Nos relançamentos modernos de filmes da era do cinema mudo, o uso de interpolação ainda não é usado, respectivamente, há quadros repetidos em nosso vídeo, e se eles não forem removidos, então quando se trata de interpolação de quadros, ela mudará parece ser um absurdo, o que significa que é necessário remover os desnecessários.
▍ Torção inesperada
Remova com canetas - você será torturado, nadado, nós sabemos. Executamos o script para detectar quadros idênticos, o script apresenta o erro "Muitas correspondências em uma linha". E, bem, é claro: os quadros são muito escuros, a pesquisa reúne os mesmos e diferentes quadros em uma pilha. Execute o script de normalização de faixa dinâmica, que cria automaticamente bordas contrastantes, preto leva ao preto, branco ao branco e, em seguida, retorna ao local os tons de cinza que são perdidos durante tais manipulações.
Começamos a busca duplicada novamente, o processo agora é mais confiável, mas após excluir os frames desnecessários, algo novo é encontrado. Com alguma periodicidade, ocorre uma repetição de quadros na ordem inversa. Lançamos o vídeo original e assistimos com atenção, uau, eles realmente usaram um truque que usa a inércia da visão, e a imagem é percebida com menos espasmos do que com frames duplicados comuns.
Mudamos o script de pesquisar quadros idênticos em uma linha para pesquisar quadros idênticos por meio de um intermediário . Verificamos os resultados - mais uma vez uma surpresa: há uma repetição em dois quadros. Depois de verificar a terceira versão do script, as surpresas acabam.
O problema de remover frames extras de repente se tornou muito sério. Sobre tão escuro e não saturado de detalhes, você não pode confiar na busca automática por duplicatas, ela cometerá erros repetidamente, pulando o desnecessário e apagando o necessário. Corremos a busca por todos os tipos de tomadas em mais um episódio do filme, em que o número de erros seja mínimo. No caso de uma repetição simples, ao destacar as tomadas no gerenciador de arquivos, você pode entender o esquema de repetição e excluir arquivos desnecessários programaticamente.
Nesse caso, o padrão parecia aleatoriamente periódico, pequenos pedaços se repetiam, mas em geral a essência não é clara. Então, o que é agora? Abandone toda a ideia ou inverta o algoritmo de repetição.
Alterando o script de pesquisa duplicado, agora os rótulos serão adicionados aos nomes dos arquivos dependendo do tipo de duplicação. Transferimos toda a lista de arquivos para o Excel e deixamos apenas os rótulos, transformamos a coluna em uma linha e voamos para fora do número permitido de colunas, agora temos que dividi-la em duas planilhas. Destacamos quadros duplicados do mesmo tipo em uma cor, o que nos permitirá usar o analisador de modelo biológico.
As repetições curtas são agrupadas. Verificamos com que precisão um longo grupo é repetido. Os grupos são semelhantes, mas existem pequenas diferenças. Este é um fiasco. Existem várias razões possíveis para esta imagem: mudanças aleatórias foram feitas deliberadamente, ou vários algoritmos para completar frames foram usados, ou o conteúdo dos frames é levado em consideração, ou o método usa uma função não intuitiva. Escrever uma sequência muito mais longa de repetições para cálculo parecia um exagero.
Você terá que remover o ruído com as mãos usando uma amostra. Executamos o script de pesquisa duplicado no episódio de nosso interesse, carregamos a sequência de quadros no Excel, pintamos e inserimos um modelo de uma longa sequência ao lado dele. Colocamos a marcação onde parece inequívoca, removemos a marcação incorreta. Então, nós adivinhamos onde quais quadros deveriam estar, e agora a maior parte da imagem é restaurada. Restam alguns lugares pouco claros. Colocamos marcas exatamente de acordo com o modelo ou por intuição. Claro, em algum lugar haverá erros, mas em algum lugar nos descobriremos que contra o pano de fundo geral da sequência correta ela não é mais crítica, especialmente porque na velha crônica quase sempre alguns quadros se perdem e, neste caso, não faz sentido espremer o ideal absoluto.
Usando a lista final, apagamos o desnecessário, verificamos e pronto, o problema parece que foi resolvido por 9 entre 10.
▍
Isso é seguido por 17 operações de magia negra, durante as quais 17 pastas são formadas no disco contendo quadros de vídeo após cada manipulação. Além da descoloração propriamente dita, é realizada a correção automática de quadros sem sucesso descoloridos, um aumento significativo na clareza da imagem, a imagem restaurada retorna à "analogia" (para se livrar da sensação do Photoshop), por tudo isso, 5 diferentes ferramentas de aprimoramento de imagem são usadas, interconectadas por scripts, que são transmitidos de um lado para outro de luminância e canais de cor. Os nomes das ferramentas continuarão sendo meu segredo profissional, desculpe, muito trabalho e muito tempo gasto coletando este zoológico e modificando-o. Quando vi os resultados do Deoldify 2, ficou claro para mim que meu desejo de ser o melhor nesta área não tem sentido,não importa o quão legal eu aperte as porcentagens de qualidade, cada novo algoritmo semelhante às vezes supera o antigo. Desisti do desvanecimento e mergulhei no Aprendizado de Máquina com o objetivo de montar meu Deoldify, mas então uma série de eventos aconteceu que me distraiu desse objetivo. Como resultado, combinei vários projetos prontos em um processo comum, cujos resultados de alguma forma substituíram meu algoritmo de colorização falho. Talvez no próximo artigo eu te diga como usar o colorizador do Google, se você conseguir refrear o apetite dela por memória, haverá um código e detalhes.Como resultado, combinei vários projetos prontos em um processo comum, cujos resultados de alguma forma substituíram meu algoritmo de colorização falho. Talvez no próximo artigo eu te diga como usar o colorizador do Google, se você conseguir refrear o apetite dela por memória, haverá um código e detalhes.Como resultado, combinei vários projetos prontos em um processo comum, cujos resultados de alguma forma substituíram meu algoritmo de colorização falho. Talvez no próximo artigo eu te diga como usar o colorizador do Google, se você conseguir refrear o apetite dela por memória, haverá um código e detalhes.
Para concluir o trabalho no vídeo, você precisa tentar remover as ombreiras, para isso o coletor de vídeo profissional Davinci Resolve é o mais adequado . Se você abrir a próxima imagem separadamente, poderá ver o número de elementos na cadeia de retoque. Este design deixa o fundo preto, aproxima as cores do natural, combate as cores desnecessárias, cria uma imitação do feixe de luz (esconde pequenos traços de correção de uso).
Resta fazer a interpolação de quadros, aumento cosmético para 2K, e agora nosso vídeo está pronto. A imagem original está muito escura e não há necessidade de esperar milagres, mas agora é possível considerar os movimentos suaves da figura nítida da dançarina.
O próprio filme contém muitas cenas com uma imagem relativamente boa, o que permite avaliar o quanto o processamento algorítmico pode melhorar a imagem. Os quadros de resolução 2K são muito grandes para o artigo, portanto, os quadros finais reduzidos em 2 vezes são inseridos ao lado do quadro completo da imagem original.
▍Resultados
O enredo da dança contém 1251 frames (antes da interpolação), o trabalho durou 5 dias .
Música adicionada da biblioteca de música gratuita do Youtube.
O filme contém 19660 frames (antes da interpolação), 14 dias foram processados (apenas algoritmos, retoque manual não foi aplicado). Com a música foi mais difícil aqui, no início havia uma versão montada a partir de peças da ópera, que forma a base do roteiro do filme, mas devido aos direitos autorais não foi possível publicar essa versão, tive que usar composições adequadas de a primeira biblioteca encontrada, eles dizem que ficou melhor do que da primeira vez.
Características do computador: Amd Ryzen 3 1200, 4 GB de RAM, GTX 1060 3 GB
▍- Links para meus trabalhos:
Youtube Not.
Rutube Not.
Ps eu não pude resistir, eu colori.