Como Gemini troca a roupa atual de uma pessoa numa foto?
Mais um post referente a visão computacional aqui. Espero que seja de bom proveito.
Primeiramente, é feito um processo de pré-processamento e extração de características, onde o sistema prepara o "terreno" antes de pintar.
O SegFormer define onde pintar (criando uma máscara que apaga a roupa velha) e o OpenPose define a forma do corpo.
O IP-Adapter diz ao modelo qual textura usar (baseado na foto da roupa) e o ControlNet diz como posicionar essa textura (baseado no esqueleto).
O Stable Diffusion preenche a área vazia, gerando pixels que misturam a textura da nova roupa com a pose original da pessoa.
Vamos fazer isso na prática para alterar a roupa da pessoa nessa foto.

Essa é a imagem da roupa.

Através disso conseguimos fazer a segmentação da área da roupa que a pessoa está utilizando. (isso também é feito com a imagem da roupa que enviamos!)

E também fazemos a estimativa da pose atual.

Com isso em mãos, conseguimos pintar a nova roupa.

Resumindo:
O modelo funciona como uma colagem digital inteligente. Primeiro, usamos IA para recortar a roupa antiga (Segmentação) e mapear a posição do corpo da pessoa (Estimativa de pose). Depois, usamos um modelo generativo (Diffuser de inpainting) que preenche esse buraco vazio, mas guiado por duas instruções estritas: 'respeite a anatomia deste corpo'.
Importante notar que esse é um modelo criado para experimentação, os modelos reais usados em deploys em sistemas comerciais, mantidos através de vários datacenters e clusters de GPU, como o Gemini são absurdamente mais complexos e por conta disso tem um resultado MUITO melhor.
Você pode ver o código da implementação completa desse projeto no meu github. Clique aqui.
Se me ajudar com o engajamento no post do Linkedin agradeço.