Usando Deep Learning para transformar um iPhone em uma câmera 3D

Este artigo é um exemplo de como as redes neurais podem ser usadas hoje com muita facilidade como blocos de construção de produtos.

TL; DR 5 etapas

O artigo

Há alguns meses, vi esta postagem que é tendência no Hacker News:

Ele explicou como seus autores usaram filmes 3D, junto com sua versão 2D, para treinar uma Rede Neural (CNN) para converter uma imagem ou vídeo 2D em uma imagem 3D ou vídeo.

Que ótima ideia! Mas como poderíamos usar o modelo “Deep3D” resultante?

3D

Para criar o seu cérebro em 3D u ses duas imagens ligeiramente diferentes do que está à sua frente. O pequeno espaço entre seus dois olhos dá a essas imagens uma perspectiva diferente da cena, permitindo que seu cérebro crie 3D.

Portanto, para que um vídeo seja visto em 3D, você deve enviar uma imagem diferente para o olho de cada um.

Aqui está do que a rede neural é capaz:



Normalmente, o conteúdo 3D é criado usando uma câmera 3D. Câmeras especiais que imitam o espaço entre seus olhos com o espaço entre suas 2 lentes .

Não mais!

Assistindo em 3D

Depois de ter o conteúdo 3D, você precisa encontrar uma maneira de mostrar cada parte, esquerda e direita, apenas para o olho que precisa ver.

Isso pode ser feito de várias maneiras, como óculos azuis e vermelhos.

Aqui, vamos permitir que os usuários aproveitem o conteúdo 3D que criam com o telefone no telefone.

Usaremos o 3D Engine SceneKit integrado da Apple para criar um aplicativo visualizador e usá-lo para assistir ao nosso conteúdo em um Google Cardboard.

Aqui está uma representação de uma cena SceneKit 3D:

É apenas um espaço 3D simples (você pode imaginar uma esfera junto com as coordenadas X, Y, Z) no qual você tem uma câmera virtual que atua como o olho do usuário e onde você pode adicionar qualquer objeto virtual.

Você mapeia os movimentos da câmera para os movimentos do giroscópio do telefone e tem um espaço 3D para explorar no seu telefone.

Para torná-lo compatível com o Google Cardboard, você pode começar com meu projeto SceneKit VR Toolkit. Esta é a aparência de um iPhone:

Você precisará reconfigurá-lo não para mostrar cubos, mas apenas uma superfície plana, atuando como uma tela virtual, na qual projetaremos um vídeo ou imagem.

A documentação do Apple SceneKit é muito intuitiva e você deve estar pronta e funcionando em nenhum momento.

Para usar um vídeo como textura do SceneKit, você pode consultar meu projeto de player de vídeo 360 (ele também faz vídeo 3D estereoscópico 360).

Aqui está um esquema do que está acontecendo no SceneKit e no seu iPhone quando você executa o VR Toolkit:

As duas câmeras virtuais, ligeiramente separadas, darão a impressão de profundidade ao olhar para a cena 3D.

Mas não queremos apenas perceber a profundidade da cena. Queremos um vídeo ou foto 3D. Queremos que os dois olhos vejam algo diferente enquanto olhamos para a mesma tela.

Precisamos de um truque.

Fácil: construiremos duas cenas idênticas, uma por olho, e projetaremos a imagem do olho direito na tela virtual direita e a imagem do olho esquerdo na tela virtual esquerda.

Esquema de resgate:

Cada cena é idêntica, o que leva o cérebro a pensar que existe apenas uma. Mas ambas as telas são independentes e permitem a visualização de conteúdo 3D, mostrando imagens diferentes.

Concluindo

Agora você precisa de um PC com uma GPU discreta para instalar e executar a CNN.

Processe algumas fotos ou vídeos tirados do iPhone nele e exiba os arquivos resultantes em seu aplicativo visualizador! Você também pode criar facilmente um aplicativo Apple TV para exibi-lo, uma TV compatível com 3D detecta automaticamente o conteúdo 3D.

Esta é a aparência do aplicativo com a foto de um amigo processada:




Use um papelão e divirta-se com o 3D!

Talvez eu poste o aplicativo visualizador de amostra no Github se alguém precisar! 🙂