图像分类基础与实战(3)

简介: 图像分类基础与实战

开始进行训练。

训练完成的结果显示如上图,topone的精度是87.75,TOP5的精度是98.97。

训练完成后的工作目录如上图所示。log文件中保存了训练的日志,configuration文件中保存了配置相关信息。best_accuracy_top-1_epoch_1中保存了训练集上精度最好的模型权重,为了后续对模型进行评估,需要将该文件重命名为pytorch_model_pt。

返回模型详情页,复制模型评估相关代码。

复制详情页中的数据集加载相关代码(上图选中部分),替换原代码中“加载用于评估的数据集”部分代码,重新加载数据的校验集。

将model_id修改为工作目录下的vit_base_flower。本次训练的只进行校验,因此训练的数据集设为空,只需填入使用评估的数据集。

执行代码,开始进行评估。

结果如上图,与训练之后的评估完全一直,TOP1是87.75,TOP5是98.97,可正常用。

接下来进行模型推理。

复制详情页代码。

在工作目录下上传一张图片,修改图片路径和模型路径如上图。执行代码。

结果显示如上图,TOP1是向日葵。但top5的概率较为接近,说明训练不够充分。实际训练时,可以将epoch调大,学习率调小,以得到更优化的结果。

在模型页面右上角点击创建创空间,填写相关信息,创建创空间。

创建后的页面如上图所示。

复制上图中git clone代码,将前面训练好的权重与配置文件拷贝过来,上传到的modelscode模型的空间中。

上传完成后页面如上图。

点击右上角,添加版本号,即可使用模型。

接下来测试发布到ModelScope上的模型是否可用。

复制模型页面下的代码并对其进行修改。

代码中的模型ID修改为创建的模型ID(页面左上角),图片地址修改为根目录下的测试图片。

创建创空间时选择了非公开模型,因此此处需要对模型进行授权,代码如下:

from modelscope.hub.api import HubApi
#YOUR_ACCESS_TOKEN =
'请从ModelScope个人中心->访问令牌获取’
#api= HubApi()
#api.login(YOUR_ACCESS_TOKEN)

另外,因为设置了模型的版本,需要重新写版本。最终修改后的代码如上图。

结果显示如上图,证明模型可以正常使用。

回到创空间,打开空间文件下的readme文件,可以直接复制其他模型的readme文件(如上图右侧所示)进行修改后使用。

需要修改模型ID,在创建的模型名称下方复制即可。entry_file指文件入口,本示例中不使用GPU进行推理,因此是GPU为0。

执行代码也可以从其他创空间模型中复制后进行修改使用。新建一个app.py文件,将代码粘贴至文件中。首先需要修改授权码。回调函数为interface,输入的类型为图片,输出为label类型,显示top5的结果,设置默认测试图片的地址。

复制前文的推理代码并进行修改。

输入的类型是图像,因此需要将 result=image_classification()内的参数修改为img。

在空间文件里点击上传文件,将app.py文件上传至创空间。

在设置里点击上线创空间。

至此,创空间搭建完毕。页面如上图所示。

点击图片,提交后会显示结果。

其他模型的训练流程与本文示例基本一致,主要区别在于使用的数据集不同。所有数据、模型、代码均已开源,欢迎进入Modelscope官网搜索使用。

相关文章
|
前端开发 JavaScript API
React Draggable 实现拖拽 - 最详细中文教程 - 卡拉云
React Draggable 是 react 生态中,最好用的拖拽实现库之一。如果你的应用中需要实现拖拽功能,可以尝试用 react-draggable,它可以满足多数情况下的拖拽需求,比如一个弹出设置浮窗,可以相互遮挡的容器之类。在所有 react 拖拽库里(即 react dnd, drag and drop),react-draggable 算是把功能性和易用性平衡得最好的拖拽库了。
4082 0
|
Oracle JavaScript Java
JDK的版本迭代特性(JDK9 - JDK20)
JDK的版本迭代特性(JDK9 - JDK20)
|
8月前
|
前端开发 UED
HarmonyOS应用一键置灰指南
一键置灰常用于重大悼念、特殊纪念日、模拟视觉效果及系统维护等场景,可通过组件属性、窗口设置或工具库实现界面整体或局部灰度效果,操作简便且提升用户体验与情感共鸣。
352 0
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
Java+机器学习基础:打造AI学习基础
随着人工智能(AI)技术的飞速发展,越来越多的开发者开始探索如何将AI技术应用到实际业务场景中。Java作为一种强大的编程语言,不仅在企业级应用开发中占据重要地位,在AI领域也展现出了巨大的潜力。本文将通过模拟一个AI应用,从背景历史、业务场景、优缺点、底层原理等方面,介绍如何使用Java结合机器学习技术来打造一个AI学习的基础Demo。
581 18
|
传感器 数据采集 监控
数据采集器和物联网网关的区别
数据采集器主要用于从各种数据源收集数据。这些数据源可以是传感器(如温度传感器、压力传感器等)、仪表(如电表、水表等)或者其他具有数据输出功能的设备。物联网网关是连接感知层(包含各种传感器和数据采集设备)和网络层(如互联网、局域网等)的关键设备。
627 4
|
9月前
|
分布式计算 Java Scala
【赵渝强老师】Scala编程语言
Scala 是一种集成面向对象与函数式编程特性的多范式语言,运行于 Java 平台并兼容 Java 程序。学习 Scala 为掌握 Spark 和 Flink 打下基础。本文通过视频讲解及代码示例,展示如何用 Scala 在 Spark 和 Flink 中实现 WordCount 程序,包括环境配置、数据处理及输出操作,帮助理解其实际应用。
161 19
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
3519 0
|
消息中间件 前端开发 安全
第三方数据平台技术选型分析
这篇文章分析了第三方数据平台的技术选型,涵盖了移动统计平台、自助分析平台和BI平台的不同代表厂商,讨论了它们的数据源、使用要求和适用场景。
694 2
|
自然语言处理 运维 Cloud Native
运维大模型探索之 Text2PromQL 问答机器人
本文主要介绍将AIGC技术运用到可观测领域的探索。
1770 94
|
SQL 分布式计算 关系型数据库
彻底理解Hive中的锁
前面遇到过一次因为Hive中表被锁住了,导致定时任务一直失败。这两天又出现了表被锁,原因是连接hiveserver2过于频繁,mysql连接被打满,引发的连锁反应,导致我们的小时任务一直失败,下午重点注意到这个问题,才解决好。
2003 0
彻底理解Hive中的锁