CommunityImagengithub.com

blobportrait: gradiente descendente para una foto

Recrea cualquier foto (selfie, retrato, foto de producto) como decenas de miles de manchas de color suaves entrenadas desde ruido aleatorio mediante gradiente descendente, y genera la pintura, una comparación foto vs código, una prueba de zoom y un GIF de ruido a imagen.

¿Qué es blobportrait: gradiente descendente para una foto?

Esta habilidad permite recrear imágenes mediante un proceso de optimización único: convierte una fotografía en una pintura compuesta por miles de manchas de color (blobs gaussianos 2D). Parte de 1.500 blobs aleatorios y, paso a paso, los renderiza, mide el error respecto a la foto original y ajusta cada blob para reducirlo, sin usar ningún generador de imágenes; la imagen se aprende directamente. Soporta múltiples plataformas y entornos de ejecución, funcionando tanto en CPU como en GPU (CUDA o Apple MPS) según disponibilidad. Los desarrolladores pueden controlar la relación de aspecto, el área de enfoque y la cantidad de pasos y blobs mediante parámetros CLI, obteniendo como resultado una pintura, una comparación lado a lado, una prueba de zoom y un GIF que muestra la evolución desde ruido hasta la imagen final. Es especialmente útil para demostraciones técnicas, contenido educativo o generación de contenido visual 'detrás de escenas', como reels que preguntan '¿cuál es la foto?'.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fluxpediawork/blob-portrait/tree/HEAD

Installed? Explore more Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Blob portrait: gradiente descendente para una foto

Pinta una foto con manchas gaussianas 2D. Comienza con 1.500 manchas aleatorias y, en cada paso, las renderiza, mide el error contra la foto (L1 + SSIM) y mueve cada mancha un poco para reducirlo (Adam). Nuevas manchas pequeñas aparecen donde el error es más alto. No interviene ningún generador de imágenes: la imagen se aprende.

Pasos

  1. Obtén la foto. Usa el archivo adjunto. Anota la posición del sujeto para poder ajustar --focus (el área que recibe el entrenamiento más cercano, normalmente el rostro).

  2. Instala. Python 3.10+.

    pip install -r requirements.txt   # torch, numpy, pillow
    

    Si el índice de PyTorch está bloqueado, funciona pip install torch desde PyPI.

  3. Elige un preset según el hardware y el tiempo disponible:

    presetpasosmáx. manchasCPU de 2 núcleosGPU
    quick30015.000~8 min~1 min
    default1.60045.000~35 min~5 min
    full6.000100.000horas~20-40 min

    En CPU, ejecuta default en segundo plano y consulta el registro; no lo bloquees.

  4. Ejecuta.

    python scripts/blobfit.py photo.jpg --out result/ --preset default \
        --aspect 4:5 --focus 0.5,0.4,0.45,0.5
    
    • --aspect recorta a w:h alrededor del centro (none mantiene la forma original de la foto).
    • --focus cx,cy,w,h está en proporciones 0-1 de la imagen recortada. Para un selfie centrado, 0.5,0.4,0.45,0.5 cubre el rostro.
    • --steps / --blobs anulan el preset.
    • El dispositivo se elige automáticamente: CUDA, luego Apple MPS, luego CPU.
  5. Revisa el resultado antes de entregarlo. Abre compare.jpg y zoom.jpg y míralos. stats.json tiene el PSNR: alrededor de 28-30 dB es un parecido suave (quick), 38 dB+ es difícil de distinguir a tamaño normal. Si el rostro es difuso, vuelve a ejecutar con más pasos o mueve --focus hacia el rostro.

  6. Entrega. Envía compare.jpg, render.png y training.gif. Indica cuántas manchas y pasos, el PSNR y que fue entrenado, no generado.

Salidas

archivoqué es
render.pngla pintura de manchas en su tamaño ajustado completo
compare.jpgfoto real junto a la versión con código
zoom.jpgprueba de zoom alrededor de los ojos
training.gifde ruido a imagen, un fotograma por hito
blobs.npzcada mancha: posición, escala, ángulo, color, intensidad (para volver a renderizar o animar)
stats.jsonpasos, número de manchas, PSNR, segundos, dispositivo

Límites honestos

  • Copia una sola foto. No puede inventar una nueva vista o un nuevo rostro.
  • La calidad depende de los pasos: las ejecuciones cortas en CPU producen resultados suaves; el grano fino de la piel necesita el preset full.
  • El color de fondo se toma de los bordes de la foto, por lo que las manchas solo necesitan pintar lo que difiere de él.

Skills relacionados