摘要:通过一个垃圾分类应用的开发示例,介绍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图像分类应用的更多相关文章

  1. vue2.0与实战开发

    慕课网实战 百度云 web前端实战: Node.js入门到企业Web开发中的应用 Web前端性能优化 让你的页面飞起来 前端跳槽面试必备技巧 前端JavaScript面试技巧全套 node.JS 线上 ...

  2. 用鸿蒙开发AI应用(七)触摸屏控制LED

    [小年答谢,新春送礼]免费抽取1000元京东卡+更多新春好礼~查看详情>>> 目录:前言背景知识编译用户程序框架子系统基于AbilityKit开发的Ability总结 前言上一篇,我 ...

  3. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  4. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

  5. odoo8.0+PyCharm4.5开发环境配置

    终于把odoo的开发环境配置好,现把相关经验教训做个记录分享: odoo8.0+PyCharm4.5开发环境配置(剑飞花 373500710) 1.最佳兼容搭配包 试过各种组合 GreenOdoo+p ...

  6. 带你从零学ReactNative开发跨平台App开发(十一)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  7. 带你从零学ReactNative开发跨平台App开发(六)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  8. 带你从零学ReactNative开发跨平台App开发[react native SqlLite 终极运用](十二)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  9. 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

随机推荐

  1. 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加

    好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...

  2. webpack打包优化点

    目录 1. noParse 2. 包含和排除目录 3. IgnorePlugin 4. happypack 5. DllPlugin动态链接库 6. 热更新 7. 开发环境 tree-shaking ...

  3. 华南理工大学 Python第7章课后小测-1

    1.(单选)以下程序对字典进行排序,按字典键值从小到大排序,空白处的代码是(  ): dt={'b':6, 'c':2, 'a':4} s=sorted(dt.items(),key=_____) p ...

  4. 【学习笔记】GBDT算法和XGBoost

    前言 这一篇内容我学了足足有五个小时,不仅仅是因为内容难以理解, 更是因为前面CART和提升树的概念和算法本质没有深刻理解,基本功不够就总是导致自己的理解会相互在脑子里打架,现在再回过头来,打算好好总 ...

  5. 谷歌MapReduce经典论文翻译(中英对照)

    MapReduce: Simplified Data Processing on Large Clusters(MapReduce: 简化大型集群下的数据处理) 作者:Jeffrey Dean and ...

  6. EFK-5: ES集群开启用户认证

    转载自:https://mp.weixin.qq.com/s?__biz=MzUyNzk0NTI4MQ==&mid=2247483826&idx=1&sn=583e9a5260 ...

  7. python中限定导入的子模块

    如果包定义文件__init__.py中存在一个叫做__all__的列表变量,那么在使用from package import *的时候就把这个列表中的所有名字作为要导入的模块名. 例如在example ...

  8. PAT (Basic Level) Practice 1021 个位数统计 分数 15

    给定一个 k 位整数 N=dk−1​10k−1+⋯+d1​101+d0​ (0≤di​≤9, i=0,⋯,k−1, dk−1​>0),请编写程序统计每种不同的个位数字出现的次数.例如:给定 N= ...

  9. vue3 自定义指令控制按钮权限

    经过1个周的摸索和查阅资料,终于搞定VUE3中自定义指令,实现按钮级别的权限控制.当然,只是简单的对按钮进行隐藏和删除的dom操作比较容易,一直纠结的是当按钮无权限时,不是直接删除当前dom元素(bu ...

  10. bootstrapValidator 参数校验框架

    bootstrap:能够增加兼容性的强大框架. 因为项目需要数据验证,看bootstrapValidator 还不错,就上手一直,完美兼容,话不多说. 需要引用css: bootstrap.min.c ...