摘要:通过一个垃圾分类应用的开发示例,介绍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. C语言【10部分】

    输出整数 #include <stdio.h> int main() { int number; // printf() 输出字符串 printf("输入一个整数: " ...

  2. 「题解报告」P3354

    P3354 题解 题目传送门 一道很恶心的树形dp 但是我喜欢 题目大意: 一片海旁边有一条树状的河,入海口有一个大伐木场,每条河的分叉处都有村庄.建了伐木场的村庄可以直接处理木料,否则要往下游的伐木 ...

  3. 基于Vue3实现一个前端埋点上报插件并打包发布到npm

    前端埋点对于那些营销活动的项目是必须的,它可以反应出用户的喜好与习惯,从而让项目的运营者们能够调整策略优化流程提高用户体验从而获取更多的$.这篇文章将实现一个Vue3版本的埋点上报插件,主要功能有 通 ...

  4. KingbbaseES V8R6集群维护案例之---集群之间数据迁移

    案例说明: 生产环境是集群环境,测试环境是集群,现需要将生产环境的数据迁移到测试集群中运行,本文档详细介绍了从集群环境迁移数据的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingbase ...

  5. .NET 反向代理-YARP

    什么是 YARP YARP (另一个反向代理) 设计为一个库,提供核心代理功能,你可以根据应用程序的特定需求进行自定义. YARP 是使用 .NET的基础架构构建在 .NET上的.YARP 的主要不同 ...

  6. Python实践项目——LSB隐写术

    此为北京理工大学某专业某学期某课程的某次作业 一.项目背景 1.隐写术 隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容. 2.L ...

  7. 国内外各大物联网IoT平台鸟瞰和资源导航

    一.国内外物联网平台 国内 百度物接入IoT Hub 阿里云物联网套件 智能硬件开放平台 京东微联 机智云IoT物联网云服务平台及智能硬件自助开发平台 庆科云FogCloud Ablecloud物联网 ...

  8. Kibana仪表盘(Dashboard)详解

    Kibana 仪表板(Dashboard) 展示保存的可视化结果集合. 在编辑模式下,您可以根据需要安排和调整可视化结果集,并保存仪表板,以便重新加载和共享. 创建一个仪表板 如何创建一个仪表板: 点 ...

  9. Elasticsearch:反向代理及负载均衡在 Elasticsearch 中的应用

    文章转载自:https://elasticstack.blog.csdn.net/article/details/108365746

  10. Compose 命令说明

    命令对象与格式 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器.如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响. 执行 ...