Logo

imgutils: 一个便捷的动漫风格图像处理库

imgutils

imgutils简介

imgutils是一个便捷易用的动漫风格图像数据处理库,集成了多种先进的动漫风格图像处理模型。该库由deepghs团队开发,旨在为动漫图像处理提供一站式解决方案。

imgutils提供了丰富的功能,包括但不限于:

  • 差分(立绘)检测与聚类
  • 对比性人物图像预训练
  • 目标检测(人脸、头部、人物)
  • 边缘检测/线稿生成
  • 单色图像检测
  • 图像分级
  • 截断图像检查
  • 图像标签生成
  • 人物提取

这些功能涵盖了动漫图像处理的多个方面,可以满足研究者、开发者和爱好者的各种需求。

安装

imgutils的安装非常简单,可以通过pip直接从PyPI官方源安装:

pip install dghs-imgutils

如果你的运行环境中包含可用的GPU,可以使用以下命令安装以获得更高的性能:

pip install dghs-imgutils[gpu]

更多关于安装的信息,可以参考官方文档的安装说明

主要功能

差分(立绘)检测与聚类

在处理动漫图像数据集时,我们常常需要过滤掉差分(立绘)。imgutils提供了lpips_clustering函数来解决这个问题:

from imgutils.metrics import lpips_clustering

images = ['lpips/1.jpg', 'lpips/2.jpg', 'lpips/3.jpg', 'lpips/4.jpg', 'lpips/5.jpg', 
          'lpips/6.jpg', 'lpips/7.jpg', 'lpips/8.jpg', 'lpips/9.jpg']
print(lpips_clustering(images))  # -1 表示噪声,与sklearn中的用法相同
# [0, 0, 0, 1, 1, -1, -1, -1, -1]

这个功能可以有效地将相似的差分图像聚类在一起。

差分聚类示例

对比性人物图像预训练

imgutils提供了从动漫人物图像中提取特征、计算两个人物之间视觉差异以及判断两张图片是否描绘同一角色的功能。这些功能可以通过ccip_differenceccip_clustering函数实现:

from imgutils.metrics import ccip_difference, ccip_clustering

# 同一角色
print(ccip_difference('ccip/1.jpg', 'ccip/2.jpg'))  # 0.16583099961280823

# 不同角色
print(ccip_difference('ccip/1.jpg', 'ccip/6.jpg'))  # 0.42947039008140564
print(ccip_difference('ccip/1.jpg', 'ccip/7.jpg'))  # 0.4037521779537201

images = ['ccip/1.jpg', 'ccip/2.jpg', 'ccip/3.jpg', 'ccip/4.jpg', 'ccip/5.jpg', 'ccip/6.jpg', 
          'ccip/7.jpg', 'ccip/8.jpg', 'ccip/9.jpg', 'ccip/10.jpg', 'ccip/11.jpg', 'ccip/12.jpg']
print(ccip_clustering(images, min_samples=2))  
# [0, 0, 0, 3, 3, 3, 1, 1, 1, 1, 2, 2]

这个功能可以帮助我们快速识别和聚类相同角色的图像。

CCIP示例

目标检测

imgutils目前支持动漫头部和人物的目标检测。以下是一些示例:

  • 人脸检测

人脸检测示例

  • 头部检测

头部检测示例

  • 人物检测

人物检测示例

根据实际测试,头部检测目前表现非常稳定,可以用于自动化任务。而人物检测仍在进一步迭代中,未来将重点提升对艺术插画的检测能力。

边缘检测/线稿生成

imgutils集成了patrickvonplaten/controlnet_aux提供的模型,可以将动漫图像转换为线稿:

边缘检测示例

值得注意的是,lineart模型可能消耗更多计算资源,而canny是最快的但效果一般。因此,在大多数情况下,lineart_anime可能是最平衡的选择。

单色图像检测

在过滤爬取的图像时,我们需要移除单色图像。然而,单色图像往往不仅仅由灰度颜色组成,可能仍然包含颜色。imgutils提供了is_monochrome函数来判断图像是否为单色:

from imgutils.validate import is_monochrome

print(is_monochrome('mono/1.jpg'))  # True
print(is_monochrome('colored/7.jpg'))  # False

单色图像检测示例

图像分级

imgutils可以对动漫图像进行粗略快速的分级(safe, r15, r18):

from imgutils.validate import anime_rating

print(anime_rating('rating/safe/1.jpg'))  # ('safe', 0.9999998807907104)
print(anime_rating('rating/r15/5.jpg'))  # ('r15', 0.9996721744537354)
print(anime_rating('rating/r18/9.jpg'))  # ('r18', 0.9997004270553589)

图像分级示例

截断图像检查

imgutils提供了检测不完整图像文件(如下载过程中中断的图像)的功能:

from imgutils.validate import is_truncated_file

filename = 'test_jpg.jpg'
if is_truncated_file(filename):
    print('This image is truncated, you\'d better remove this from your dataset.')
else:
    print('This image is okay!')

图像标签生成

imgutils集成了多个动漫风格图像标签模型,可以生成类似以下的结果:

from imgutils.tagging import get_wd14_tags

rating, features, chars = get_wd14_tags('skadi.jpg')
print(rating)
# {'general': 0.0011444687843322754, 'sensitive': 0.8876402974128723, 'questionable': 0.106781005859375, 'explicit': 0.000277101993560791}
print(features)
# {'1girl': 0.997527003288269, 'solo': 0.9797663688659668, 'long_hair': 0.9905703663825989, ...}
print(chars)
# {'skadi_(arknights)': 0.9869340658187866}

图像标签示例

人物提取

当需要从动漫图像中提取人物部分时,可以使用segment_rgba_with_isnetis函数进行提取,得到一个RGBA格式的图像(背景部分为透明):

from imgutils.segment import segment_rgba_with_isnetis

mask_, image_ = segment_rgba_with_isnetis('hutao.png')
image_.save('hutao_seg.png')

人物提取示例

结语

imgutils为动漫图像处理提供了一套全面的解决方案,集成了多种先进的模型和算法。无论是研究者、开发者还是动漫爱好者,都能在imgutils中找到有用的工具。该库的设计注重易用性和性能,可以大大提高动漫图像处理的效率。

随着深度学习技术的不断发展,imgutils也在持续更新和改进。欢迎大家使用imgutils,并为这个开源项目做出贡献。如果你在使用过程中遇到任何问题或有任何建议,可以在GitHub仓库上提出issue或pull request。

让我们一起推动动漫图像处理技术的发展,创造更多精彩的可能性! 🚀🎨

最新项目

Project Cover
豆包MarsCode
豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。
Project Cover
AI写歌
Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。
Project Cover
商汤小浣熊
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
Project Cover
有言AI
有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。
Project Cover
Kimi
Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。
Project Cover
吐司
探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。
Project Cover
SubCat字幕猫
SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。
Project Cover
AIWritePaper论文写作
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。
Project Cover
稿定AI
稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。
投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号