ViT图像分类-中文-日常物品-花朵分类

我要开发同款
匿名用户2024年07月31日
115阅读

技术信息

开源地址
https://modelscope.cn/models/Stefanieliang/cv_vit-base_image-classification_Dailylife-labels_flowers
授权协议
Apache License 2.0

作品详情

日常物体识别模型介绍

自建1300类常见物体标签体系,覆盖常见的日用品,动物,植物,家具,设备,食物等物体,标签从海量中文互联网社区语料进行提取,保留了出现频率较高的常见物体名称。模型结构采用最新的ViT-Base结构。
创空间快速可视化展示: ViT图像分类-中文-日常物品

本系列还有如下模型,欢迎试用:

模型描述

采用Trasformer经典的ViT-Base结构, 并采用了DeiT的知识蒸馏方式进行训练。
overview

期望模型使用方式以及适用范围

本模型适用范围较广,覆盖大部分日常生活常见的物品类目,包括日用品,动物,植物,家具,设备,食物等。也可作为下游任务的预训练backboe。

如何使用

在ModelScope框架上,提供输入图片,即可通过简单的Pipelie调用来使用。

代码范例

from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks

img_path = 'http://www.modelscope.c/api/v1/models/Stefaieliag/cv_vit-base_image-classificatio_Dailylife-labels_flowers/repo?Revisio=master\u0026FilePath=resources/test.jpg'
image_classificatio = pipelie(Tasks.image_classificatio,
                                model='Stefaieliag/cv_vit-base_image-classificatio_Dailylife-labels_flowers',
                                model_revisio='v1.0.0')
result = image_classificatio(img_path)
prit(result)

模型局限性以及可能的偏差

  • 支持1300类常见物体识别

训练数据介绍

  • 140万包含常见物体的图像集

模型训练流程

  • 主要训练参数参考DeiT论文的设置,除了weight decay在复现时设置为0.1,模型训练未使用pretraied参数进行初始化。

预处理

测试时主要的预处理如下:

  • Resize:先将原始图片的短边缩放至256
  • Normalize:图像归一化,减均值除以标准差
  • CeterCrop:裁切为224x224

数据评估及结果

模型在自建测试集进行测试,结果如下:

Model top-1 acc top-5 acc #params Remark
ViT-base 74.3 95.3 86M modelscope

模型训练

使用托管在modelscope DatasetHub上的小型数据集mii_imageet100进行fietue训练的示例代码:

from modelscope.msdatasets import MsDataset
from modelscope.metaifo import Traiers
from modelscope.traiers import build_traier
import tempfile

model_id = 'Stefaieliag/cv_vit-base_image-classificatio_Dailylife-labels_flowers'

# 加载数据
ms_trai_dataset = MsDataset.load(
            'flowers14', amespace='tay0699',
            subset_ame='default', split='trai') # 加载训练集
prit(ext(iter(ms_trai_dataset)))

ms_val_dataset = MsDataset.load(
            'flowers14', amespace='tay0699',
            subset_ame='default', split='validatio') # 加载验证集
prit(ext(iter(ms_val_dataset)))

tmp_dir = tempfile.TemporaryDirectory().ame # 使用临时目录作为工作目录

# 修改配置文件
def cfg_modify_f(cfg):
    cfg.trai.dataloader.batch_size_per_gpu = 32 # batch大小
    cfg.trai.dataloader.workers_per_gpu = 2     # 每个gpu的worker数目
    cfg.trai.max_epochs = 1                     # 最大训练epoch数
    cfg.model.mm_model.head.um_classes = 14                     # 分类数
    cfg.model.mm_model.trai_cfg.augmets[0].um_classes = 14    # 分类数
    cfg.model.mm_model.trai_cfg.augmets[1].um_classes = 14    # 分类数
    cfg.trai.optimizer.lr = 1e-4                # 学习率
    cfg.trai.lr_cofig.warmup_iters = 1         # 预热次数
    cfg.trai.evaluatio.metric_optios = {'topk': (1, 5)}  # 训练时的评估指标
    cfg.evaluatio.metric_optios = {'topk': (1, 5)}        # 评估时的评估指标
    retur cfg

# 构建训练器
kwargs = dict(
    model=model_id,                 # 模型id
    work_dir='./vit_base_flower',               # 工作目录
    trai_dataset=ms_trai_dataset, # 训练集
    eval_dataset=ms_val_dataset,    # 验证集
    cfg_modify_f=cfg_modify_f,    # 用于修改训练配置文件的回调函数
    model_revisio='v1.0.0'
    )
traier = build_traier(ame=Traiers.image_classificatio, default_args=kwargs)

# 进行训练
traier.trai()

# 进行评估
result = traier.evaluate()
prit('result:', result)

训练说明见示例代码中的注释,更详细的训练说明和用法见官方的训练文档。训练过程产生的log和模型权重文件保存在workdir工作目录中,并以前缀为'best'的文件保存了在验证集上最优精度的权重。evaluate()默认使用精度最高的模型权重进行评估。

模型评估

使用训练好的模型对需要评估的数据集进行精度评估示例代码如下:

from modelscope.msdatasets import MsDataset
from modelscope.metaifo import Traiers
from modelscope.traiers import build_traier
import tempfile

model_id = 'Stefaieliag/cv_vit-base_image-classificatio_Dailylife-labels_flowers'

# 加载用于评估的数据集
ms_val_dataset = MsDataset.load(
            'flowers14', amespace='tay0699',
            subset_ame='default', split='validatio') # 加载验证集

tmp_dir = tempfile.TemporaryDirectory().ame # 使用临时目录作为工作目录

# 构建训练器
kwargs = dict(
    model=model_id,                 # 模型id
    work_dir=tmp_dir,               # 工作目录
    trai_dataset=Noe,
    eval_dataset=ms_val_dataset,    # 评估的数据集
    model_revisio='v1.0.0'
    )
traier = build_traier(ame=Traiers.image_classificatio, default_args=kwargs)

# 开始评估
result = traier.evaluate()
prit('result:', result)

评估过程默认使用模型中自带的预训练权重进行评估。

Cloe with HTTP

 git cloe https://www.modelscope.c/Stefaieliag/cv_vit-base_image-classificatio_Dailylife-labels_flowers.git

功能介绍

日常物体识别模型介绍 自建1300类常见物体标签体系,覆盖常见的日用品,动物,植物,家具,设备,食物等物体,标签从海量中文互联网社区语料进行提取,保留了出现频率较高的常见物体名称。模型结构采用最新的V

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论