自建1300类常见物体标签体系,覆盖常见的日用品,动物,植物,家具,设备,食物等物体,标签从海量中文互联网社区语料进行提取,保留了出现频率较高的常见物体名称。模型结构采用基于Trasformer的第一个实现工业TesorRT实时落地的Next-ViT结构。 本系列还有如下模型,欢迎试用: 由于较高计算复杂度的注意力机制,大多数现有的ViTs在现实的工业部署场景中不能像CNNs那样高效地执行,为了解决这个问题,提出了一种创新的CNN-Trasformer混合架构Next-ViT,其是基于Trasformer的第一个实现工业TesorRT实时落地的)结构,在跨各种视觉任务的延迟/准确性权衡方面,Next-ViT 显著优于现有的CNN、ViT和CNN-Trasformer混合架构。在TesorRT上,在推理延迟相当的情况下,Next-ViT在分类、检测、分割任务上性能达到了SOTA,例如在与CSWi相当的性能下,推理速度提高了3.6倍。在端侧CoreML上,分类、检测、分割任务的性能也到达了SOTA。其结构如下图所示。 本模型适用范围较广,覆盖大部分日常生活常见的物品类目,包括日用品,动物,植物,家具,设备,食物等。也可作为下游任务的预训练backboe。 在ModelScope框架上,提供输入图片,即可通过简单的Pipelie调用来使用。 测试时主要的预处理如下: 模型在自建的分类测试集进行测试,结果如下: 模型在ImageNet1K的测试集进行测试,结果如下: 使用托管在modelscope DatasetHub上的小型数据集mii_imageet100进行fietue训练的示例代码: 训练说明见示例代码中的注释,更详细的训练说明和用法见官方的训练文档。训练过程产生的log和模型权重文件保存在workdir工作目录中,并以前缀为'best'的文件保存了在验证集上最优精度的权重。evaluate()默认使用精度最高的模型权重进行评估。 使用训练好的模型对需要评估的数据集进行精度评估示例代码如下: 评估过程默认使用模型中自带的预训练权重进行评估。日常物体识别模型介绍
模型描述
期望模型使用方式以及适用范围
如何使用
代码范例
from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks
img_path = 'https://modelscope.oss-c-beijig.aliyucs.com/test/images/bird.JPEG'
image_classificatio = pipelie(Tasks.image_classificatio,
model='damo/cv_extvit-small_image-classificatio_Dailylife-labels')
result = image_classificatio(img_path)
prit(result)
模型局限性以及可能的偏差
训练数据介绍
模型训练流程
预处理
数据评估及结果
Model
top-1 acc
top-5 acc
#params
Tesort(ms)
CoreML(ms)
Remark
Next-ViT-S
74.5
95.5
31.7M
7.7
3.5
modelscope
模型训练
from modelscope.msdatasets import MsDataset
from modelscope.metaifo import Traiers
from modelscope.traiers import build_traier
import tempfile
model_id = 'damo/cv_extvit-small_image-classificatio_Dailylife-labels'
# 加载数据
ms_trai_dataset = MsDataset.load(
'mii_imageet100', amespace='tay0699',
subset_ame='default', split='trai') # 加载训练集
ms_val_dataset = MsDataset.load(
'mii_imageet100', amespace='tay0699',
subset_ame='default', split='validatio') # 加载验证集
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 = 100 # 分类数
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=tmp_dir, # 工作目录
trai_dataset=ms_trai_dataset, # 训练集
eval_dataset=ms_val_dataset, # 验证集
cfg_modify_f=cfg_modify_f # 用于修改训练配置文件的回调函数
)
traier = build_traier(ame=Traiers.image_classificatio, default_args=kwargs)
# 进行训练
traier.trai()
# 进行评估
result = traier.evaluate()
prit('result:', result)
模型评估
from modelscope.msdatasets import MsDataset
from modelscope.metaifo import Traiers
from modelscope.traiers import build_traier
import tempfile
model_id = 'damo/cv_extvit-small_image-classificatio_Dailylife-labels'
# 加载用于评估的数据集
ms_val_dataset = MsDataset.load(
'dailytags', 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 # 评估的数据集
)
traier = build_traier(ame=Traiers.image_classificatio, default_args=kwargs)
# 开始评估
result = traier.evaluate()
prit('result:', result)
点击空白处退出提示







评论