当前位置: 首页 > news >正文

多标签识别:JoyTag模型的图像标注革命【开源】

 公共视觉模型通常会对其训练数据集进行严格过滤,这限制了这些基础模型在广泛概念上的表现,进而限制了表达自由、包容性和多样性。JoyTag通过结合Danbooru 2021数据集和一组手动标记的图像,努力提高模型对不同类型图像的泛化能力。

JoyTag项目的核心功能是自动为图像打标签。用户只需提供一张图片,JoyTag就能输出多达5000个不同标签的预测,这些预测是独立进行的,意味着每个标签的预测不受其他标签的影响。

JoyTag有着广泛的适用性,它不仅能够处理动漫和漫画风格的艺术作品,还能通过辅助数据集的补充,增强对摄影图片和其他类型内容的处理能力。这使得JoyTag在多种图像类型上都具有较好的泛化能力。JoyTag项目特别强调性别积极性和包容性,它减少了对训练数据集的过滤,从而避免了对用户表达自由的限制和潜在的歧视。这种开放性使得JoyTag能够更好地理解和标记多样化的内容。JoyTag的另一个优势是其对标签系统的创新应用。它基于Danbooru的标签体系,但通过手动标记和调整,使得模型能够更准确地适应摄影内容的需要,提高了标签的相关性和准确性。

JoyTag模型是基于ViT(Vision Transformer)架构构建的,具体采用了ViT-B/16的配置。ViT是一种有效的图像分类模型,它将图像分割成多个小块(即"patches"),然后将这些小块作为输入序列进行处理,类似于自然语言处理中的Transformer模型处理文本序列的方式。

模型的输入分辨率为448x448x3,这意味着它可以处理具有这种分辨率的彩色图像。JoyTag模型的参数量为91.5M,这是一个相对适中的参数量,既能够保证模型的复杂度,又不至于过于庞大而导致训练困难。

在输出方面,JoyTag模型进行的是多标签分类,能够为每张图片预测超过5000个不同的标签。这些标签是相互独立的,使得模型可以同时识别图片中的多个特征或对象。

JoyTag模型的训练细节包括了多个方面。它使用了LAMB优化器,这是一种结合了Adam和LAMB优势的优化算法,有助于提高训练效率。此外,模型还采用了FP16混合精度和TF32技术,这些技术可以提高计算效率并减少内存使用。

为了提高模型的泛化能力,JoyTag在训练过程中使用了多种技术,包括Trivial Augment数据增强、Focal loss损失函数,以及学习率的余弦衰减策略。这些技术有助于模型在面对不平衡数据集时保持稳定,并提高其在复杂场景下的表现。

JoyTag模型的训练是在两个阶段进行的。首先,在224x224分辨率下训练了220M个样本,然后重启并在448x448分辨率下训练了额外的440M个样本。这种分阶段的训练策略有助于模型在不同分辨率下都能学习到有效的特征表示。

以下是一个简化的示例代码,展示了如何使用JoyTag模型(代码是一个示例,实际使用时需要根据JoyTag模型的具体实现细节进行调整。代码中省略了图像预处理的具体实现,这部分需要根据模型的要求来完成):

from PIL import Image
import torch
from pathlib import Path
import torchvision.transforms.functional as TVF# 加载模型
model = VisionModel.load_model('/path/to/model')
model.eval()
model = model.to('cuda')  # 将模型移动到GPU# 准备图像的函数
def prepare_image(image, target_size):# 省略图像预处理的代码...pass# 预测函数
@torch.no_grad()
def predict(image_path):image = Image.open(image_path)image_tensor = prepare_image(image, model.image_size)batch = {'image': image_tensor.unsqueeze(0).to('cuda')}with torch.amp.autocast_mode.autocast('cuda', enabled=True):preds = model(batch)tag_preds = preds['tags'].sigmoid().cpu()# 根据阈值筛选标签top_tags = [...]  # 假设这是模型训练时得到的顶部标签列表scores = {top_tags[i]: tag_preds[0][i] for i in range(len(top_tags))}predicted_tags = [tag for tag, score in scores.items() if score > THRESHOLD]return ', '.join(predicted_tags), scores# 使用模型进行预测
tag_string, scores = predict('test.jpg')
print(tag_string)
for tag, score in sorted(scores.items(), key=lambda x: x[1], reverse=True):print(f'{tag}: {score:.3f}')

尽管JoyTag模型在多标签分类任务上取得了不错的成绩,但它仍然存在一些局限性。例如,对于一些微妙的概念,如面部表情,模型可能由于缺乏足够的数据而表现不佳。对于一些主观性强的概念,如胸部大小,模型的预测可能会有所波动,因为Danbooru数据集中的标签并不总是与指定的指南一致。

JoyTag团队正在积极地使用新训练的模型来标记更多图像,以扩展辅助数据集并提高模型在特定领域的性能。他们还鼓励用户报告模型在特定标签上的表现,以便他们能够更好地指导未来的改进工作。这种持续的优化和更新保证了JoyTag项目能够不断进步,满足用户对图像标签化处理的需求。

项目链接:https://github.com/fpgaminer/joytag

相关文章:

  • rabbitmq单机安装及性能测试
  • NAND闪存市场彻底复苏
  • hive split 特殊用法
  • 如何在WordPress中上传多种安装包文件
  • 第一章 基本指令
  • Qt 信号与槽机制概述
  • 早期发现,健康生活!第三届ZAODX世界肿瘤早筛大会圆满落幕!
  • JAVAEE值之网络原理(1)_用户数据报协议(UDP)、概念、特点、结构、代码实例
  • 2024-6-14(沉默Nginx)
  • 30.保存游戏配置到文件
  • 【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
  • ripro主题如何使用memcached来加速
  • 【多线程实例】
  • Google Earth Engine(GEE)——计算闪闪红星的ndvi的值和直方图(时序分析)
  • 12.1 Go 测试的概念
  • canvas 五子棋游戏
  • Javascript设计模式学习之Observer(观察者)模式
  • MD5加密原理解析及OC版原理实现
  • WePY 在小程序性能调优上做出的探究
  • 聊聊flink的BlobWriter
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 如何使用 JavaScript 解析 URL
  • 入门到放弃node系列之Hello Word篇
  • 设计模式 开闭原则
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​520就是要宠粉,你的心头书我买单
  • ​ArcGIS Pro 如何批量删除字段
  • ​io --- 处理流的核心工具​
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 数据结构
  • # 透过事物看本质的能力怎么培养?
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (3)nginx 配置(nginx.conf)
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (分享)自己整理的一些简单awk实用语句
  • (九十四)函数和二维数组
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十)T检验-第一部分
  • (一)RocketMQ初步认识
  • (转)Linq学习笔记
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .Net Remoting常用部署结构
  • .NET Remoting学习笔记(三)信道
  • .net 中viewstate的原理和使用
  • .Net6使用WebSocket与前端进行通信
  • .NET是什么
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • :not(:first-child)和:not(:last-child)的用法
  • @31省区市高考时间表来了,祝考试成功
  • @private @protected @public
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择