Eugeoter / waifuset

Mozilla Public License 2.0
104 stars 8 forks source link

无法使用美学评分器 #7

Open DreamChasers3 opened 1 month ago

DreamChasers3 commented 1 month ago

在执行完所有操作后打开了UI,简单使用了一下打标功能,发现一切正常,但当我切换到工具中美学评分器的时候却出现一下报错: [ws scoring] batch processing: 0%| | 0/29 [00:00<?, ?steps/s][waifu_scorer] loading pretrained model from D:\UI\waifuset\waifuset\models/ws/models--Eugeoter--waifu-scorer-v3\snapshots\c71bb9cf6a4101b0ba4161952519c3759ae3d714\model.pth Traceback (most recent call last): File "E:\Python\Python3.12.3\Lib\site-packages\gradio\queueing.py", line 536, in process_events response = await route_utils.call_process_api( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\gradio\route_utils.py", line 276, in call_process_api output = await app.get_blocks().process_api( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\gradio\blocks.py", line 1897, in process_api result = await self.call_function( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\gradio\blocks.py", line 1483, in call_function prediction = await anyio.to_thread.run_sync( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\anyio_backends_asyncio.py", line 2177, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\anyio_backends_asyncio.py", line 859, in run result = context.run(func, args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\gradio\utils.py", line 816, in wrapper response = f(args, kwargs) ^^^^^^^^^^^^^^^^^^ File "D:\UI\waifuset\waifuset\ui\ui.py", line 1363, in wrapper results.extend(edit(batch, *args, *kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\UI\waifuset\waifuset\utils\log_utils.py", line 10, in inner res = func(args, kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "D:\UI\waifuset\waifuset\ui\ui.py", line 1342, in edit new_batch = func([img_info.copy() for img_info in batch], *args, extra_kwargs, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\UI\waifuset\waifuset\ui\ui.py", line 1839, in ws_scoring waifu_scorer = WaifuScorer(model_path=model_path, device='cuda', verbose=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\UI\waifuset\waifuset\compoents\waifu_scorer\predict.py", line 39, in init self.mlp = load_model(model_path, input_size=768, device=device) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\UI\waifuset\waifuset\compoents\waifu_scorer\predict.py", line 75, in load_model s = torch.load(model_path, map_location=device) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 1025, in load return _load(opened_zipfile, ^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 1446, in _load result = unpickler.load() ^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 1416, in persistent_load typed_storage = load_tensor(dtype, nbytes, key, _maybe_decode_ascii(location)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 1390, in load_tensor wrap_storage=restore_location(storage, location), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 1313, in restore_location return default_restore_location(storage, map_location) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 390, in default_restore_location result = fn(storage, location) ^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 265, in _cuda_deserialize device = validate_cuda_device(location) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python3.12.3\Lib\site-packages\torch\serialization.py", line 249, in validate_cuda_device raise RuntimeError('Attempting to deserialize object on a CUDA ' RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

Eugeoter commented 3 weeks ago

很抱歉回复的太晚了! 报错显示你的CUDA不可用,而美学评分器需要安装CUDA才能使用。

DreamChasers3 commented 1 week ago

谢谢您的回复,没有可用的CUDA应该是因为我并没有正确安装pytorch的缘故,在您回复之前我几乎放弃使用该功能,直到最近在c站上阅读了一位我十分尊敬的作者文章,我才重新开始使用此UI,自此才发现原来您就是那位文章的作者,我由衷的感谢您的无私奉献,同时也按照指示更新到了v2分支并成功下载了美学模型且成功使用,但疑惑的是在使用后却并没有发现描述中多了任何质量词或关于美学的tag以及美学分数,我仔细查看了您的用户手册,发现在工具中写有自动添加美学评分标签,可此功能我在UI中却未曾找到,工具中只有标注器,美学评分器,哈希器这三个选项,并没有添加美学标签这一功能,是我忽略了什么而导致的吗,另外美学分数也是在数据库按钮中才能查看,这对偏大的数据集来说并不太方便,您是否考虑实现根据美学评分设定一个阈值,将分数低于阈值的图片从中剔除的功能呢,期待您的回复

Cight1 commented 1 week ago

203528_323759927082532_00001_ 同样对玩耍CLIP+MLP Aesthetic Score Predictor很感兴趣就找了一下, waifuset的标签排序脚本适合在人工排序前先排序一遍真的帮大忙了

体感waifu-scorer-v3模型用于动漫画廊效果还是非常好的,对手绘图在3分以上和3分以下区分肢体准确度效果很好,而ai生成图的得分普遍偏高,muiltiple_views类构图在ai图里偏低,其他模型比如improved-aesthetic-predictor的sac+logos+ava1-l14-linearMSE虽然可以对比prompt但是不太能感觉出效果、那些模型也用Pinterest的摄影、时尚、大师绘画、ai生成图等等600~2000张图一组测试了几次,效果比较迷,可能mlp的算法适合单独训练一个模型做细分?脚本部分每个层情况不同的模型都需要在前面写一段定义,可能用户自己按需求改更方便

其实看别的项目是想找方便保存数字的方法,不知道编辑pnginfo等等其他方式是不是容易产生bug(不太敢复制ai生成的代码用),索性用自动重命名文件new_filename = f"{score_1:.4f}WF3{original_name}{original_ext}"记录数字了,图片就按文件名自动排序在文件夹里了,方法很简陋但是浏览还挺方便的,也不用sql

Eugeoter commented 1 week ago

谢谢您的回复,没有可用的CUDA应该是因为我并没有正确安装pytorch的缘故,在您回复之前我几乎放弃使用该功能,直到最近在c站上阅读了一位我十分尊敬的作者文章,我才重新开始使用此UI,自此才发现原来您就是那位文章的作者,我由衷的感谢您的无私奉献,同时也按照指示更新到了v2分支并成功下载了美学模型且成功使用,但疑惑的是在使用后却并没有发现描述中多了任何质量词或关于美学的tag以及美学分数,我仔细查看了您的用户手册,发现在工具中写有自动添加美学评分标签,可此功能我在UI中却未曾找到,工具中只有标注器,美学评分器,哈希器这三个选项,并没有添加美学标签这一功能,是我忽略了什么而导致的吗,另外美学分数也是在数据库按钮中才能查看,这对偏大的数据集来说并不太方便,您是否考虑实现根据美学评分设定一个阈值,将分数低于阈值的图片从中剔除的功能呢,期待您的回复

感谢你的喜欢!你是对的,我在v2中移除了根据美学评分添加质量标签的功能,很抱歉我忘记更新用户手册了……不过既然你有需求,那我会在不久以后重新实现它。但我可能不会添加删除图像的功能,因为 waifuset 的设计原则是尽量不改变本地文件,以防止恶性BUG/用户误操作导致的大规模数据集损坏。

Eugeoter commented 1 week ago

203528_323759927082532_00001_ 同样对玩耍CLIP+MLP Aesthetic Score Predictor很感兴趣就找了一下,https://github.com/rom1504/clip-retrieval clip-retrieval应该使用起来比较方便,https://github.com/tsngo/stable-diffusion-webui-aesthetic-image-scorer 也提供了几种保存美学分数和其他内容的方案包括另存为生成参数文本,还没有尝试,不过把美学检测模型换成Eugeoter老师分享的waifu-scorer-v3模型大概可用…?clip-retrieval的形式看起来比较适合处理较大的数据集,而waifuset的标签排序脚本适合在人工排序前先排序一遍真的帮大忙了

支持更多美学评分器是一个非常好的建议。waifu-scorer-v3 是一个只针对动漫二次元图像的美学评分器,且不一定完全有效。我会考虑在将来加入更多的模型。谢谢你。

DreamChasers3 commented 6 days ago

好的,我期待您更新UI

---原始邮件--- 发件人: @.> 发送时间: 2024年9月5日(周四) 中午1:39 收件人: @.>; 抄送: @.**@.>; 主题: Re: [Eugeoter/waifuset] 无法使用美学评分器 (Issue #7)

谢谢您的回复,没有可用的CUDA应该是因为我并没有正确安装pytorch的缘故,在您回复之前我几乎放弃使用该功能,直到最近在c站上阅读了一位我十分尊敬的作者文章,我才重新开始使用此UI,自此才发现原来您就是那位文章的作者,我由衷的感谢您的无私奉献,同时也按照指示更新到了v2分支并成功下载了美学模型且成功使用,但疑惑的是在使用后却并没有发现描述中多了任何质量词或关于美学的tag以及美学分数,我仔细查看了您的用户手册,发现在工具中写有自动添加美学评分标签,可此功能我在UI中却未曾找到,工具中只有标注器,美学评分器,哈希器这三个选项,并没有添加美学标签这一功能,是我忽略了什么而导致的吗,另外美学分数也是在数据库按钮中才能查看,这对偏大的数据集来说并不太方便,您是否考虑实现根据美学评分设定一个阈值,将分数低于阈值的图片从中剔除的功能呢,期待您的回复

感谢你的喜欢!你是对的,我在v2中移除了根据美学评分添加质量标签的功能,很抱歉我忘记更新用户手册了……不过既然你有需求,那我会在不久以后重新实现它。但我可能不会添加删除图像的功能,因为 waifuset 的设计原则是尽量不改变本地文件,以防止恶性BUG/用户误操作导致的大规模数据集损坏。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>