带你从0到1开发AI图像分类应用

开发,ai,图像,分类,应用 · 浏览次数 : 514

小编点评

**华为云ModelArts全流程平台** **数据标注与准备** - AI Gallery提供7.7w+的数据集,包括官方发布的和用户共享的数据集。 **模型训练** - 选择官方发布的EfficientNetB0图像分类算法。 **模型部署** - 选择在线服务,创建AI应用。 **API调用** - 获取API接口,供开发者调用。 **网页在线预测** - 上传测试图片,单击预测,右侧就会显示出预测结果。 **AI应用效果** - 监控模型效果,并根据需要进行调整。 **数据集准备** - AI Gallery提供了丰富的AI应用开发所需的数据集,算法,模型。 ** AI Gallery** - 提供开发者生态社区,提供了数据集、算法、模型。 **直播** - 欢迎感兴趣的开发者预约报名参与AI Gallery直播。

正文

摘要:通过一个垃圾分类应用的开发示例,介绍AI Gallery在AI应用开发流程中的作用。

本文分享自华为云社区《AI Gallery:从0到1开发AI图像分类应用》,作者: yd_269359708 。

现如今,人工智能(AI)技术在计算机领域内,得到了越来越广泛的重视,并在各行各业中得到应用。然而无论是AI开发的初学者,还是资深的AI开发专家,在AI 应用开发工程中,都会面临着不小的麻烦。我们今天要介绍的AI Gallery,就是一个开放的开发者生态社区,提供了数据集、算法、模型等AI数字资产的共享,帮助开发者加速AI产品的开发与落地,保障AI开发生态链上各参与方高效地实现各自的商业价值。

背景知识

AI 开发基本流程

在介绍AI Gallery之前,我们先来看看一个AI应用开发的基本流程,方面后面更好的说明AI Gallery在AI 应用开发流程中能够提供的帮助。大神请直接跳过此章。

AI开发的基本流程通常可以归纳为几个步骤:确定目的、准备数据、训练模型、评估模型、部署模型。

  1. 确定目的
    在开始AI开发之前,必须明确要分析什么?要解决什么问题?商业目的是什么?基于商业的理解,整理AI开发框架和思路。例如,图像分类、物体检测等等。不同的项目对数据的要求,使用的AI开发手段也是不一样的。
  2. 准备数据
    数据准备主要是指收集和预处理数据的过程。
    按照确定的分析目的,有目的性的收集、整合相关数据,数据准备是AI开发的一个基础。此时最重要的是保证获取数据的真实可靠性。而事实上,不能一次性将所有数据都采集全,因此,在数据标注阶段你可能会发现还缺少某一部分数据源,反复调整优化。
  3. 训练模型
    俗称“建模”,指通过分析手段、方法和技巧对准备好的数据进行探索分析,从中发现因果关系、内部联系和业务规律,为商业目的提供决策参考。训练模型的结果通常是一个或多个机器学习或深度学习模型,模型可以应用到新的数据中,得到预测、评价等结果。
    业界主流的AI引擎有TensorFlow、Spark_MLlib、MXNet、Caffe、PyTorch、XGBoost-Sklearn、MindSpore等,大量的开发者基于主流AI引擎,开发并训练其业务所需的模型。
  4. 评估模型
    训练得到模型之后,整个开发过程还不算结束,需要对模型进行评估和考察。往往不能一次性获得一个满意的模型,需要反复的调整算法参数、数据,不断评估训练生成的模型。
    一些常用的指标,如准确率、召回率、AUC等,能帮助您有效的评估,最终获得一个满意的模型。
  5. 部署模型

模型的开发训练,是基于之前的已有数据(有可能是测试数据),而在得到一个满意的模型之后,需要将其应用到正式的实际数据或新产生数据中,进行预测、评价、或以可视化和报表的形式把数据中的高价值信息以精辟易懂的形式提供给决策人员,帮助其制定更加正确的商业策略。

ModelArts

明白了AI 应用开发的流程,我们就可以在本地搭建环境来进行AI应用开发了。但是俗话说“工欲利其事必先利其器”,借助成熟的AI 开发平台,能够极大地提高我们的开发效率,缩短我们的开发周期,减少我们的开发成本。在这里,我推荐的是华为云的ModelArts 一站式AI开发平台。

ModelArts作为一个一站式的开发平台,能够支撑开发者从数据到AI应用的全流程开发过程。包含数据处理、模型训练、模型管理、模型部署等操作,并且提供分享功能,能够在AI Gallery上与其他开发者分享模型。

ModelArts支持图像分类、物体检测、视频分析、语音识别、产品推荐、异常检测等多种AI应用场景。

AI Gallery

现在开始进入我们的主题:AI Gallery。

有AI应用开发经历的同学,应该都有类似的感悟。纵观AI应用的整个开发流程,从数据采集、标注,到算法模型的构建,每个环节都会产生许多可以复用的AI资产,而AI Gallery的目的之一就是充分发挥这些资产的效用,提高AI开发效率。

AI Gallery是在ModelArts的基础上构建的开发者生态社区,提供了Notebook代码样例、数据集、算法、模型、Workflow等AI数字资产的共享,为高校科研机构、AI应用开发商、解决方案集成商、企业级/个人开发者等群体,提供安全、开放的共享及交易环节,加速AI资产的开发与落地,保障AI开发生态链上各参与方高效地实现各自的商业价值。

接下来,我将通过一个垃圾分类应用的开发示例,介绍AI Gallery在AI应用开发流程中的作用。

垃圾分类应用开发教程

准备工作

注册华为云账号

首先你需要注册一个华为云账号。注册链接:注册_华为帐号 (huawei.com)

注册完成后,进入华为云控制台,建议在北京四使用,网络相对比较稳定。

创建OBS桶

OBS是华为云的对象存储服务,可以理解为一个放在云端的硬盘,我们在使用ModelArts开发AI应用的过程中,需要利用OBS来保存开发所需的一些文件,例如训练所需的数据集,训练完成的模型等。

创建OBS桶。

按照页面提示,选择合适的规格,需要注意,桶的区域要和上一步中ModelArts使用的区域相同,我选择的是北京四。

在后续开发的过程中,如果需要上传大批量的数据例如训练样本到OBS,推荐使用OBS Browser+。OBS Browser+简介_华为云 (huaweicloud.com)

确定应用目的

完成上述的准备工作,我们开始正式的AI应用开发工作。根据第二章的AI开发基本流程,我们首先要确定我们开发的这个应用需要解决什么问题。在本教程中,我们假设需要开发一个垃圾分类应用,用户上传垃圾的照片,我们返回垃圾所属的分类。

选择数据集

确定完目的,我们需要准备训练所需的数据集。AI Gallery上提供了7.7w+的数据集,包括官方发布的和用户共享的数据集,覆盖了主流的AI应用场景。

打开AI Gallery的数据集专栏,搜索垃圾分类,可以看到很多的垃圾分类相关的数据集。AI Gallery数据集专栏

我们选择其中的一个数据集,点击查看详情。可以看到这个数据集是已经标注完成的,我们可以直接该数据集进行模型训练。

点击下载,将数据集下载到ModelArts数据集。

下载方式选择ModelArts数据集,数据集输出位置和输入位置,可以选择在OBS桶内新建一个文件夹

点击确定,页面会跳转到Gallery的个人中心。(这里下载的数据集可能没有第一时间同步过来,可以多刷新几次)

数据集会在后端自动下载,我们先来到ModelArts,左侧导航栏选择数据管理->数据集。等待刚刚下载数据集导入完成。

由于有些AI算法需要切分完成的数据集(将数据集切分为训练集和验证集),我们这里打开数据集详情,发布一个新版本,在新版本中对数据集进行切分。点击确定,等待数据集新版本发布完成。至此,数据集准备工作就完成了。

训练模型

选择算法

准备完数据,我们开始进行模型训练。由于垃圾分类在AI中属于图像分类的范畴,所以我们到AI Gallery的算法专栏,搜索图像分类,选择一个合适的算法,推荐选择官方发布的算法,官方会定期更新官方算法,来保证算法的效果,这里我选择了一个官方发布的EfficientNetB0图像分类算法。

AI Gallery算法专栏
图像分类-EfficientNetB0

简单浏览下该算法,发现很适合我们的垃圾分类场景。

点击订阅,订阅成功后点击前往控制台,云服务区域选择北京四(和上文相同的区域)。

创建训练作业

跳转到ModelArts控制台后,选择算法最新的版本,创建训练作业。

按照提示,填写相应的信息。训练输入这里我们选择刚刚下载的数据集,训练输出可以在OBS桶内新建一个文件夹,超参都是用默认的不变,规格这里可以选择显示免费的(可能需要排队,不想排队的话可以选择收费的规格)。点击提交,开始训练作业。

创建AI应用

打开训练作业详情页面,可以看到作业的状态以及训练过程中打印的日志。等待训练作业完成后,点击右上角的创建AI应用的按钮。

部署类型选择在线服务,如果有批量服务或者边缘服务的需求,也可以把这两个选上。

部署模型

等AI 应用创建完成后,就来到了最后一步,模型部署。点击刚刚创建的AI应用,选择部署为在线服务。

因为我们这里只是体验下开发流程,所以可以选择免费的规格(一小时后自动停止,且每个账号只能部署一个免费规格的AI应用)。

待在线服务部署成功,至此,我们成功上线了一个垃圾分类。接下来我们看一下这个AI应用的效果,以及如何调用相应的API。

调用AI应用

AI应用部署成功后,ModelArts会自动生成一个API接口,供开发者调用,可以看到我们这里是一个POST请求,请求的参数类型是file类型。返回两个参数,表明预测的结果和每个标签的概率。这个API接口支持AK/SK认证以及token认证,我们可以在其他项目中调用这个API接口,实现垃圾的分类识别功能。

除了API调用,ModelArts还支持网页上在线预测,我们单击预测,来到预测页面,上传一张测试图片,单击预测,右侧就会显示出预测结果。可以发现,我们的模型成功识别到了这是厨余垃圾的水果果皮。

总结

相比于其他AI开发平台,华为云ModelArts是更快的普惠AI开发平台,涉及数据标注与准备、模型训练、模型调优、模型部署等AI开发全流程,为AI应用开发提供一站式服务。ModelArts 是可以让开发者上手更快、训练更快、部署更快的全流程平台。AI Gallery作为在ModelArts的基础上构建的开发者生态社区,提供了丰富的AI应用开发所需的数据集,算法,模型。除此之外,AI Gallery还提供了社区交流的功能,大家可以在Gallery交流学习心得,同时本针对AI Gallery也安排了一场直播,欢迎感兴趣的开发者预约报名参与:https://bbs.huaweicloud.com/live/cloud_live/202211081900.html

 

点击关注,第一时间了解华为云新鲜技术~

与带你从0到1开发AI图像分类应用相似的内容:

带你从0到1开发AI图像分类应用

摘要:通过一个垃圾分类应用的开发示例,介绍AI Gallery在AI应用开发流程中的作用。 本文分享自华为云社区《AI Gallery:从0到1开发AI图像分类应用》,作者: yd_269359708 。 现如今,人工智能(AI)技术在计算机领域内,得到了越来越广泛的重视,并在各行各业中得到应用。然

Go-Zero从0到1实现微服务项目开发(二)

继续更新GoZero微服务实战系列文章:上一篇被GoZero作者万总点赞了,本文将继续使用 Go-zero 提供的工具和组件,从零开始逐步构建一个基本的微服务项目。手把手带你完成:项目初始化+需求分析+表结构设计+api+rpc+goctl+apifox调试+细节处理。带你实现一个完整微服务的开发。

[转帖]一文带你掌握 Redis

https://www.bbsmax.com/A/8Bz8AKGkJx/ 一、摘要 谈起 Redis,相信大家都不会陌生,做过云平台开发的程序员多多少少会接触到它,Redis 英文全称:Remote Dictionary Server,也被称之为远程字典服务。 从官方的定义看,Redis 是一款开源

Python从0到1丨带你认识图像平滑的三种线性滤波

摘要:常用于消除噪声的图像平滑方法包括三种线性滤波(均值滤波、方框滤波、高斯滤波)和两种非线性滤波(中值滤波、双边滤波),本文将详细讲解三种线性滤波方法。 本文分享自华为云社区《[Python从零到壹] 五十五.图像增强及运算篇之图像平滑(均值滤波、方框滤波、高斯滤波)》,作者:eastmount。

异构数据源数据同步 → 从源码分析 DataX 敏感信息的加解密

开心一刻 出门扔垃圾,看到一大爷摔地上了 过去问大爷:我账户余额 0.8,能扶你起来不 大爷往旁边挪了挪 跟我说到:孩子,快,你也躺下,这个来钱快! 我没理大爷,径直去扔了垃圾 然后飞速的躺在了大爷旁边,说道:感谢大爷带飞! 书接上回 通过 异构数据源同步之数据同步 → DataX 使用细节,相信大

LLM技术全景图:技术人必备的技术指南,一张图带你掌握从基础设施到AI应用的全面梳理

LLM技术全景图:技术人必备的技术指南,一张图带你掌握从基础设施到AI应用的全面梳理 LLM 技术图谱(LLM Tech Map)是将 LLM 相关技术进行系统化和图形化的呈现,此图谱主要特点是“专注于技术人视角”,不求从 LLM 产业角度汇聚信息,而是希望让从事相关工作或是想了解 LLM 的技术人

[转帖]一代更比一代强!一文带你回顾DDR内存的前世今生

根据冯诺·依曼结构,计算机中要有存储器。所以直到今天,内存和硬盘仍然在电脑中占有非常重要的地位。与大容量的硬盘不同,内存在存取速度上有着非常惊人的表现,但是断电后又不能保存存入的信息。因此在电脑硬件长期的发展过程中,内存一直扮演着中转站的角色。和其他硬件一样,内存遵循着摩根定律,从最远古的SIMM到

带你认识JDK8中超nice的Native Memory Tracking

摘要:从 OpenJDK8 起有了一个很 nice 的虚拟机内部功能: Native Memory Tracking (NMT)。 本文分享自华为云社区《Native Memory Tracking 详解(1):基础介绍》,作者:毕昇小助手。 0.引言 我们经常会好奇,我启动了一个 JVM,他到底会

Golang 依赖注入设计哲学|12.6K 的依赖注入库 wire

本文从“术”层面,讲述“依赖注入”的实现,带你体会其对于整洁架构 & DDD 等设计思想的落地,起到的支撑作用。

上周热点回顾(5.27-6.2)

热点随笔: · 「废话少说,放码过来」:博客园2024夏季T恤上架预售 (博客园团队)· 从大龄程序员现状聊聊出路 (程序员半支烟)· 一文带你了解.NET能做什么? (追逐时光者)· 《HelloGitHub》第 98 期 (削微寒)· 程序员转型正当时, 35+开启第二职业 (车骑)· C#开发