donahowe / AutoStudio

AutoStudio: Crafting Consistent Subjects in Multi-turn Interactive Image Generation
https://arxiv.org/abs/2406.01388
402 stars 31 forks source link

结果跟样例比差远了,为什么我们跑出来的图片很不理想呢? #22

Open wikeeyang opened 3 months ago

wikeeyang commented 3 months ago

大佬,用你昨天发布的源码,跑了一遍,环境和结果描述如下: ENV:windows 11 x64, Python 3.10, Torch 2.1.0, CUDA 11.8, VS 2019 SD Model: 依你推荐的 dreamlike-anime-1.0 demo.json 脚本配置文件没动过,5段对话没能全部跑完,到 dialogue 5 turn 4 报错了,报错信息见下面。

部分结果图片: 幻灯片1

幻灯片2

幻灯片3

幻灯片4

大佬给分析分析原因,是环境问题?CUDA版本?CUDA精度?还是模型?参数?还是输出稳定性问题?

wikeeyang commented 3 months ago

补充一下, sd_version 是默认的 1.5plus, XL 模型还没试。

wikeeyang commented 3 months ago

dialogue 5 turn 4 Saved boxes visualizations to output/dialogue 5/turn 4/boxes.png ind: None Generate Latent guidance 100%|████████████████████████████████████████████████████████████████████████████████| 15/15 [00:31<00:00, 2.09s/it] 100%|████████████████████████████████████████████████████████████████████████████████| 15/15 [00:31<00:00, 2.09s/it] ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮ │ D:\AITest\AutoStudio\run_me.py:231 in │ │ │ │ 228 │ │ │ ind_offset = repeat_ind * LARGE_CONSTANT2 + args.seed_offset │ │ 229 │ │ │ vis_location = [dialogue, turn] │ │ 230 │ │ │ │ │ ❱ 231 │ │ │ output = autostudio.generate( │ │ 232 │ │ │ │ │ │ │ │ │ │ GROUNDING_DINO_MODEL, │ │ 233 │ │ │ │ │ │ │ │ │ │ EFFICIENT_SAM_MODEL, │ │ 234 │ │ │ │ │ │ │ │ │ │ character_database, │ │ │ │ D:\AITest\AutoStudio\model\autostudio.py:366 in generate │ │ │ │ 363 │ │ │ │ │ │ continue │ │ 364 │ │ │ │ │ 365 │ │ │ # prepare latent_guidance │ │ ❱ 366 │ │ │ latent_guidance_mask, latent_guidance_image = prepare_mid_image(guide_masks, │ │ 367 │ │ │ latent_guidance_mask = latent_guidance_mask.resize((int(width/8), int(height │ │ 368 │ │ │ latent_guidance_mask = np.array(latent_guidance_mask) │ │ 369 │ │ │ latent_guidance_mask = torch.from_numpy(latent_guidance_mask).to(self.device │ │ │ │ D:\AITest\AutoStudio\model\utils.py:21 in prepare_mid_image │ │ │ │ 18 print(f"Using box scale: {box_scale}") │ │ 19 │ │ 20 def prepare_mid_image(mask_tensor_list_512, single_obj_img_list, bboxes, height, width, │ │ ❱ 21 │ mask_tensor_512 = mask_tensor_list_512[0] │ │ 22 │ #m,n = mask_tensor_512.size() │ │ 23 │ m,n = width, height │ │ 24 │ new_mask_tensor = np.zeros((n, m)).astype(np.uint8) │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ IndexError: list index out of range Press any key to continue . . .

wikeeyang commented 3 months ago

还有个疑问就是:dialogue 1 turn 1,dialogue 1 turn 2,为什么没图片输出?也没报错。。。

donahowe commented 3 months ago
4697c20b95aabdc1969cc5e0467481b a3513802c0c9faa381eb4e8216ebc12 6a74928e53620404e9c768774104994 948a7b81c68faa93bcc8d29876a5815 46a789dd52fa67c34ac73674cdc563d

<img width="928" alt="ef41a4ec7b7333427a5165d02531b83" src="https://github.com/donahowe/AutoStudio/assets/121561565/81910da2-0c0a-4d62-9b10-8a230cc17760"

7cd595f381f7643873fdb44c52753b7 2814d9b3709951c7f4b729ea5595d87
donahowe commented 3 months ago

你好,这是我当时实验跑出来的结果,模型的稳定性还不错的。我猜测可能导致很坏的质量的原因有:1. 第一张参考出了问题。AutoStudio会记录角色第一次出现的样子并作为以后的参考,所以如果第一张生成的不好角色就会一直很丑。我的建议是您可以手动为每个角色(id)提供参考图,提前读入到character_database。2.参数的问题,由于CUDA版本不同,一些超参数有可能需要调整,最有可能的是:latent guidance的权重和guidance步数可能需要小一些

wikeeyang commented 3 months ago

脚本中第166行:character_database = {'0':Image.new('RGB', (100, 100), (255, 255, 255))},您意思是可以改成: character_database = {'1':Image1.jpg ('RGB', (100, 100), (255, 255, 255)), '2':Image2.png ('RGB', (200, 200), (255, 255, 255))} 这样吗?图片格式没啥要求?可否来个 Sample?RGB 后面的 (100, 100), (255, 255, 255) 是代表 图像大小 和 RGB 值? 是需要预置到 output 目录下?还是每轮 dialogue 目录下?

donahowe commented 3 months ago

不是的,id 0使用到是占位图,而参考图可以直接用IMAGE库读取,example:

from PIL import Image your_img1 = Image.open('your_img1.png') your_img2 = Image.open('your_img2.png') character_database = {'0':Image.new('RGB', (100, 100), (255, 255, 255)), '1': your_img1, '2': your_img2}

wikeeyang commented 3 months ago

好的,多谢!我再试试。 你这两天更新后版本的 requirements.txt 跟原先的变化很大,这是 Linux-64 的 cinda 版依赖配置,很多包对 Windows 平台参考不大,不过我目前的 Windows x64 能跑起来了,应该不缺依赖了吧?有啥核心的、特殊的依赖包,会对生成图片的质量有影响吗?

donahowe commented 3 months ago
21622e9d79da169e10c889ae6d28ed3

好的,那个歌手的可以用这个参考图。能跑起来了就应该不缺了hhh

wikeeyang commented 3 months ago

好的,多谢多谢!打扰您宝贵时间了! 大佬有空时,帮我看看上面 dialogue 5 turn 4 报错的原因。说是 Index 值超界了,这个不懂啊,需要加什么限制条件吗?

donahowe commented 3 months ago
13ffc5d6cfef9543ac0b42c8740e964

ru'guo'nin如果您使用SDXL+参考图,可以会得到一些有趣的结果。(单轮使用即可)。对于index超出,我好像没碰到类似的错误

wikeeyang commented 3 months ago

嗯,不错!看起来挺有趣啊!!!👍👍👍,我迟点试试 XL 模型。对了,是不是其它的基于 SD 1.5、SDXL 1.0 基础模型训练的、别的类似的,或者较好的模型,都可以用呢?

donahowe commented 3 months ago

没错的,可以在civitai下结点,漫画风,真实风,迪士尼风那种,都不错的

wikeeyang commented 3 months ago

那我看脚本,其实 VAE 你指定了,UNET 是必须用基础模型的?其它的 pretrained_models 只要下载单个 ckpt 或 safetensors 包就可以了?那如果这样的话,是不是我上面的脚本中,UNET 我用了 dreamlike-anime-1.0/unet 反而造成效果不好啊?

donahowe commented 3 months ago

不是的,你需要用脚本把safetensors转成正常的目录结构才能使用,其实最后换Unet的路径就行了VAE不用换

wikeeyang commented 3 months ago

OK!明白了,那我原来的理解是对的,unet 需要用与预训练模型 *.safetensors 一致的,vae 用你指定的那个。 转换 safetensors 就是用 diffusers 读进去,然后 pipeline.save_pretrained("local_path", safe_serialization=True) 写出来就行吧?

donahowe commented 3 months ago

是的是的

FLYleoYBQ commented 3 months ago

来个comfyui版本吧,好羡慕跑起来的效果

lizzielss commented 3 months ago

大佬有没有兴趣建一个群哇,一起学习交流一下 @donahowe @wikeeyang

donahowe commented 3 months ago

大佬有没有兴趣建一个群哇,一起学习交流一下 @donahowe @wikeeyang

好呀,欢迎交流

donahowe commented 3 months ago

来个comfyui版本吧,好羡慕跑起来的效果

好,有空做一个哈哈哈

lizzielss commented 3 months ago

大佬有没有兴趣建一个群哇,一起学习交流一下 @donahowe @wikeeyang

好呀,欢迎交流

那我贴个微信群哈~

image
Gao-zy26 commented 2 months ago

大佬有没有兴趣建一个群哇,一起学习交流一下 @donahowe @wikeeyang

好呀,欢迎交流

那我贴个微信群哈~

image

微信群过期了,再求一个群链接~

donahowe commented 2 months ago

大佬有没有兴趣建一个群哇,一起学习交流一下 @donahowe @wikeeyang

好呀,欢迎交流

那我贴个微信群哈~

image

微信群过期了,再求一个群链接~

好的我更新下readme放主页

LORDPQK commented 2 months ago

大佬,微信群过期了呢,麻烦更新一下群呢

hsdjkfnsfc commented 2 months ago

求更新微信群

DavidSH92 commented 1 month ago

看其他issuse这个项目本地跑起来20G vram还不够么?是模型不同占用显存不同么?有没有大佬测试过最低显存要求,超过16G只能望而却步了,如果作者能够降低显存要求,很多人都能使用,相信项目能很快火起来,毕竟个人AI开发者很多,原来试过story diffusion,但是效果不是太好,希望这个项目能比它好