
Hoje, o projeto Technosphere comemora seu quinto aniversário. Aqui estão nossas realizações ao longo dos anos:
- O treinamento foi concluído por 330 graduados.
- O curso tem 120 alunos.
- As aulas são ministradas por 30 professores.
- O currículo tem 250 aulas em 16 disciplinas.
- Os alunos realizam 71 DZ.
- 8000 usuários.
- Mais de 100 estudantes começaram suas carreiras no grupo Mail.ru.
No final do treinamento, os alunos criam seus próprios projetos de graduação para os quais recebem três meses. E em homenagem ao quinto aniversário da tecnosfera, reunimos os trabalhos de graduação mais brilhantes dos últimos anos. Os próprios graduados contarão sobre seus projetos.
"Memória brilhante"
Vsevolod Vikulin, Boris Kopin, Denis KuzminInicialmente, planejamos criar um serviço de retoque de imagens que também nos permitisse colorir fotografias em preto e branco. Ao discutir projetos com mentores, surgiu uma idéia para informar a equipe OK sobre essa ideia e, como resultado, eles decidiram criar um aplicativo especial com a função de colorir fotografias em preto e branco da guerra.
Para fazer isso, tivemos que projetar a arquitetura da rede neural, criar um conjunto adequado de fotos para treinar o modelo e executar o aplicativo na plataforma OK.
Tentamos muitas redes neurais prontas, mas nenhuma delas deu a qualidade desejada. Então decidimos criar o nosso. No primeiro estágio, a rede neural tentou prever a imagem RGB no canal BW, mas o resultado foi mais ou menos, porque a rede tentou colorir tudo em tons de cinza.
Um exemplo da operação da rede neural original.Então decidimos usar uma segunda rede neural pré-treinada.
Com sua ajuda, conseguimos extrair sinais tanto da fotografia colorida original quanto daquela pintada pela primeira rede neural. Assim, ensinamos a segunda rede neural a entender quais cores são inerentes a certos objetos na vida real: o céu é azul, a grama é verde e assim por diante. Para implementar redes neurais, usamos o popular framework Pytorch.
Nova arquitetura de rede neural.Mas o principal era ensinar o modelo a pintar o rosto das pessoas da maneira mais realista possível. Fomos confrontados com o fato de que, entre os conjuntos de dados existentes, não havia ninguém adequado para a nossa tarefa - precisávamos de fotos grandes de rostos com algum fundo natural. Para formar nosso próprio conjunto de imagens, criamos uma lista de 5000 nomes de celebridades. Em seguida, esses nomes foram pesquisados por imagens em vários mecanismos de pesquisa. Usando métodos de reconhecimento de rosto, foram removidas fotos que não continham rostos e os fragmentos mais adequados foram destacados nas fotografias restantes. Então, coletamos o conjunto necessário de 600 mil fotos.
Em seguida, veio a tarefa de pintar realista um uniforme militar.
Para resolvê-lo, tive que gerar artificialmente uniformes militares com várias medalhas e ordens. Além disso, eu tive que fazer alguns filmes coloridos sobre a guerra.
Exemplos de fotos do conjunto de treinamento.Combinando tudo isso com um conjunto popular de fotografias de uso geral, recebemos 2,5 milhões de fotografias para treinar a rede neural.
Preparamos um protótipo funcional da rede neural e começamos a desenvolver um aplicativo na plataforma OK. Este é um aplicativo Web padrão com back-end e front-end. Nós éramos responsáveis pelo back-end e a equipe OK assumiu o front-end. Avaliando realisticamente os recursos disponíveis, decidimos que seria mais racional usar a arquitetura atual do projeto Artisto.
Para fazer isso, transportamos o código de rede neural para o framework Lua Torch e o implementamos no ambiente.
A interface do aplicativo está OK.Em 9 de maio, nosso aplicativo ficou disponível para os colegas multimilionários de Odnoklassniki, vários grandes meios de comunicação escreveram sobre ele e atualmente 230 mil pessoas usam o serviço. Foi muito difícil implementar o projeto em tão pouco tempo, mas conseguimos tudo. Muito obrigado às nossas mentoras Olga Schubert e Alexei Voropaev, que nos ajudaram com a integração no OK. Agradecemos também ao Grupo de Desenvolvimento de Infra-estrutura do Mail.ru Procure ajuda com a integração ao projeto Artisto e, separadamente, a Dmitry Solovyov pelos conselhos inestimáveis sobre arquitetura de redes neurais.
"Mapa da música"
Vladimir Bugaevsky, Dana Zlochevskaya, Ralina Shavalieva

A idéia do projeto foi sugerida pelos mentores Aleksey Voropaev e Dmitry Solovyov. Era uma vez um jogador da Sony capaz de classificar as músicas de acordo com quatro modos. Hoje, a tecnologia deu um grande passo à frente, a inteligência artificial e as redes neurais estão se desenvolvendo ativamente, e percebemos que poderíamos fazer algo mais interessante do que nossos usuários gostariam - uma placa de música que visualizasse o humor das gravações de áudio do usuário VK. E eles decidiram implementá-lo na forma de uma extensão para o Chrome - é fácil de instalar e conveniente de usar.
Naturalmente, começamos a explorar as abordagens que já eram usadas para determinar o humor da música. Depois de assistir a cerca de uma dúzia de artigos científicos, percebemos que quase ninguém havia tentado usar redes neurais para analisar as emoções das gravações de áudio.
Outra dificuldade para nós foi a tarefa de visualizar emoções. Descobriu-se que na psicologia existem muitos modelos para representar o humor humano, cada um com suas próprias vantagens e desvantagens. Estabelecemos o modelo espacial circunflexo: sua idéia é que qualquer emoção possa ser representada como um ponto no espaço bidimensional. Graças a essa escala, conseguimos visualizar o humor de suas gravações de áudio de maneira compreensível para o usuário.
Identificamos três frentes de trabalho no aplicativo:
- A parte do servidor aceita solicitações de expansão, constrói espectrogramas, faz previsões e as devolve ao usuário.
- A parte do usuário com a qual a pessoa irá interagir.
- Treinamento em redes neurais: preparando o conjunto de treinamento, escolhendo a arquitetura de rede e o próprio processo de aprendizado.
O escopo do trabalho era extremamente grande, para que todos pudessem se esforçar em tudo. Nossa equipe agiu de forma muito coesa: constantemente buscávamos maneiras diferentes de resolver certos problemas e nos ajudávamos a descobrir os recursos da implementação de partes individuais. A principal dificuldade que encontramos foi um prazo extremamente curto de três meses. Durante esse período, tivemos que entender do zero o desenvolvimento do frontend (aprender a escrever em JavaScript), os meandros da estrutura para o treinamento da rede neural (PyTorch) e dominar a tecnologia do desenvolvimento modular (Docker). Agora, nosso aplicativo funciona no modo de teste para vários usuários.
“Colorização de vídeo para profissionais”
Yuri Admiralsky, Denis Bibik, Anton Bogovsky, George Kasparyants

A idéia do projeto surgiu como resultado da análise de tendências modernas no desenvolvimento de redes neurais para resolver os problemas de computação gráfica e processamento de conteúdo multimídia. Várias abordagens diferentes para colorir imagens individuais já foram propostas nessa área; esse problema surge, por exemplo, ao processar fotografias antigas de arquivos. Por outro lado, o sucesso das versões coloridas dos filmes soviéticos em preto e branco mostrou a relevância das tarefas de colorir vídeos. Colorir o vídeo manualmente, quadro a quadro, é uma tarefa extremamente demorada, cuja solução requer o envolvimento de estúdios profissionais. E dos usuários que desejam obter versões coloridas de seus vídeos antigos, poucos possuem as habilidades necessárias e têm tempo suficiente para colorir manualmente, sem mencionar o dinheiro para concluir essa tarefa com a ajuda de equipes profissionais de estúdios de vídeo. Portanto, decidimos tentar aplicar as abordagens conhecidas para colorir e criar um programa editor para reduzir significativamente a complexidade de colorir vídeos usando redes neurais.
A principal tarefa que precisou ser resolvida ao desenvolver um programa desse tipo foi obter as cores certas ao pintar objetos no quadro. Estamos diante do fato de que os conjuntos de dados clássicos (por exemplo, ImageNet) usados no treinamento de redes neurais para resolver problemas de processamento de imagens não nos permitem obter uma boa coloração automática (sem nenhuma informação adicional). Por exemplo, alguns objetos no quadro não foram reconhecidos e permaneceram em preto e branco na imagem colorida. Outro problema dos modelos de ponta foi a escolha incorreta de cores para a pintura de objetos - tanto por causa da tarefa ser indeterminada (coloração das roupas) quanto como resultado da definição incorreta de objetos raros, bem como objetos afetados por artefatos de compressão. Ao alterar os quadros, foi observada uma mudança de cor na coloração dos objetos presentes no quadro, devido à instabilidade dos modelos em pequenas alterações no quadro.
Para resolver esse problema, aplicamos o método de
sugestões de cores locais , o que nos permitiu obter a atribuição de cores correta para todo o objeto e as transições de cores corretas, definindo as cores dos pontos individuais dos objetos. Ao mesmo tempo, a rede neural durante a coloração controla a observância dos limites dos objetos e as transições de brilho. Essa abordagem nos permitiu reduzir a laboriosidade de colorir quadros individuais (era necessário definir explicitamente as cores de apenas pontos individuais no quadro, sem o uso de pincéis) e ajudou a resolver o problema de subdeterminações e alterações de cores ao alternar entre quadros. Além disso, implementamos modelos que permitem rastrear o movimento de objetos no quadro e mover dicas de cores. Usando nosso programa de edição, colorimos um fragmento do antigo filme em preto e branco
The Kid .

Um exemplo de uma moldura pintada do filme Chaplin The Kid (1921).Implementamos o editor na forma de um aplicativo independente do cliente, no qual o vídeo é carregado, e os quadros são marcados usando dicas de cores. Você pode calcular os modelos de coloração na máquina local ou na capacidade de computação de terceiros (por exemplo, implantando a parte do servidor na nuvem) para processar o vídeo mais rapidamente.
Para criar o editor, fizemos muito trabalho, incluindo testes e finalização de modelos para colorir e rastrear objetos de quadro, desenvolvendo uma arquitetura cliente-servidor para o aplicativo e calculando a usabilidade do aplicativo cliente. Aprendemos os meandros de trabalhar com a estrutura PyTorch que implementa o trabalho de redes neurais, dominamos a estrutura Qt 5 para desenvolver um aplicativo cliente e aprendemos como usar o Django-REST e o Docker para desenvolver e implantar um back-end de computação.
Um exemplo de um aplicativo cliente.Agradeço aos professores da Technosphere por seu trabalho dedicado, pelo conhecimento relevante que você fornece aos alunos. Desejamos que o projeto cresça e se desenvolva!
* * *
Você pode se inscrever para o treinamento até as 10:00 do dia 16 de fevereiro em
sphere.mail.ru . Observe que apenas estudantes e pós-graduados da Universidade Estadual de Moscou podem estudar na Tecnosfera. M.V. Lomonosov.