A A1111-WebUI
extension for deduplicates images or cluster images.
一个用于图像查重和图片聚类的 A1111-WebUI
扩展
- 基于imagededup库,进行图片去重的WebUI
- 基于sklearn库,以tags文本为特征,或者以WD14 tagger模型提取的特征向量进行图片聚类WebUI
- 高效的 WD14 图片标记脚本及WebUI
另一张复杂情况的8聚类效果请看这里images_cluster_show_1
- 我不训练模型,WD14模型来自于这个项目SmilingWolf/WD14
- 聚类方法和特征提取来着于sklearn库
- 查重方法来自于imagededup库
- tag_images_by_wd14_tagger来自kohya/sd-scripts
如果你不会使用git命令,可以运行update.ps1
完成更新,并再次运行install.ps1
来更新依赖环境
05 Aug.2023 2023/08/05
- 为解决做为
SD-WebUI
扩展运行时潜在的包名冲突问题,重命名./ui
->./img_dedup_clust
01 Aug.2023 2023/08/01
- [破坏性] 大更新,优化并调整几乎全部WebUI部分代码结构、组织
所有ui界面和几乎所有后端函数被移至./ui
文件夹下- 在V 2.0.1 被更名为
./ui
->./img_dedup_clust
- 在V 2.0.1 被更名为
- 为聚类增加更多参数
- 支持自定义的
tag文件
、npz矩阵文件
扩展名选择 - 增加SVD降维功能
- 聚类分析中增加样本分布可视化图,帮助确认n值
- wd14聚类支持更多参数
- 可选择
压缩层
或全向量
层做为特征向量 - 在
全向量
模式下,可以自定义选择部分类别特征- 您可以在https://huggingface.co/WSH032/wd-v1-4-tagger-feature-extractor/blob/main/wd14_tags.toml查看各个标签种类所包含的tags
rating
依据 nsfw 进行聚类general
依据图片标签tag进行聚类characters
依据booru上已知的角色tag进行聚类
- 可选择
- 支持自定义的
- 为查重增加更多参数
- 增加
js
的支持- 可通过键盘快捷键
Enter
和Backspace
来进行选择和取消
- 可通过键盘快捷键
- 支持
CNN模型
查重- 如果有GPU的支持,CNN模型查重将会比原来的
Hash查重
更快
- 如果有GPU的支持,CNN模型查重将会比原来的
- 增加查重阈值设置
- 查重结果新增
移动
,重命名
选项- 现在查重结果的操作将采用和聚类一样的操作方式
- 增加附带文件处理功能,可以一起
移动
,重命名
,删除
附带文件
- 增加
- 重构
WD14-tagger
的tag_images_by_wd14_tagger
为类- 将直接下载huggingface上编译好的onnx模型,不再进行编译
- 删除
tensorflow
,onnx
,tf2onnx
等和编译模型有关的部分 - 增加离线模式选项
- 增加
wd-v1-4-convnextv2-tagger-v2
模型- 除此,还有先前的
wd-v1-4-moat-tagger-v2
模型可以选择
- 除此,还有先前的
- 暂时弃用并删除命令行WD14-tagger脚本
run_tagger.ps1
- 可能会在未来回归
- 不再支持只安装部分模块,默认安装全部依赖
- 优化UI显示
- A1111-WebUI中现在
聚类-WD14
和查重
被分为两个选项卡聚类-WD14
对应Cluster-Tagger
查重
对应Deduplicate
- 删除
./docs
中所有展示图片,更换为github/assets
链接以减小仓库体积- 使用
git clone --depth=1
时,将不再下载多余图片,以方便快速克隆
- 使用
- 调整部分logging日志等级
- 在使用WD14-Tagger时,对于重名但扩展名不同的图片,其的标签文本将会被相互覆盖,此时会发出警告
- 为所有后端函数添加异常处理装饰器,以避免未知错误造成 A1111-WebUI 中永久无返回结果
- 当缓存图片失败时,将自动退回到原图模式
- 修正特征重要性分析算法中的错误
- 现在,在某个聚类结果中,只有某个特征tag占比超过或低于设置的阈值时,才会被判断为
prompt
和negetive
- 现在,在某个聚类结果中,只有某个特征tag占比超过或低于设置的阈值时,才会被判断为
以前的更新内容请查看CHANGELOG.md
(一)做为AUTOMATIC1111/stable-diffusion-webui的扩展使用
请尽量在gradio>=3.31.0
的版本下使用,此扩展在 2023年第22周 SD-WebUI v1.3.1
下经过测试
https://github.com/WSH032/kohya-config-webui.git
将这个仓库连接复制到SD-WebUi的扩展 extensions
->从网址安装 Install from URL
界面下载完成后,重启SD-WebUI即可,会自动安装所需依赖
- 中国区用户可尝试用
https://ghproxy.com/https://github.com/WSH032/kohya-config-webui.git
代理加速下载 - 在SD-WebUI中使用本扩展的
WD14tagger
功能时,若出现模型下载失败情况,可以按照本扩展WebUI内的指示从https://huggingface.co/WSH032/wd-v1-4-tagger-feature-extractor
手动下载模型并放入WebUI内指定的文件夹中 - tensorrt自动增量脚本utils/run_install_tensorrt_lib.ps1在此仓库做为扩展使用时不被支持,但你仍可以自行手动安装tensorrt环境来使用加速功能
做为SD-WebUI扩展使用时,会自动安装和使用SD-WebUI的依赖环境,本项目的三个模块都会被安装,不需要任何操作
首次安装时,中国区用户可能会因网络原因安装较久,请耐心等待
[2323/07/04] 在独立使用时,强烈建议使用此整合项目WSH032/sd-webui-fast-dataset-maker,以获得更好的体验
在python3.9下完成编写,可能之前版本也可以使用,不保证
克隆本仓库
git clone https://github.com/WSH032/image-deduplicate-cluster-webui.git # --depth=1
每个模块所需的依赖已经写在requirements.txt
一键运行install.ps1
即可
requirements.txt
中并没指定 Torch
的版本,请根据你的需求自行决定并修改
推荐安装带有cuda依赖的torch版本
torch==2.0.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
涉及到深度学习模型的部分,可以进行CPU或者GPU的推理,其中GPU的推理速度快,但是要求 CUDA
环境
运行install.ps1
时会提问你是否需要安装 Torch==2.0.0 + cuda118
,其能够在虚拟环境中配置 CUDA
环境
如果你配置过系统级的 CUDA
环境,或者你不需要使用GPU进行推理,可以选择否
请按照本项目 Tagger
WebUI 中的 模型下载说明
选项卡指示进行操作
与独立使用方法相同
图片查重不依赖任何tag文本或者WD14模型
一键运行run_deduplicate_images.ps1
,或在 A1111-WebUI
中以扩展形式使用,其将会生成一个WebUI,进行操作即可
一键运行run_cluster_images.ps1
,或在 A1111-WebUI
中以扩展形式使用,其将会生成一个WebUI,进行操作即可
图片聚类依赖与图片同名的 txt文本
或者 npz文件
进行聚类,这取决于你在WebUI中选择的特征提取方式
其中txt内容为与图片对应的booru风格的tag标签,例如
1girl, solo, yellow eyes
其中 npz文件
储存着WD14模型提取的特征向量矩阵,其的生成必须使用本项目自带的 tag_images_by_wd14_tagger.py
,或者在 WD14-Tagger
WebUI中生成
本项目自带的WD14 tagger模型来自于SmilingWolf/WD14,我对其结构进行了调整,增加了后四层的输出,并采取倒数第三层做为特征向量
你可以使用tag_images_by_wd14_tagger.py
进行图片打标,获取txt文本,这与toriato/stable-diffusion-webui-wd14-tagger的打标结果并无太大差异
同时其会输出同名的npz文件,其中包含了WD14模型的倒数前四层的输出,你可以在聚类模块中使用
run_tagger(弃用)
2023/06/6,新增WD14的WebUI界面
- 在Colab上部署
- 完成本地部署封装
- 完成A111-SD-WebUI部署
- 增加WD14提取特征和生成tags文本
- 使用WD14生成特征向量到npz文件,避免多次聚类时重复运行耗时
- 增加释放模型功能
- 增加使用倒数第三层模型
- 聚类
- 为图片聚类增加SVD降维
[ ] 增加tags文本字符串预处理(如将空格变为逗号)- 已经取消,因为Gelbooru-API-Downloader已经自带了这个功能
- 为聚类文件夹增加标签
- 修正特征重要性分析的标签错误(应用占比50判断)
- 增加手动选择是否应用某个聚类的功能
- 增加更多分析方法
- 现在有轮廓系数和Davids系数
- 更多聚类方式
- 现在有kmeans,谱聚类、层次聚类,OPTICS聚类
- 为不同聚类方式增加参数选择功能
[ ] 将聚类方法选择独立出来- 已经取消,因为使用npz文件后,读取特征向量已经很快了
- 查重
- 为查重添加选择全部选项
- 为查重添加更多查重方式和查重阈值
- 重写查重启发式选择算法
- 为查重添加移动图片功能
- 为查重删除添加删除tag文本功能
考虑使用onnx加载模型,两个方案
- 先把keras模型下载,调整输出后再本地导出onnx格式
[ ] 直接下载onnx模型,用onnx库来调输出层(似乎层不一样)