续上篇
上一篇说到,我用Stable-Diffusion.cpp , 在红米K70 Pro 上调用PhotoMaker 来产生AI 图片, 之前的执行命令为:
sd -m ./models/sdxlUnstableDiffusers_v11.safetensors \ --vae ../models/vae/sdxl_vae.safetensors \ --stacked-id-embd-dir ./models/photomaker-v1.safetensors \ --input-id-images-dir ./assets/photomaker_examples/scarletthead_woman/ \ -p "a girl img, retro futurism, retro game art style but extremely beautiful, intricate details, masterpiece, best quality, space-themed, cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed" \ -n "realistic, photo-realistic, worst quality, greyscale, bad anatomy, bad hands, error, text" \ --cfg-scale 5.0 \ --sampling-method euler -H 768 -W 768 --style-ratio 10 --vae-on-cpu -o ./output/output_photomaker.png结果,昨天晚上在安卓手机上执行PhotoMaker了很久, 没错, 就是红米K70 Pro, 这个号称用了骁龙8 Gen 3 芯片的最新手机, 也执行了很久很久, 大概8个小时, 最后一看, 我去, 白片~崩溃了!!!
白色, 没错,这就是产出的图片
后来又在我的Mac 笔记本上执行了一次, 这次是黑的~!! 苍天啊~~
经过仔细排查, 第一次只用最基本的SDXL 模型,提示需要添加VAE模型, 日志输出:
[INFO ] stable-diffusion.cpp:180 - loading vae from './models/vae/sdxl_vae.safetensors'
[WARN ] model.cpp:739 - unknown format ./models/vae/sdxl_vae.safetensors
[WARN ] stable-diffusion.cpp:182 - loading vae from './models/vae/sdxl_vae.safetensors' failed
经过仔细研究, 发现我用的VAE 插件,是madebyollin/sdxl-vae-fp16-fix, 在hugface 里面,居然有俩文件:
这怎么区分的清楚哪个对呢? 都下载下来试试吧, 结果,就是不带下划线的文件是对的,所以应该使用的VAE文件名是:sdxl.vae.safetensors
所以,正确的命令是:
sd \--threads 8 \--model "./models/sdxlUnstableDiffusers_v11_2.safetensors" \--vae ./models/sdxl.vae.safetensors \--stacked-id-embd-dir ./models/photomaker-v1.safetensors \--input-id-images-dir ./assets/photomaker_examples/scarletthead_woman/ \--output "./output/photomaker_s_1.png" \--prompt "a girl img, retro futurism, retro game art style but extremely beautiful, intricate details, masterpiece, best quality, space-themed, cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed" \--negative-prompt "realistic, photo-realistic, worst quality, greyscale, bad anatomy, bad hands, error, text" \--cfg-scale 7.0 \--sampling-method euler_a \--steps 20 \--seed -1 \--clip-skip 2 \-W 768 \-H 512 \--type f16 \-v先不用PhotoMaker, 做了两个作为对照组:
后面又产生了黑寡妇姐的图片:
能看得出原片的样子,这是寡妇姐本人的例子图片:
这样对比会更直接:
但是感觉加上PhotoMaker 之后, 图片质量不如对照组的精美, 尤其是在背景方面,感觉精细度不太够。
再来看看我们的大蜜蜜的照片:
使用的命令(注意提示词里面带有Asian):
sd \--threads 8 \--model "./models/sdxlUnstableDiffusers_v11_2.safetensors" \--vae ./models/sdxl.vae.safetensors \--stacked-id-embd-dir ./models/photomaker-v1.safetensors \--input-id-images-dir ./assets/photomaker_examples/yangmi_woman/ \--output "./output/photomaker_y_1.png" \--prompt "an Asian girl img, retro futurism, retro game art style but extremely beautiful, intricate details, masterpiece, best quality, space-themed, cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed" \--negative-prompt "realistic, photo-realistic, worst quality, greyscale, bad anatomy, bad hands, error, text" \--cfg-scale 5.0 --style-ratio 10 \--sampling-method euler_a \--steps 20 \--seed -1 \--clip-skip 2 \-W 768 \-H 512 \--type f16 \-v生成的图片:
图片生成了三次,最后一次图片有瑕疵。
需要注意的是, 上面这些图片都是在我Mac 电脑上执行得出的, 手机还是不太行。 所谓的AI 手机啥的, 计算能力跟真正的电脑比,还是有差距的。
外婆的照片最后, 来张真实一点的, 要了几张外婆的照片(老人家九十多了,身体健康,心情愉快, 诸位请献上祝福,口下留德~~), 也用这个PhotoMaker 制作了几张试试。
原图是手机拍摄,细节太多就不放出了,直接看对比图吧:
这一张里面, 感觉姿态是对的, 细节部分有点夸张了哈哈。
再来一张:
整体感觉, PhotoMaker 在产生图片的时候, 还是抓住了面部特征的, 就是在年龄方面做的更加年轻一些, 整体的面部轮廓、肌肉线条等还是符合的。
多说一句,这真的是我的外婆, 老人家今年九十多了, 身体健康, 我希望老人家能长命百岁! 但是天不假年, 后续有机会,还是希望能给老人家做一个数字人, 希望在电子世界里能永远见到老人家~~
怎么样? 你有没有兴趣也制作几个这样的图片呢?通过本地运行PhotoMaker, 这些图片处理和最后产生的图片,都完全在本地离线的情况下处理的,完全不担心隐私泄漏的风险的。