加了很多QQ群之后,尤其是二次元QQ群,每天会收到大量的图片,很快QQ的data文件夹就会变得非常庞大。作为一个仓鼠党,二次元小垃圾丢了又可惜,可以里边又混入了大量的乱柒芭蕉的各种玩意,各种梗图、表情包、截图等,花时间整理是不可能整理的。那么有没有什么好办法呢?那么就回到我们的标题:基于YOLOv8和deepdanbooru的图片识别分类。
首先介绍一下YOLO模型:YOLO(You Only Look Once)是实时目标检测模型,核心是 “单阶段检测”,无需分区域预测,能一次性输出目标位置与类别。特点就是:轻量化,一般纯CPU计算都能把识别速度压缩到1-2ms内,识别准确率也非常高。
熟悉二次元的朋友们对Danbooru可能会有了解,简单说就是一个二次元的图片网站。而Deepdanbooru 是基于 Danbooru 数据训练的二次元图片标签生成模型,核心功能是自动识别动漫角色、画风、服饰、场景等元素并打上精准标签。它模型体积小、资源占用低,即便在日常办公电脑上,也能高效处理批量二次元图片,快速生成标签。一般一张图片的处理速度在0.5s左右。
理论存在,开始整活:
1. 图片移动工具 0.move_images.py
- 功能: 筛选并移动尺寸大于800x800像素的图片
- 用途: 从大量图片中筛选出高质量的大尺寸图片
- 特点: 自动处理重名文件,支持多种图片格式
由于新版QQ_nt把图片统一放到了Tencent Files\Your-QQ-Number\nt_qq\nt_data\Pic
文件夹中,所以只需要简单的遍历每个文件夹,然后筛选出图片尺寸大一点的图片到同一个文件夹即可。
2. 图片去重工具 1.deduplicate_images.py
- 功能: 基于感知哈希算法检测并删除重复图片
- 用途: 清理重复的图片文件,节省存储空间
- 特点: 将图片压缩为固定尺寸后计算哈希
由于新版QQ_nt可能会把图片分为几个清晰度分别保存_0和_720后缀的文件,为了防止重复,可以采取去重算法,对图片进行去重操作
3. 单色背景筛选工具 2.filter_monochrome_pics.py
- 功能: 检测并筛选黑白单色的图片
- 用途: 筛选剔除黑白单色的文档等图片
- 特点: 可调节黑、白色阈值、色调宽容度等参数
在图片量非常巨大的情况下,可以先按照简单的特征,使用基础的算法,用最快的速度先来筛选掉一部分图片。
4. 二次元图片筛选工具 3.anime_image_filter_with_config.py
- 功能: 使用YOLO和DeepDanbooru模型识别二次元图片
- 用途: 从混合图片中筛选出动漫风格的图片
- 特点:
- 图形化界面操作
- 支持模型配置保存和加载
- 实时预览处理结果
- 详细的日志记录
这一步就进入到正式的图像识别了,YOLO采用的模型是YOLOv_animeface,专为识别二次元人脸训练的模型,可以有效识别二次元人体特征和人脸,主要是非常高效;
可以选择是否开启deepdanbooru筛选,deepdanbooru筛选要稍慢些,一张图片0.5s左右,基于一系列关键tag匹配度,来判断图片是否属于二次元图片。
DEEP_DANBOORU_TAGS: List[str] = [
"anime", "cartoon", "manga", "character",
"illustration", "2d", "animation", "figure", "Game_CG",
"anime_style", "manga_style", "digital_art", "drawing", "sketch", "colorful",
"anime_character", "manga_character", "anime_girl", "anime_boy", "cartoon_character"
]
5. NSFW内容检测工具 4.nsfw_image_sorter_gui.py
)
- 功能: 使用ONNX模型检测图片的NSFW内容
- 用途: 自动分类正常和不适当图片
- 特点:
- 图形化界面操作
- 支持自动下载模型和配置文件
- 可调节检测阈值
- 实时进度显示和日志记录
- 自动创建必要的目录结构
作为一个正直的人,我们一定不能接受不适当的图片出现在我们的收藏里,所以我们要把它们筛选出来剔除掉。此处用到的是onnx-community/nsfw_image_detection-ONNX模型,该模型可以有效识别图片是否含有不适宜内容,识别准确率超过9成。
最终,我们就通过一系列大浪淘沙,留下了自己想要的图片收藏~(虽然收藏了也不会去看❌)
评论