C贸mo no ganamos el hackathon

Del 30 de noviembre al 2 de diciembre, el hackathon PicsArt AI se llev贸 a cabo en Mosc煤 con un fondo de premios de $ 100,000. La tarea principal era crear una soluci贸n de inteligencia artificial para procesar fotos o videos, que se pueda usar en la aplicaci贸n PicsArt. Un colega de trabajo (en ese momento) Arthur Kuzin se ofreci贸 a participar, habi茅ndome interesado en la idea de anonimizar fotos personales de usuarios con detalles conservantes (expresiones faciales, etc.). Arthur tambi茅n llam贸 a Ilya Kibardin, un estudiante del Instituto de F铆sica y Tecnolog铆a de Mosc煤 (alguien m谩s ten铆a que escribir el c贸digo). El nombre naci贸 muy r谩pido: DeepAnon.



Esta ser谩 una historia sobre nuestra decisi贸n, su degradaci贸n desarrollo, hackathon y c贸mo no tienes que adaptarte al jurado.


Hackathon


Hab铆a tres formas de llegar al hackathon. El primero es entrar en la clasificaci贸n de los 50 mejores en la tarea de segmentaci贸n de rostros: "Datascience genius". El segundo es unirse de inmediato en un grupo de hasta 4 personas y mostrar un MVP que funcione: "equipo alegre". En la 煤ltima versi贸n, era necesario simplemente enviar una descripci贸n de su brillante idea. Decidimos no perder el tiempo e inmediatamente, una semana antes del hackathon, hacemos MVP. Bueno, en general, decidimos que eran geniales, por lo que todo Tima entr贸 en el top 10 en la clasificaci贸n y, en consecuencia, Inzeman.



La idea principal de nuestro producto es la siguiente: las personas comparten fotos sin pensar con ellas mismas (a veces no del todo legales) en las redes sociales, de las que luego pueden arrepentirse, o por las que incluso pueden ser castigadas en el futuro. Para protegerse, puede censurar su rostro con "cuadrados" y aplicar brillo al fondo. Pero entonces no solo la cara estar谩 oculta, sino tambi茅n las emociones, y el fondo se corromper谩. Para mantener las emociones en la cara y los objetos en el fondo, nuestra aplicaci贸n cambia todas las caras en la foto y hace que la caricatura del fondo. Y para que una persona no pueda ser reconocida por la ropa, se reemplaza por otra.



En una semana logramos hacer casi todo lo que hab铆amos planeado. Para cada etapa, se utiliz贸 una red neuronal separada (y algunas veces incluso varias). Al principio, todas las caras estaban en la imagen y se reemplazaban con la misma cara de celebridad; para esto, se utiliz贸 una soluci贸n similar a DeepFake. Luego, con la ayuda de la segmentaci贸n humana, se separ贸 el fondo y se realiz贸 la transferencia de estilo a dibujos animados (Rick y Morty). En la 煤ltima etapa, hubo una segmentaci贸n de diferentes partes de la ropa y su cambio, un cambio aleatorio de colores en el espacio HSV, ya que el jurado no tuvo tiempo de transferir el estilo antes de que se mostrara el MVP.



En cada etapa, surgieron dificultades t茅cnicas. Por ejemplo, todas las implementaciones de DeepFake en un github pudieron convertir solo una cierta cara X en una cara espec铆fica Y. En esta formulaci贸n del problema, se necesitan muchas fotograf铆as de dos personas. La forma m谩s f谩cil de recopilar un conjunto de datos de este tipo es encontrar un video de las actuaciones de una persona donde solo se muestra la mayor parte del tiempo y, mediante la detecci贸n de rostros, cortar una foto. El 茅nfasis principal en nuestra idea fue precisamente que es posible hacer la misma cara Y de cualquier persona. Intentamos usar muchos tipos de caras del conjunto de datos CelebA en lugar de una persona X, y, afortunadamente, comenz贸. A continuaci贸n se muestra el esquema DeepFake tomado de la implementaci贸n que utilizamos .



El resultado se incluy贸 en una matraz de demostraci贸n web y se ejecut贸 para su visualizaci贸n. Aqu铆 est谩 la descripci贸n de nuestro centro de ganancias para el jurado.


Presentamos un servicio que le permite anonimizar contenido multimedia (fotos y videos). En la versi贸n b谩sica, el servicio oculta caras. En avanzado, cambia las caras de los usuarios a las caras de otras personas (DeepFake), cambia la ropa y el fondo (segmentaci贸n + transferencia de estilo). Como uso alternativo, el servicio puede servir para crear videos o fotos divertidas y virales con las celebridades reemplazadas.

Quedaban unos d铆as antes de que comenzara el hackathon, y logramos mejorar el cambio de ropa. Si antes esto era un cambio de color en HSV, ahora ahora para cada tipo de ropa se aplicaba un estilo diferente (por varios artistas). Otra idea surgi贸 de que ser铆a mejor hacer un cambio de rostro no en una celebridad, sino primero clasificar por g茅nero, y luego transferir los rostros de hombres y mujeres de manera diferente (por ejemplo, en Navalny y Sobchak). Y en el 煤ltimo momento lograron agregar varios niveles de anonimato a la demostraci贸n web: se hizo posible elegir qu茅 elementos de anonimato usar.




Fuimos a la parte fuera de l铆nea con la actitud de que este es un caso de usuario 煤til e inusual, y no solo m谩scaras faciales virales. Uno de los mensajes en el chat de nuestro equipo:


S铆, si lo piensas, todos lo necesitan. Simplemente no se dieron cuenta, muchas personas hurgan en su contenido mientras golpean, beben, violan la ley y piensan que el estado no se preocupa por ellos.
Y despu茅s de 5 a帽os, vendr谩 la IA, mirar谩 las publicaciones antiguas y, despu茅s del hecho, el t茅rmino se soldar谩.

En el hackathon


La parte fuera de l铆nea comenz贸 el viernes. A cada equipo se le asign贸 una mesa separada, y el buffet era interminable. carbohidratos r谩pidos galletas Despu茅s de la apertura oficial, decidimos no perder el tiempo e inmediatamente descubrimos del jurado lo que quieren de los participantes. Despu茅s de hablar informalmente con varios organizadores, sentimos que su anonimato no los atrap贸. Pero me gust贸 la idea con la segmentaci贸n de partes individuales de la foto y su cambio. Tambi茅n qued贸 claro que quieren algo de nosotros que se pueda implementar en PicsArt. Sin embargo, por la noche, nuestro equipo envi贸 una descripci贸n del proyecto, que hablaba sobre el anonimato, pero con 茅nfasis en la segmentaci贸n y edici贸n de partes individuales de la foto.


Descripci贸n del proyecto para el jurado el viernes por la noche:


Ofrecemos un servicio que le permite procesar fotos de forma simple y autom谩tica para anonimizarlas. Al segmentar la ropa, los accesorios, el cabello en la cabeza y los elementos de fondo, el servicio le permite procesar cada objeto de forma independiente, sin la necesidad de una selecci贸n manual. El servicio tambi茅n le permite cambiar caras mientras mantiene expresiones faciales y expresiones.

Seg煤n el formato de hackathon, los equipos que se hayan mostrado bien en comisiones t茅cnicas podr谩n defenderse. Las comisiones tuvieron comunicaci贸n en vivo con el jurado y el equipo t茅cnico de PicsArt, as铆 como una demostraci贸n que demostraba su trabajo.



En la primera comisi贸n del s谩bado, no pudimos vender el anonimato al jurado, pero vimos que les gustaba la idea de editar objetos individuales en la foto. Adem谩s, el jurado acept贸 con entusiasmo la idea de un peinado removible haciendo clic en el cabello (result贸 que ahora est谩n tratando de hacer algo similar).


Nuestro equipo no pudo resistir esta presi贸n (desafortunadamente) y acord贸 cambiar la visi贸n del producto. Se decidi贸 centrarse en un cambio de calidad de la ropa.


En la demostraci贸n en la pantalla principal, se plane贸 mostrar varias opciones para la foto original (idealmente, la ropa cambia al tocar la pantalla):


Ropa de abrigo:


  • dejar como est谩
  • jeans
  • leopardo

Pantalones:


  • dejar como est谩
  • jeans
  • leopardo

Zapatos:


  • dejar como est谩
  • zapatos graciosos

En la versi贸n b谩sica con cabello, se decidi贸 hacer la transformaci贸n "calvo - no calvo". Para esto, calvos y todos los dem谩s fueron seleccionados del conjunto de datos de celebridades CelebA. En estos dos grupos, CycleGAN se estableci贸 para estudiar, que puede transformar im谩genes del dominio A en el dominio B, y viceversa (otro ejemplo ser铆a convertir un caballo en una cebra).


Logramos conocer a uno de los desarrolladores de PicsArt y aprender un poco sobre su cocina interior. Realmente no cre铆a en el 茅xito de nuestro experimento con el cabello, pero lanz贸 enlaces en qu茅 direcci贸n mirar. Para nuestra decepci贸n, la neurona realmente no aprendi贸 c贸mo agregar o reducir el cabello. Pero ella aprendi贸 a cambiar el tono de la piel (adivina por qu茅).



La visi贸n del producto cambi贸 despu茅s de cada comunicaci贸n con esas comisiones. Los planes inclu铆an mejorar el cielo y cambiar los estilos de los objetos individuales (inicialmente solo ropa): edificios, autom贸viles y accesorios en p煤blico. El foco pas贸 del anonimato cada vez m谩s. Para la presentaci贸n final, decidimos adherirnos a la siguiente estructura de 4 diapositivas:


  1. Segmentaci贸n de ropa. Foto: foto original, ropa segmentada, 4 opciones para procesar ropa.
  2. Segmentaci贸n de la escena. Una foto oscura con un cielo sobreexpuesto. El cielo se hace art铆stico, los edificios son dibujos animados.
  3. Cambio de cara y cambio de cabello. Entonces qu茅 comenzar谩.
  4. Todos juntos Una diapositiva que muestra que esto se hace en tres clics.

Pero result贸 que la presentaci贸n no era necesaria. El s谩bado por la noche, a todos se les dijo que la defensa deber铆a ser una actuaci贸n de 3 minutos sin una presentaci贸n. Desde la escena, deber谩s mostrar tu demo en tiempo real. Los organizadores quieren ver tecnolog铆as de trabajo, no hermosas presentaciones, y eso es genial. En comparaci贸n con otros hackathons, donde ganaron equipos con demos rotas, nos gust贸 este concepto. El 煤nico problema era que en ese momento nuestro grupo de modelos se lanz贸 individualmente y durante mucho tiempo. Para mostrar el escenario, se necesitaba optimizaci贸n.


Durante el desarrollo, los mentores de la comisi贸n t茅cnica caminaron por el pasillo y observaron el progreso. Despu茅s de otra conversaci贸n con uno de los mentores, recibimos un comentario de que ser铆a mejor para nosotros centrarnos en una cosa, en su opini贸n, en cambiarse de ropa. PicsArt quiere que el resultado sea realista y visible para los usuarios. De hecho, diferentes mentores y miembros del jurado ten铆an diferentes puntos de vista sobre lo que deber铆a ser un proyecto ideal para ellos.


Varios mensajes del chat del equipo en ese momento
O tienen un efecto viral en el sitio de hackathon, entonces son un editor serio

Ble, no un hackathon, sino un s贸lido: "aqu铆 hay un nuevo infa, rehace todo lo que tenemos"

Despu茅s de que CycleGAN no termin贸 el cambio de cabello, decidimos probar un enfoque diferente. Primero segmente el cabello y luego aplique pintura sobre 茅l. La tarea de pintar es restaurar la parte oculta de la imagen del contexto circundante. Seg煤n nuestro plan, ocultamos el cabello y la red neuronal intentar谩 restaurarlo. Pero como la red no vio qu茅 tipo de cabello tiene esta persona, restaurar谩 otro peinado. El problema es que incluso los modelos entrenados en los rostros de las personas no pudieron restaurar el cabello normalmente (si pinta solo una parte del cabello, funciona).



La principal dificultad es una gran variedad de peinados. Hubo una idea de entrenar la pintura solo en personas calvas, y luego la modelo probablemente aprender铆a a cambiar cualquier peinado por falta de cabello. Tomamos la implementaci贸n de la red neuronal de este repositorio .


Como la demostraci贸n deber谩 mostrarse desde la escena en tiempo real, tuve que optimizar la velocidad de la tuber铆a. El mayor incremento en la velocidad se dio por la transferencia de todas las redes neuronales a la memoria durante toda la duraci贸n de la aplicaci贸n. Hubo algunas dificultades: comenzar a hacer todo en la ventana acoplable, pero anotar en el camino, varias veces cay贸 en problemas con las versiones de tensorflow. De hecho, es dif铆cil no entrar en una situaci贸n as铆 cuando intentas lanzar una docena de repositorios desde un github al d铆a, cada uno de los cuales usa una versi贸n diferente de tensorflow, actualiz谩ndose a la versi贸n deseada en un lugar, lo rompes en otro. Docker puede ser un buen amigo en tal situaci贸n, pero en un hackathon quieres pasar cada minuto probando nuevas hip贸tesis y no creando una nueva imagen. Sin embargo, sucumbiendo a tal tentaci贸n, corre el riesgo de pasar a煤n m谩s tiempo depurando el c贸digo e intentando averiguar qu茅 versi贸n de la biblioteca en qu茅 lugar necesita.


Dia final


El domingo por la ma帽ana, decidimos la visi贸n final del producto (ya es hora): cambiarse de ropa con la posibilidad de mejorar el cielo. Quer铆a limitar la tarea lo m谩s posible, pero cambiarme de ropa parec铆a demasiado peque帽o. As铆 es como se ve铆a el "dise帽o" de nuestra aplicaci贸n web.



Inicialmente, quer铆an agregar un dise帽o adaptativo para que sea conveniente mirar desde el tel茅fono. Pero el tiempo se acababa y nuestro dise帽o se redujo a np.vstack (imgs_list).


Antes de la presentaci贸n final, quer铆a llevar la caracter铆stica con ropa a un estado final. Se agreg贸 una mezcla alfa de ropa y fondo: desaparecieron las transiciones bruscas. Dej贸 solo las texturas m谩s realistas: jeans y piel de cocodrilo. Unas horas antes del espect谩culo, logr茅 comenzar la segmentaci贸n del cielo y transferirle el estilo desde este repositorio . Hab铆a opciones para convertir el cielo en un apocal铆ptico, venenoso, caricaturesco. Pero el cielo de invierno se convirti贸 en el tema m谩s adecuado del concurso: su aplicaci贸n dio el efecto de un "mejorador" del cielo.



Quedaba muy poco tiempo cuando todos los componentes se conectaban en un solo conjunto y se ganaban. Descargamos muchas fotos de las redes sociales y planeamos lanzar una aplicaci贸n en ellas para seleccionar los casos m谩s exitosos (garabatos). Pero result贸 que nuestro equipo fue el primero, por lo que todo fue lo m谩s honesto posible: mostraron demostraciones en fotos aleatorias.



Arthur, hablando en el escenario, pudo revelar nuestra idea e Ilya demostr贸 nuestro MVP en el proyector: la ropa cambi贸 en todas las fotos y el cielo mejor贸.



Otra foto









No todos los participantes pudieron hacer frente a la tarea: mostrar solo su demostraci贸n. La tentaci贸n de agregar algunas diapositivas hermosas fue genial. De las soluciones que m谩s nos gustaron de la defensa: convertir videos en c贸mics, as铆 como combinar dos fotos en una.


Resultados


Como resultado, de acuerdo con la informaci贸n privilegiada, nuestro equipo ocup贸 el sexto lugar a un paso del mani.


Despu茅s del hecho, llegamos a una opini贸n com煤n (bueno, adem谩s del hecho de que 3 de los 5 mejores equipos recibieron el premio inmerecidamente) de que era necesario ser persistente y terminar decisivamente la idea inicial de anonimato. Incluso ahora, estamos convencidos de que es adecuado y aportar谩 valor a varios usuarios. Comprometidos en el desarrollo de ideas con el anonimato durante todo el fin de semana, al menos nos divertir铆amos m谩s.


Si nunca ha participado en hackatones, aseg煤rese de intentarlo: una excelente prueba de usted y su equipo, una oportunidad para darse cuenta de algo para lo que nunca tuvo tiempo. Y, por supuesto, aseg煤rate de hacer lo que quieras, porque el m谩ximo beneficio del proceso solo se puede obtener quemando en el hardcore.


Estado actual del proyecto.


Nuestro equipo public贸 el c贸digo para la demostraci贸n final en GitHub . Y tambi茅n hay un repositorio separado que hace el anonimato . En el futuro, hay planes para desarrollar la versi贸n inicial con anonimato: reescribir todo en PyTorch, entrenar en fotos con mayor resoluci贸n y menos ruido (foto con una sola cara), as铆 como subir el bot en telegrama.


Para aquellos que ya quieren probar la versi贸n nacida al comienzo del hackathon, se lanza un bot en Telegram en modo de demostraci贸n ( @DbrainDeepAnon -> /start -> /unlock dbraindeepanon ). Funciona en el servidor Dbrain (nuestro agradecimiento), en el que se realiz贸 todo el entrenamiento de transferencia de cara, as铆 que pru茅belo hasta que se apague. El servicio utiliza el contenedor interno Dbrain - wrappa, que le permite envolver f谩cilmente el contenedor acoplable e iniciar el bot de telegramas. Pronto wrappa estar谩 disponible en c贸digo abierto.


Me gustar铆a se帽alar que nuestro trabajo no fue en vano. Gracias a DeepAnon, una "persona an贸nima", que estaba muy preocupada por la privacidad de sus datos, finalmente pudo dirigir un instagram sobre su vida. Ya no teme que las c谩maras en la ciudad puedan reconocer su rostro a partir de fotograf铆as de las redes sociales, sin embargo, los amigos podr谩n reconocerlo. Las caras de todas las personas en su Instagram tambi茅n est谩n an贸nimas.



Enlaces a los repositorios que utilizamos:


https://github.com/shaoanlu/faceswap-GAN
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
https://github.com/sacmehta/ESPNet
https://github.com/JiahuiYu/generative_inpainting
https://github.com/NVIDIA/FastPhotoStyle


PD: Tambi茅n, para el fan谩tico, intent茅 volver a capacitar a la red para reemplazar a las personas con uno de los miembros de ODS . Intenta adivinar a qui茅n. Las redes dieron el nombre de TestesteroNet.



Otra foto


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


All Articles