Community图像github.com

fluxpediawork/blob-portrait

将任何照片(自拍、人像、产品图)用数万个柔软颜色斑点重新绘制,这些斑点通过梯度下降从随机噪声中训练而来,并输出画作、照片对比图、局部放大图和噪声到图像的 GIF。当有人要求“重建”、“用代码重绘”或“梯度下降”一张图片,或者想要一个“哪个是照片?”的短视频时,使用此技能。

blob-portrait 是什么?

这是一个使用 2D 高斯斑点绘制照片的 AI 技能。它从随机初始化的 1500 个斑点开始,在每个步骤中渲染这些斑点,计算与目标照片的误差(L1 和 SSIM),然后使用 Adam 优化器微调每个斑点的参数以最小化误差。在高误差区域会生成新的小斑点。该过程不涉及任何图像生成模型,完全是学习得到的结果。技能支持不同的预设(quick、default、full)以适应不同的硬件和时间限制,输出包括最终画作、照片与代码的对比图、眼部等细节的放大图、训练过程动画(从噪声到图片),以及包含所有斑点参数的 npz 文件,可用于重新渲染或动画。诚实限制包括:它只能复制单张照片,无法创造新视角或新面孔;质量取决于训练步数,短时间 CPU 运行效果较模糊;背景色取自照片边缘,因此斑点只需绘制与背景不同的部分。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fluxpediawork/blob-portrait/tree/HEAD

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

斑点人像:照片的梯度下降

用 2D 高斯斑点绘制照片。从 1500 个随机斑点开始,每步渲染它们,测量与照片的误差(L1 + SSIM),然后微调每个斑点以减少误差(Adam)。在高误差区域会生成新的小斑点。不涉及任何图像生成模型:画面是通过学习得到的。

步骤

  1. 获取照片。 使用附件中的文件。注意其主体位置,以便设置 --focus(最需要细致训练的区域,通常是面部)。

  2. 安装。 Python 3.10+。

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

    如果 PyTorch 索引被屏蔽,直接从 PyPI 用 pip install torch 即可。

  3. 选择预设,根据可用硬件和时间:

    预设步数最大斑点数2 核 CPUGPU
    quick30015,000~8 分钟~1 分钟
    default1,60045,000~35 分钟~5 分钟
    full6,000100,000数小时~20-40 分钟

    在 CPU 上运行时,让 default 在后台运行并轮询日志;不要阻塞等待。

  4. 运行。

    python scripts/blobfit.py photo.jpg --out result/ --preset default \
        --aspect 4:5 --focus 0.5,0.4,0.45,0.5
    
    • --aspect 将图片裁剪为 w:h 比例(以中心为基准),设为 none 则保持原始形状。
    • --focus cx,cy,w,h 参数值范围为 0-1,相对于裁剪后的图像。对于居中的自拍照,0.5,0.4,0.45,0.5 覆盖面部区域。
    • --steps / --blobs 可覆盖预设值。
    • 设备自动选择:CUDA,然后是 Apple MPS,最后是 CPU。
  5. 交付前检查结果。 打开 compare.jpg 和 zoom.jpg 并观察。stats.json 中有 PSNR 值:约 28-30 dB 表示略为相似(快速模式),38 dB+ 则在正常尺寸下很难区分。如果面部模糊,增加步数或将 --focus 调整到面部区域后重新运行。

  6. 交付。 发送 compare.jpg、render.png 和 training.gif。说明使用的斑点数、步数、PSNR 值,并强调这是训练得到的,而非生成的。

输出文件

文件说明
render.png完整拟合尺寸下的斑点画作
compare.jpg真实照片与代码版本的对比图
zoom.jpg眼部附近的细节放大图
training.gif从噪声到画面的动画,每个里程碑一帧
blobs.npz每个斑点的参数:位置、缩放、角度、颜色、强度(用于重新渲染或动画)
stats.json步数、斑点数、PSNR、耗时、设备

诚实限制

  • 它只能复制单张照片。无法创造新视角或新面孔。
  • 质量取决于步数:短时间 CPU 运行效果较模糊;要表现细腻的皮肤纹理需要 full 预设。
  • 背景色取自照片边缘,因此斑点只需绘制与背景不同的部分。

相关技能