没想到PhotoMaker是腾讯发布的!安卓手机上也能运行,好玩~

查理谈科技 2024-06-14 06:24:47

没想到PhotoMaker是腾讯发布的!安卓手机上运行PhotoMaker, 好玩~!

先来解释下。

PhotoMaker 什么呢? 一句话理解,就是从指定的头像中抽取特征,然后StableDiffusion和PhotoMaker再根据这些特征来产生其他场景的图片, 类似于换脸,但是图片是新生成的。 没想到的是, 这个神奇的东西,居然是腾讯开源的!

我们经常在一些App 见到AI功能,说能绘制你年轻时候的照片,以及各个年龄段、老年的照片,其实使用这个PhotoMaker就可以, 快来看看吧, 看完你也会!

一、缘起

最近在研究安卓手机上运行Stable Diffusion, 目前主要是在运行Stable-Diffusion.cpp, 这是一个使用C++封装Stable Diffusion的项目, 类似于llama.cpp的做法, 只使用CPU 就可以产生图片。

我在旧的安卓手机红米K30 上, 大约用时30多分钟。在新买的K70 Pro, 使用骁龙8 Gen 3 处理器在跑这个Stable-Diffusion.cpp, 时间在20分钟。

对于Stable Diffusion的小白玩家来说,这是挺有意思的项目, 毕竟不用花钱买显卡, 甚至连电脑也省了, 只要有一部安卓手机就好, 实实在在是省钱啊。

————毕竟现在的经济形势不容乐观, 大家都很艰难, 即使斥巨资去买昂贵的显卡, 去配置好的电脑, 最后学会Stable Diffusion , 真正能变现, 能从Stable-Diffusion的使用上赚到钱的, 实属寥寥, 要不然就不会有那么多的“教你使用Stable-Diffusion”的广告贴、微信群。

“真正挣钱的项目, 从来不会有人大声说的”!

二、 PhotoMaker 简介

说到Stable Diffusion.cpp, 今天看到支持PhotoMaker, 就研究了下这个PhotoMaker, 发现这居然还是国产的, 是腾讯开源的项目, 看来我国在AI 技术方面的研究,并没有落后, 只是受限于显卡罢了。

这个PhotoMaker是干吗的呢?从字面意思理解, 这是一个图片生成器(Photo maker), 这不是废话~! 这个项目的真正特点是, 用我的理解是, 可以指定人的一些头像, 然后这个大模型就可以根据提示词产生各种场景的图片, 奇妙的是, 人的头像始终会是依据你指定的头像特征来产生的,也就是说, 千变万化,不离其脸。

看看更加书面一点的介绍:“使用的核心技术是“堆叠ID嵌入”。它可以将多个身份证明(ID)图像的信息合并成一个统一的数据结构。这种方法不仅能捕捉到单个ID的细微特征,还能整合多个不同ID的特征,创造出新的、个性化的图像。”这里就是说了一些额外的名词, 什么身份证明(ID) 之类的, 其实我理解就是提取脸部特征。

看看例子, 第一个图,就是目前的AI大神 LeCun的, 可以看到有类似于换头术, LeCun大神的化身在不同场景中。

而且LeCun也给这个项目点赞, 回应说是喜欢文艺复兴风格的。

下面是杨幂的, 这个没想到啊没想到, 杨幂的脸小, 产生的新图片更和谐一些。图三和图四。

这个项目的应用也很好玩, 我们经常在一些App 见到AI功能,说能绘制你年轻时候的照片,以及各个年龄段、老年的照片,这是AI 更改年龄或性别。其实使用这个PhotoMaker就可以做到了,就是使用这个PhotoMaker的模型后, 指定你的脸部图片, 再在提示词中加上不同的年龄段要求, 最后就产生一张或者多张图片就行了。

三、运行PhotoMaker

安装和使用Stable-Diffusion.cpp, 之前的文章也有介绍, 这里不再详细叙述了, 如果想运行但是缺少相关安装文件,私信我就好。

我在安卓手机上也尝试了一下, 命令如下:

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

这里用到了3个模型文件,第一个是SDXL 模型, 这个大家基本都有所了解吧, 这是Stable Diffusion的全能型大模型,号称对标Mid Journey, Stability AI 官方出品,需要注意的是,这里只能用SDXL模型,各种版本都可以。

另外需要一个vae, sdxl_vae.safetensors,简单理解VAE就是有两种功能,一是滤镜, 让图片得到滤镜的增强,第二是微调,可以对画面做小幅度调整。

另外一个参数是--stacked-id-embd-dir,指定的PhotoMaker 模型文件,从这里https://huggingface.co/bssrdf/PhotoMaker下载,注意只能使用safetensor 格式, 目前Stable-Diffusion.cpp 不支持bin格式。

input-id-images-dir 参数指定的是身份特征(ID)的图片, 目前要求这些图片大小一致。

这里指定的图片是黑寡妇形象,演员 斯嘉丽·约翰逊:

在提示词中, 目前的需要注意的是, 确保有一个类词(class word),后面跟着触发词“img”(目前是硬编码的)。类词(class word)可以是“man, woman, girl, boy”之一。如果输入的 ID 图像包含亚洲人脸,则在类词前添加“Asian”。

比如我们这里用到的提示词是“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”, 可以看到第一个就是类词 + img, " a girl img", 如果想用亚洲脸,就用 " 1 Asian girl", 类推。

整体的提示词的意思是:“一个女孩 img,复古未来主义,复古游戏艺术风格,但极其美丽,细节复杂,杰作,最佳品质,太空主题,宇宙,天体,星星,星系,星云,行星,科幻小说,高度详细”

执行情况:

我在我的红米手机K70 Pro 上启动了上述命令, 没想到相当耗费时间,整整运行了7个小时还没结束:

具体执行效果,且等我的结果吧。

五、相关资料

项目地址:https://github.com/TencentARC/PhotoMaker

模型下载地址:

https://huggingface.co/spaces/TencentARC/PhotoMakerhttps://huggingface.co/spaces/TencentARC/PhotoMaker-Style



0 阅读:0

查理谈科技

简介:感谢大家的关注