Recorte automático de milhares de fotos em torno de rostos com IA no ComfyUI

Um recorte inteligente em lote: o Florence 2 encontra o rosto (ou qualquer coisa que você nomear) em cada foto de uma pasta, e o ComfyUI recorta um quadro limpo e centralizado em torno dele, em qualquer proporção.

Anton Tenitsky13 de outubro de 20264 min de leituraVersão em vídeo abaixo

Este guia foi traduzido do inglês com IA e pode conter erros. Leia o original.

Uma grade de fotos em preto e branco de Marilyn Monroe, cada uma recortada automaticamente em torno do rosto

Eu precisava recortar uma pilha de fotos em torno do rosto: fotos verticais transformadas em quadros horizontais para um vídeo. Um recorte básico pega o meio da imagem, ou o topo ou a base se você mandar, mas não consegue encontrar o assunto. Com IA, consegue. Este fluxo encontra o rosto em cada foto de uma pasta e recorta um quadro limpo em torno dele. Pode igualmente recortar em torno de mãos, de uma camiseta ou de qualquer outra coisa que você consiga nomear.

Demonstro com fotos de domínio público de Marilyn Monroe.

Uma foto vertical de Marilyn Monroe com uma área de recorte horizontal posicionada em torno do rosto
O objetivo: um quadro horizontal posicionado em torno do rosto, não só no meio da foto.

Em resumo

  • Carregue uma pasta de fotos com o Load Image Batch (modo incremental).
  • Encontre o rosto com o Florence 2 (tarefa: caption to phrase grounding).
  • Expanda a máscara para o recorte ter espaço em volta do rosto.
  • Recorte por máscara e depois redimensione com um fill crop para um tamanho exato (1920 × 1080 no meu caso).
  • Velocidade: de 500 a 1.000 fotos em cerca de 20 a 30 minutos.

O fluxo está no meu Patreon. A seguir, como cada parte funciona.

1. Carregue e redimensione as fotos

O Load Image Batch aponta para a sua pasta, no modo incremental image, para cada execução pegar a próxima foto.

O nó Load Image Batch em incremental image com um caminho de pasta, e um nó Image Resize
Importação em lote: um caminho de pasta e o modo incremental.

Quantas execuções? Defina a contagem do lote como o número de fotos, por exemplo 18. A contagem do lote para em 100, porém. Para 500 fotos, use Run (Instant), que continua enfileirando até você parar. É rápido: deixe rodando por 20 a 30 minutos e mil fotos estão prontas.

Depois, um nó Image Resize escala cada foto de modo que o seu lado mais longo tenha 1920 pixels, mantendo as proporções. Minhas fotos couberam bem num quadro Full HD vertical assim.

2. Encontre o rosto com o Florence 2

Instale o pacote Florence 2 pelo ComfyUI Manager. O modelo se baixa sozinho na primeira execução.

O nó Florence2ModelLoader com o menu de modelos aberto
O carregador do modelo Florence 2. O base funciona bem para rostos.

Qual modelo:

  • Base: perfeito para tarefas simples como encontrar um rosto, e rápido. Não dá muito defeito.
  • Large: bem mais lento, mas consegue contornar formas reais, como uma mão e um braço, em vez de só uma caixa.
  • Versões fine-tuned (ft): nunca encontrei uso para elas; nunca me deram bons resultados.

No nó principal do Florence 2, digite o que encontrar («face», «hands», «t-shirt») e defina a tarefa como caption to phrase grounding. É a tarefa que devolve uma máscara de onde a coisa está. As outras tarefas fazem outros trabalhos, como escrever uma legenda da imagem, o que é útil em outros fluxos mas não aqui.

O nó Florence 2 com uma pré-visualização de máscara mostrando um retângulo branco onde o rosto foi encontrado
«Face» encontra uma caixa em volta do rosto. Uma localização aproximada é tudo de que precisamos para recortar.

Uma pré-visualização da máscara mostra o que ele encontrou. Às vezes pega demais: numa foto escolheu o bebê inteiro em vez do rosto, e em fotos com duas pessoas às vezes achou só um rosto. Tente variações como «faces» ou «two faces». Mantenho o prompt o mais simples possível.

3. Expanda a máscara e defina o quadro

A caixa detectada é justa, e um recorte tão justo corta o rosto. Um nó Grow Mask a expande, em 200 pixels aqui. Use 0 se quiser justo, e mais para fotos muito grandes (uma foto de 6.000 pixels precisa de uma expansão maior). Os cantos ficam chanfrados ao expandir; ignore, já que o recorte final é retangular de qualquer forma.

Uma pré-visualização de máscara mostrando a caixa do rosto expandida numa forma octogonal maior
A máscara expandida. Os cantos chanfrados não importam; o recorte é um retângulo.

A máscara expandida ainda pode ter a forma errada para o seu quadro, então é recortada nas dimensões que uso em todo o fluxo: 1920 × 1080.

4. Recorte e exporte

O Image Crop by Mask pega a foto original do carregador em lote e a recorta pela máscara. Esse recorte pode ter um tamanho estranho, então um Image Resize final com o método fill/crop o leva a HD exato, cortando um pouco mais se preciso.

Dois recortes horizontais cinematográficos de fotos em preto e branco, enquadrados em torno dos rostos
O resultado: recortes horizontais cinematográficos, centralizados nos rostos.

Eu buscava um quadro estilo cinema, e o resultado foi perfeito: um enquadramento muito bom. O Save Image grava os arquivos na pasta que você definir; uma nota no fluxo explica como os nomes de arquivo são montados.

Uma observação sobre resolução

Como o recorte aproxima o rosto, os resultados podem ser pequenos. Se precisar deles maiores, passe-os por um upscaler; meu guia de upscaling de IA gratuito tem um fluxo para isso. Para mais sobre o que o Florence 2 pode fazer, veja mascarando qualquer coisa com o Florence 2.

Assista à versão em vídeo (7:15)

Tudo o que está acima também está no vídeo, se você preferir acompanhar na tela. O vídeo está em inglês.

Perguntas frequentes

Como processo mais de 100 imagens no ComfyUI?

A contagem do lote para em 100. Para mais, use Run (Instant), que continua enfileirando execuções até você parar. Uma pasta de 500 ou 1.000 fotos leva de 20 a 30 minutos.

Que modelo do Florence 2 devo usar para detectar rostos?

O base é rápido e lida bem com coisas simples como rostos. O large é mais lento, mas consegue contornar formas com mais precisão. Nunca encontrei uso para as versões fine-tuned.

Por que expandir a máscara?

A caixa detectada fica justa em torno do rosto. Expandi-la (usei 200 pixels) dá ao recorte espaço para respirar. Expanda mais para fotos muito grandes.

Anton Tenitsky é artista 3D com mais de 15 anos em computação gráfica, que trabalhou com Nickelodeon, Gameloft, Marvel Rivals e muitos outros clientes. Mais sobre mim

Guias relacionados