Em suma, fez a cor do sucesso do centenário

Sinopse

Os filmes para colorir antes deste ano custavam centenas de milhares de dólares, exigiam a participação de uma massa de especialistas e demoravam muito tempo. Agora tudo mudou. O desenvolvimento do projeto Deoldify chegou a tal estado que os resultados de seu trabalho podem ser observados confortavelmente relaxando o facepalm. A partir do texto, você descobrirá os detalhes de uma experiência bem-sucedida em colorir um filme sem custo, concluída em poucas semanas por uma pessoa.


retornar a foto de volta


10 começar

Essa história começou como qualquer outra história semelhante. O algoritmo extravagante de recomendação do YouTube produziu algo que chamou minha atenção e teve as mais inesperadas consequências adicionais. O penúltimo momento em que isso levou ao canal Forgotten Weapons. É difícil entender por que recebi essa oferta na época, mas provavelmente era assim:

1. user_id assiste a vídeos no RDR2.
2. Existe uma pistola vulcânica no RDR2.
3. No canal de armas esquecidas, há uma revisão da pistola vulcânica.
4. As pessoas interessadas em RDR2 geralmente querem aprender sobre a pistola vulcânica.
5. Mil demônios, mas armas esquecidas virão até ele!

Menos de dois dias depois, eu já estudei literatura partidária sobre a fabricação de vários tipos de armas de fogo, examinei fotografias de karamultuk de países terceiros e vi como era fácil cortar o porta-malas de uma casa. Entre as opções: compre um semi-brinquedo e coloque-o na condição correta ou monte um conjunto de peças em uma loja de ferragens. Por fim, o sorteio da loja venceu por razões legais. Felizmente, não houve resposta para a pergunta "por que", e ações ativas nessa direção não deram em nada.


E embrulhe ....

Desta vez, não havia razão óbvia para dar uma olhada no Charlie Chaplin colorido. Os caminhos de resposta da rede neural são misteriosos. A visão observada causou primeiro confusão e perguntas, e depois violenta salivação mental. Em contraste com as tentativas anteriormente deploráveis ​​de auto-colorir, essa sequência de vídeo foi percebida como uma visão completamente crível. Cavar, é claro, era o que, mas:

a. não havia aborrecimento por estranheza
b. realmente havia um sentimento da profundidade da imagem, removendo a complexidade da percepção das imagens em preto e branco pelo cérebro moderno

A curiosidade se arrastou, já estudando um projeto no github. Após o teste da versão em nuvem em algumas fotos, depois de ver os vídeos, comecei claramente a sentir algum desejo em mim. A capacidade de retornar evidências reais do passado ao contexto atual da mídia, sem investir centenas de milhares de dinheiro, hmm, há algo empolgante nisso, algo bastante suficiente para revigorar a mente fria.

"Vamos tentar", esta frase sagrada, que é pronunciada timidamente, mas em algum lugar nas profundezas da alma já existe um núcleo de entendimento de que uma boa história está começando agora.


Avistamento

Bem, suponha que o motor, ação. Tomamos a primeira sequência de vídeo por 4 minutos. O que primeiro? Remova a vibração vil da câmera e do filme, que está sempre nesse material por padrão. Ele procura quais opções estão disponíveis com uma ampla gama de controle e fora dos editores de vídeo. Como era necessário usar toda uma cadeia de ferramentas de software diferentes, o uso de qualquer pacote padrão de edição de vídeo desapareceu imediatamente. Somente quadros únicos com arquivos, apenas hardcore. E, é claro, é necessário não apenas estabilizar de alguma forma, mas estabilizar cinematicamente, imitando os movimentos limitados e suaves de uma câmera de filme. Pelo menos alguma confiança foi causada por um único módulo para python. Bem, ok, isso significa que o código irá imediatamente.

Estabilizado. Um pouco longo, tudo bem. Uau, legal, acabou, sim, o que você precisa, é claro, você precisa terminar com um arquivo, mas, caso contrário, por que estamos aqui? Mais auto-floração. Colocamos, colocamos, colocamos outro, novamente conflito, ainda colocamos, em cima, ao lado, não desista, talvez o manual leia, ao que parece, foi, não, exclua dir, mais uma vez, oh, é isso, bom, finalmente. Lançamento. Porra, algo muito longo. Mas as cores, as cores, uau, você está certo, mas em tudo isso, no entanto, faz sentido e vale a pena continuar.

O que agora Provavelmente, em 2019, a interpolação de quadros não é algo excelente, e você pode cavar um projeto para uso condicionalmente profissional. E, no entanto, sim, sucesso novamente, esse projeto está disponível gratuitamente. Colocamos, colocamos ... Lançamento. Porra, algo não é rápido novamente. Mas quão suavemente, quão suavemente os quadros se substituem, um milagre, como se fossem os 24 quadros usuais.

Então, é isso que sai, tudo deu certo? Todo o transportador aqui está pronto para uso, você só precisa jogar algo nele e obter o resultado?

:: resolvido ::


Dificuldades temporárias

Em cada estágio do processamento, o tempo gasto foi registrado. Extrapolo por 90 minutos: ataques desanimadores, para dizer o mínimo. Até chequei as medidas e cálculos algumas vezes, porque os números obtidos mudaram a ideia original de “apenas rápido, fácil e divertido” para “apenas longo, fácil e triste”. Embora mais tarde, mais duas palavras nesta fórmula mudem para pior, mas já havia algo em que pensar seriamente.

Assim, o filme selecionado levará 4 horas de estabilização, 420 horas de floração e 30 horas de interpolação de quadros. Sim ... Bem, obrigado, Charlie.

Cho para fazer alguma coisa? O mac mini 2012 de oito núcleos é a única coisa que você pode aproveitar. Diante dos meus olhos havia um vídeo com o Linux rodando no PS4. Os dentes rangeram de raiva impotente pela incapacidade de reverter as atualizações de firmware, instaladas com a orgulhosa convicção de que o jailbreak não era necessário. Como todos esses projetos python funcionariam lá? ¿Haveria acesso aos cálculos na GPU? Eu não estava destinado a estudar essas perguntas.

Restava se render, ou humildemente lançar e esperar. Renda-se não é uma opção. Espere algumas semanas também. Mas não havia outra opção.


Estabilize


Sobre ferramenta de estabilização
Link para o projeto de estabilização de vídeo: pypi.org/project/vidstab
Descrição: o projeto usa funções opencv para determinar o deslocamento do quadro a partir do valor esperado, calcula a compensação de deslocamento necessária e executa o corte para ocultar as arestas de salto, criando uma imagem em movimento suave. Devido à possibilidade de escolher um método para procurar diferenças entre os quadros, permite obter um grau diferente de razão de estabilização / perda de pixels. Possui uma funcionalidade de depuração muito útil para exibir graficamente os valores de entrada e calculados.


Finalmente, a dura realidade começa a invadir um mundo acolhedor. Além de problemas com o hardware, aparecem problemas de software. O que funcionou em um padrão de teste em um videoclipe de teste começa a falhar aqui e ali em um filme completo. (Inesperadamente, hein?)

Eu tenho que admitir para mim mesmo que é hora de trocar chinelos por botas de borracha, e é melhor arregaçar as mangas, porque eu não gostaria, mas a imersão no interior do módulo não pode ser evitada.

A principal dificuldade é a mudança de cenas. O projeto foi projetado para lidar com apenas fragmentos curtos nos quais o contexto não muda. Depois de estudar o que está acontecendo e como está acontecendo, há um local para uma correção difícil, cujo significado é desativar a estabilização em valores altos do deslocamento do quadro. Sem esse patch, o efeito negativo se manifestava como um rastreamento suave da cena seguinte, de algum lugar fora da borda para um campo preto.

Em vez de iniciar o script final, um script apareceu no final, cuja essência está em pré-cortar o quadro e definir os valores ideais. O código fornecido não tem valor, porque basicamente repete o exemplo do autor do módulo, mas você precisa diluir o texto com algo.


retornar a foto de volta

Uma descoberta interessante foi exatamente uma: em algumas cenas, a colheita foi feita de forma linear, o que cria um efeito de aproximação, mas na verdade esconde saltos de quadros completamente selvagens na cena. Se você configurar imediatamente um recorte estreito, muita informação será perdida; na versão final, o visualizador não notará nada de suspeito, pois o “zoom in” é combinado com um ritmo dramático.


Caro tempo


Sobre a ferramenta de floração
Link para o projeto: github.com/jantic/DeOldify
Descrição: O projeto faz imagens coloridas em preto e branco. Possui três modos de operação: fotografias, imagens de arte, vídeo. Para cada modo, você precisa fazer o download do estado do seu modelo. É possível treinar o modelo pelo usuário. O autor do projeto usou uma abordagem não padrão para a arquitetura da rede neural, devido à qual foi obtido um efeito estável diferente de outras implementações.


retornar a foto de volta

O computador é levado para a cozinha, porque o mac mini normalmente absolutamente silencioso sob carga está constantemente fazendo um barulho alto. Poucos proprietários desses aparelhos conseguem ouvir esse som, porque o que eles consideram ser o ruído dos fãs (que podem ser ouvidos a uma carga séria) é apenas metade da velocidade do possível. A floração começa.

Os arquivos do projeto precisaram ser corrigidos um pouco para aprender a trabalhar com meus dados recebidos e colocá-los no formato, ordem e exibição corretos. Embora tenhamos que escrever um pequeno script para executar, presumimos que o projeto funcione sem um arquivo. As perguntas podem surgir apenas no parâmetro render_factor.

O efeito no resultado é o seguinte:
0-7 mingau cheio
8-12 cores saturadas demais, cores grosseiras (para cenas mal reconhecidas, produz pelo menos algum efeito)
13-18 é para você, para cenas não reconhecidas, vale a pena tentar esse intervalo primeiro
19-20 para experimentos (executaremos o entroncamento do barramento a partir da casca de bétula)
21 é o número ideal
> = 22 a saturação começa a se perder, o significado do uso diminui

Quanto menor esse número, menor o consumo de memória e mais rápido o cálculo.


retornar a foto de volta

Sim No dia seguinte, surgem na minha cabeça lembranças de que o processador i7 tem o modo turbo e, de alguma forma, seu trabalho foi verificado. Encontram-se informações sobre como ativá-lo no Windows e os utilitários de teste começam a mostrar valores de frequência principais mais vigorosos. A temperatura do processador salta na faixa de 85-99 ° C. Uma panela de água é colocada em cima para remover o calor. De baixo, o cooler sopra do laptop. Se 5% dos quadros anteriores eram processados ​​por dia, então no modo acelerado esse valor se tornava 7%. Pelo menos um pouco de alegria.


retornar a foto de volta

A aventura nos espera

Qualquer programa pode cair. Obviamente, a floração caiu. Bem caiu, reinicie. E então veio "oh". Às vezes, as versões dos experimentos se enquadram no produto, você sabe, então, quando consertei os módulos do projeto, fiquei distraído e esqueci de olhar para toda a cadeia e o significado de cada instrução e considerei o patch completo. O projeto inicialmente exclui a pasta temporária, cria uma nova, adiciona os quadros extraídos do vídeo lá ... em geral, você já adivinhou que a pasta com os resultados do dia foi soprada para mim.

Havia o R.saver. Durante várias horas, em vez de florescer, verificamos o disco, e isso é menos do que o tempo de renderização. Passamos para outro computador com os salvos. Além disso, é claro, acontece que, como o problema não foi percebido imediatamente, vários arquivos não têm conteúdo completo. Temos que escrever um verificador para, em primeiro lugar, estimar as perdas e, em segundo lugar, para compilar uma lista de quadros para nova floração.

Smaku acrescenta que a floração exclui os quadros originais, e é normal não se confundir ao reiniciar o que precisa ser processado e o que não é. Não é normal ter uma pasta de quadros estabilizados, não "bem, o que está acontecendo de errado" e "se isso, você sempre pode estabilizar novamente". Bem, sim, tudo é possível gastando tempo.


Assuntos, preocupações

Ok, parecia que a vida havia melhorado de alguma forma, o minicut estava zumbindo silenciosamente, você já podia planejar mais trabalhos e escrever scripts para pós-processamento.

A visualização do material florido, além da alegria, também causou aborrecimento. Havia duas coisas desagradáveis. Primeiro, o tom da cor galopou entre os quadros, provavelmente devido ao brilho irregular da fonte.


retornar a foto de volta

Em segundo lugar, um monte de quadros duplicados apareceu. Parece porque, mas aparentemente os reprodutores de vídeo doméstico não enlouquecem com algo menos que 24 quadros / s.

Existem problemas e eles precisam ser resolvidos de alguma forma. Torna-se aparente que o fluxo de quadros precisa ser dividido em cenas. Para ajustar o tom / brilho, você precisa ter bordas. E para não excluir textos juntamente com quadros duplicados, é necessário dividir os quadros em texto e não texto.

Longas experiências começam a determinar a semelhança do pessoal. Bem, olá opencv, o que você é?
Vamos pular o arremesso de coração (eles serão visíveis pelo código), o número de versões, métodos experimentados (visíveis pelo número de funções auxiliares).


retornar a foto de volta

Vou tentar explicar a versão final.


retornar a foto de volta

Carregamos dois quadros sequencialmente. Nós fazemos um leve borrão, o diabo sabe o porquê, mas se sim, então os experimentos mostraram uma melhora nos resultados (talvez a influência do ruído seja eliminada). Encontre os pontos principais nos quadros e compare-os.


retornar a foto de volta

Explicação para aqueles que não estão familiarizados com o opencv:

Procure pontos-chave (pontos-chave, kp) - destacando os recursos característicos que permanecem inalterados quando a imagem é alterada. Muito rude, mas simples, pode ser imaginado como uma variedade de micro-hashes.

ORB é um dos muitos métodos de destaque de pontos principais.

descrições, descrições paramétricas de pontos-chave.

BFMatcher - rábano para comparar pontos-chave usando des. Sua tarefa é selecionar o mesmo ponto em duas matrizes e calcular a quantidade de partida de cada ponto de enrolamento a partir de sua posição original. Desculpe meu inglezh.

Acontece que, quanto menor a distância total do deslocamento dos pontos, mais idênticos serão os quadros.


retornar a foto de volta

Se a pontuação for maior que o número mágico, vale a pena realizar verificações adicionais; talvez essa seja realmente uma cena diferente? Primeiro, vamos verificar se há algum quadro de dois textos; primeiro, precisamos desse recurso; depois, se o tipo de quadro foi alterado (texto -> não_texto), a cena mudou definitivamente. Reduza a imagem colorida para monótona e envie a pessoa não saudável para a detecção de texto (embora is_text seja ainda mais bonito).


retornar a foto de volta

Se você tentar descrever a essência, haverá uma busca por circuitos fechados e, se houver muitos circuitos que caem de tamanho em nossas expectativas mágicas, é altamente provável que seja um texto. Como você pode imaginar, esse código substituiu is_text, você pode considerá-lo bem-sucedido, embora haja falhas em letras e cenas muito GRANDES, como reflexos na água negra. Com palavras, será difícil transmitir todo o lance entre as diferentes opções “simples, mas funciona” e “definitivamente funciona, mas exagero”. Algum tipo de caipira de engenharia não nos permitiu ir longe da solução “listras pretas em todas as bordas = texto”.


retornar a foto de volta

Se o texto não cheirar aqui, tentamos comparar histogramas em preto e branco, se as suspeitas se intensificarem, comparamos os coloridos, se houver suspeita direta, comparamos em um quadro, para ter certeza.


retornar a foto de volta

Aqui, ações puramente práticas: se o roteiro queria fazer uma cena curta, provavelmente parecia melhor para ele adicionar essa cena à cena anterior. E se houver mais de 90 quadros na cena, isso aumentará o tempo para o processamento adicional da cena.

Encontrar algo para compensar o tom não foi fácil. Apenas um artigo científico e projeto relacionado são obviamente do google.

Ferramenta profissional para estabilizar o tom da cor
Link para o projeto: github.com/Al-th/MVA_Project_TonalStabilization
Link para um artigo que descreve a essência matemática: www.cse.huji.ac.il/labs/cglab/projects/tonestab
Descrição: O projeto examina primeiro os quadros do vídeo, calculando as diferenças locais dos quadros devido ao matan incondicional. Na segunda passagem, essas diferenças são reduzidas ao valor "correto" calculado.


Há um pequeno problema. Este é o Matlab. Por alguma razão, eu realmente não queria colocar imediatamente esse monstro e me arrastou para o GNU Octave. O código, é claro, não era totalmente compatível, eu tinha que descobrir como ler e escrever imagens, satisfazer a expectativa dessas funções que funcionam de maneira diferente no Octave; em geral, a linguagem não é totalmente congruente com o mainstream, além de ter que me aprofundar em diferentes nuances de Matanov, e é um dia. perdido.

Quando finalmente funcionou, a velocidade de processamento para dizer o mínimo chateado. 20 segundos por quadro. Mesmo no processador antigo, isso é um exagero. Ok, vamos ver como é o Matlab. "Escolha um pacote." Ah, mas xs do que eu preciso, bem, vamos com o DSP. E, lançamento! "O pacote de processamento de imagem não está instalado na sua versão." Bem, ok, ainda tenho endereços gratuitos para registro.

Finalmente, começou e até funcionou muito mais rápido do que na oitava, mas ainda por muito tempo, comparável à floração, desta vez e, em segundo lugar, os resultados das correções recebidas não atenderam às minhas altas expectativas.


Se você quiser fazer algo, faça você mesmo. Não tenho vontade de fazer isso sozinho, mas preciso. Pesquisando com o vício finalmente ajudou a encontrar pelo menos algo em aberto que poderia me ajudar. Foi encontrado um conjunto de classes para costurar fotos panorâmicas, entre as quais um mecanismo para corrigir diferenças de luz e tom. Não é exatamente o que você precisa, mas pelo menos é uma opção.

Depois de longas experiências com o único exemplo (sim!) De usar essa coisa, finalmente consegui um código útil.


retornar a foto de volta

Toda a mágica era estabelecer experimentalmente uma classe que fosse adequada para meus propósitos e descobrir o formato da máscara. Então é óbvio: alimente o compensador com imagens para calcular o valor médio da exposição total e o nível de cada canal de cor e, em seguida, retraia a fonte da conversão.

O primeiro resultado não me agradou novamente. , . , , . - . , .

.




, . « , ». , , , .

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

. , , , . . .


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

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

, , . Mas . «». «», , , . .

opencv.




, . , .




, , , , , .





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

, , , .

. , - . , , .


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

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

. , «», ? , .

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


,

GPU- . . , .

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

2 , , . , , 12 , .

, , ssd . , , - , .

, . ! ? , - GPU. , , , «if APU available», APU , , ? Não.




Não hesitamos em fazer overclock e obter 1 GHz grátis, uma longa escolha de cooler e seu custo valeram a pena. Colocamos um colorista. Começamos. Boom! CUDA sem memória. Legal, ótimo, vamos descobrir de manhã.

De manhã, não havia memória. O Google informou que esse erro significa que o tamanho da memória de vídeo disponível é menor que o necessário. Eu realmente não queria acreditar nisso, porque isso não deveria ser verdade. Afinal, eu não poderia estar enganado, tendo comprado uma versão de uma placa de vídeo com uma memória reduzida, não, não podia, mas nunca me enganei.

Os experimentos começaram com a limpeza forçada da memória, alterando os parâmetros, a esperança foi dada pelo fato de que a queda não ocorreu imediatamente, que vários quadros tiveram tempo de aparecer na saída. Foi possível iniciar o reinício da floração em um ciclo, é claro, mas o tempo de preparação para o lançamento foi de cerca de 2 minutos, e isso não fazia sentido.

De repente, o script de depuração começou a funcionar corretamente e o processamento voou, não tenho idéia do que fiz lá, decidi não tocar em nada e apenas obter meus quadros coloridos. Os 60% restantes dos quadros terminaram após 5 horas. A esse dia, o processamento em um minicarro só começaria a terminar, oh, pobre minicarro.


Ainda apenas começando

Execute o script de pesquisa de cena e preencha os diretórios. Revisamos, verificamos se algo deu errado, consertamos. Em geral, está tudo bem. Em seguida, você precisa limpar os quadros duplicados para excluir um desperdício de tempo em outras manipulações. Um problema, como ter certeza de que o script excluirá apenas o necessário e não perderá nada. Se você pensa logicamente, adicionar quadros extras não deve ser caótico, mas deve ter algum tipo de algoritmo. Obviamente, você não deve se apegar a ela, mas deve ser levado em consideração. Fazemos o seguinte: copie todas as cenas sem quadros duplicados para outra pasta e compare cada pasta com a original, usando a comparação dos diretórios do gerenciador de arquivos. Se o ritmo de repetição nos arquivos excluídos for observado visualmente, consideramos que tudo está normal. Funcionou à primeira vista.

Apenas meia hora e você pode ir mais longe. Começamos a compensação de tom. Depois de algumas horas, tentamos aproveitar o resultado, mas metade da alegria. Uma pequena parte das cenas está mal colorida. Ainda uma pequena parte das cenas da compensação de tom deu errado. Se foi possível com o segundo, ou simplesmente pegue o que estava antes da compensação, ou tente nivelar o tom sem usar o balanço de brancos. Isso com o florescimento foi ainda mais difícil. Algumas cenas melhoraram ao diminuir o parâmetro render_factor, o resto simplesmente não cedeu. O algoritmo simplesmente não encontrou nada semelhante no modelo treinado e produziu resultados estranhos. Eu tive que colorir cada uma dessas cenas várias vezes com um fator de renderização diferente e, em seguida, escolher o melhor quadro para que, pelo menos de alguma forma, parecesse a verdade. É difícil transmitir o quanto essa atividade esgota o cérebro. Eu tive que escrever scripts que coletassem opções para cada quadro em uma pasta separada, o que aumentou a produtividade e reduziu o fluxo de abuso.


Antes de prosseguir, você precisa cortar textos extras e reorganizar várias cenas em alguns lugares. Foram necessários alguns meios simples para edição de vídeo. Carregamos a estrutura de pastas com quadros diretamente no editor atual.


retornar a foto de volta

Excluímos cenas, as trocamos, descarregamos a estrutura atualizada para o disco em uma nova pasta.


retornar a foto de volta

Agora você pode converter 12 qps para 24 qps.

Ferramenta de desaceleração de vídeo
Link para o projeto: github.com/avinashpaliwal/Super-SloMo
Descrição: o projeto calcula quadros intermediários usando um modelo treinado. Você pode baixar as configurações prontas. Você pode ensinar a si mesmo. Com a escolha certa de dados de treinamento, o resultado é encantadoramente bonito.


Corrigimos o projeto para trabalhar com quadros individuais, caso contrário, ele simplesmente funciona. Começamos, olhamos o resultado. Juntamente com “uau”, surge um novo problema, algumas cenas são preenchidas com artefatos, porque para obter 12 quadros em 24, é necessário treinar o modelo especialmente.

Existem duas opções. E vocês dois não vão gostar. Exclua manualmente os quadros com falha ou participe do treinamento do modelo. Ou seja, gaste muito tempo ou gaste um tempo desconhecido com resultados imprevisíveis. A clareza prevaleceu.

Bem, assista a mais de 200.000 quadros. Qual é a dificuldade? O fato de você não poder excluir todos os quadros inválidos. É necessário remover exatamente aqueles que atingem os olhos e deixar os que são invisíveis. Ou seja, tente, repita, força bruta a combinação correta. Em algum momento da segunda metade dos quadros, a rede neural orgânica também aprendeu, e tornou-se intuitivo em que momentos aguardar defeitos, e quais quadros devem ser excluídos e quais não devem ser tocados. Apenas 4 dias e temos uma versão suave.

Nós coletamos o arquivo de vídeo. Nós olhamos. Parece bom. Mas algo parece estar interferindo. O que é isso? Uau, uau, uau, tiros duplicados, mas como, onde, por quê? Torna-se claro que esse bumerangue voou do passado. A estabilização também processou quadros duplicados e inseriu cada um deles separadamente no arco de movimento, adicionando um deslocamento exclusivo a cada um. E o algoritmo de busca duplicado, considerado razoavelmente que esses são quadros diferentes, uma vez que são alterados, tudo é lógico.

Ótimo, super. Mas não revise todos os quadros novamente sem tentar escrever pelo menos um pouco de código?

As experiências começaram com algoritmos para comparar imagens semelhantes. A dificuldade era que a maioria deles permite que você relate que as imagens são completamente diferentes ou relativamente parecidas. Para mim, os quadros realmente diferentes em uma cena eram quase semelhantes, e era necessário capturar imagens que são cópias offset. Todos os algoritmos experimentados e testados interferiram em uma pilha e em ambas.

Compare_ssim do skimage pode trazer algum benefício. Não vou fingir que me lembro do que é, pelo menos algumas vezes deu os resultados corretos e permitiu identificar imediatamente algumas das duplicatas. Eu tive que procurar o resto com meus olhos. No segundo dia, minha rede neural natural foi treinada para perceber o imperceptível. Nesse ponto, eu já estava atormentada pela deformação profissional: as imagens em preto e branco que chamaram minha atenção foram percebidas como um trabalho incompleto e qualquer tremor no conteúdo de vídeo de terceiros foi ouvido como "duplicado novamente!"

Colocando a próxima versão do vídeo, assistindo. Chega a entender que algumas cenas têm saturação ácida. E isso é novamente um problema, porque você não pode simplesmente reduzir e diminuir a saturação de todas as cenas para o valor geral, algumas delas, pelo contrário, não são muito brilhantes.

O desafio da saturação começa. Alterar este parâmetro é fácil, mas incrivelmente difícil de medir adequadamente. Isso era compreensível na teoria; na prática, só foi confirmado. Qualquer maneira ingênua de comparar a saturação de quadros surgiu durante o teste em cenas brilhantes, mas a taxa era normal ou desbotada, mas a taxa era muito alta.

No final do dia, pelo menos de alguma forma nasceu uma solução de trabalho.


retornar a foto de volta

À mediana da propagação da saturação de pixels, adicionamos o desvio padrão da saturação e obtemos a saturação máxima condicional do quadro. Isso é imperfeito, mas com esse método de medição, a equalização da saturação começou a funcionar. Restou apenas substituir o polinômio correção_valor = f (valor_medido) . Nós desenhamos a placa nos dados de teste com as mãos "congelou" -> "o valor de correção que deu um resultado agradável", colocamos a placa em qualquer ferramenta que possa se aproximar.

Função de correção de saturação total:


retornar a foto de volta

Passamos do espaço BGR (visualização padrão do opencv) para o HSV. Nós caracterizamos a matriz de saturação por um número. Calculamos o ganho / atenuação da saturação. Cortamos as partidas para o intervalo. Mesclar a matriz de saturação ajustada com o brilho e o tom originais, retorne ao espaço BGR.


Quando o lançamento já está?

Bem, parece que o vídeo está finalmente pronto. Você pode fazer música.

Como nenhum dos acompanhamentos musicais existentes me parecia adequado, não havia mais nada a fazer senão fazer algo sozinho.

Um problema estúpido surgiu desde o início: metade do disco estava entupida com backups de diferentes estados do filme. E o programa, que deveria produzir música, exigia dezenas de gigabytes para a biblioteca de faixas. Pensei: "o que poderia dar errado?" E excluí os backups pré-finais, porque eu tenho backups pré-finais em dois discos e não estou perdendo nada significativo, e é improvável que eu tenha que refazer qualquer coisa.

No terceiro dia de trabalho com música, o número de cenas que perderam a saturação não pôde mais ser ignorado. Alguns dos quadros ficaram completamente em preto e branco e, antes disso, eram esses quadros que eram os mais brilhantes. Curiosamente, o que poderia ser? Um polinômio de terceira ordem fora da tabela original voa abruptamente para o espaço? Isso é uma surpresa, certo? Deve-se notar que mais uma vez eu não quis rever o filme inteiro após a correção da saturação, limitando-me a ver um quadro de cada cena, o que dava uma sensação ilusória da suficiência do resultado.

Não houve problemas ao adicionar condições de contorno ao código de correção da saturação. O problema foi a falta de fonte da qual você pode obter a mesma sequência de quadros para a qual a sincronização com o som já foi concluída.


Existem duas opções: liberar uma imagem curvada no mundo com um som legal ou voltar duas etapas. Foi uma pena perder a perfeita sincronização perfeita acidentalmente, mas todo o objetivo do trabalho era colorido.

Repetimos a limpeza de duplicatas, remontando, ajustando a saturação, é claro, obtemos uma dessincronização forte do som, começamos a ultrapassar os pontos principais das faixas, estamos preocupados com o fato de a sincronização mágica estar quase acabando. Então, outra semana se passou.


Sobre musica

Escrever novas músicas de graça não é uma opção, mas destacar alguma das opções de acompanhamento disponíveis (embora haja pelo menos cinco delas) também carece de honestidade. No processo de busca de faixas gratuitas, me deparei com uma coisa interessante.

filmstro.com

A partir da descrição, fica claro que permite que você faça algo entre a substituição das faixas e composição de outras pessoas do zero. Possui uma extensa biblioteca de composições, cada uma das quais pode ser representada como um projeto a partir dos Fruity Loops condicionais. Todas as faixas de uma composição são agrupadas em três seções: Intensidade, Profundidade, Tensão. Alterando a "força" da seção, você pode alterar o número de faixas ativadas. Total: uma composição, em média, contém 11 opções de som, formadas como resultado da influência mútua das seções. Ao organizar os pontos principais ao longo da sequência de vídeo, a mudança no som da composição é vinculada ao que está acontecendo na tela. Tal doshirak. Saboroso, se você não sabe como aconteceu.


retornar a foto de volta


Sobre o YouTube

Por fim, você pode criar um canal e enviar o vídeo. Parece que tudo, terminar, você pode relaxar. Mas a realidade não se soltou e, se o vídeo original puder ser considerado arbitrariamente em HD, depois de enviado, o resultado será de qualidade nojenta. Por todas as indicações e opiniões, descobriu-se na Internet que o Google usa intencionalmente uma taxa de bits muito baixa para todos os novos canais. Felizmente, um bom conselho caiu em algum lugar: preencha a uma taxa de 1440p, como se isso tornasse o youtube mais cuidadoso quanto à fixação. O conselho realmente ajudou, tornou-se pelo menos assistível.

Após o download, reclamações sobre o uso de vídeos de outras pessoas surgiram imediatamente. Muito interessante, verifica-se que o grande Youtube ainda não possui um banco de dados de obras em domínio público, nós o ajudaremos enviando objeções.

Resultado: www.youtube.com/watch?v=r3NQyCInZiQ
Link para download na qualidade original: drive.google.com/uc?id=1dEPcjKbjNowxsfaNcbV6DsbAr3kbACKH&export=download


Outro

No geral, eu gosto do que aconteceu. A equipe de especialistas pagos faria doces. Nesse caso: 70% dos quadros normais, 20% dos ruins, 10% épico. Grátis, automaticamente. Todos os problemas que tive que resolver com as mãos se devem apenas ao fato de que isso foi feito pela primeira vez. O próximo filme a ser colorido será incomensuravelmente mais fácil. Não sei o que será, na era do cinema mudo, ainda não encontrei outros trabalhos que pedissem que eles fossem transferidos para o nosso meta-evento. Provavelmente, será algo de um filme de som inicial, o que significa que é necessário restaurar o som, trazê-lo para 20-20 KHz, convertê-lo em estéreo. Você pode tocar em tantas redes neurais diferentes =) Hoje, a qualidade da floração depende muito do material de origem, quanto mais tons de cinza são preservados, quanto maior a clareza, melhor o resultado. Provavelmente, a próxima geração dessas ferramentas sintetizará novas imagens de alta qualidade, e não encaixará a cor nos contornos antigos; será semelhante a projetos que imitam fotografias desenhando. Enquanto isso, para obter um excelente resultado, é necessário esticar a imagem em preto e branco e treinar individualmente o especificador de cores nos materiais de vídeo correspondentes ao filme de destino.

Nossa vida está mudando cada vez mais rápido, o prazo com o qual estamos nos mudando para outra realidade está diminuindo. Estamos escrevendo redes neurais para acompanhar tudo o que está acontecendo com as redes neurais. Mas temos cada vez menos tempo. Apenas meio ano atrás, eles me perguntaram se é possível tirar automaticamente uma foto arbitrária de cores autenticamente, minha resposta foi: "não, ainda é fantástico".

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


All Articles