【2020华为云AI实战营】两种方式利用ModelArts进行图像分类

KuzeKuze 发表于 2020/06/07 14:56:38 2020/06/07
【摘要】 图像分类是计算机视觉的最基本的任务之一,它是很多复杂任务的基础,比如目标检测算法。我在这里记录利用ModelArt进行图像分类的两种方式。我想和很多小伙伴一样,之前一直把图像分类任务置于本地进行训练,它有不少弊端:1. 本地算力开销是一笔不小的费用 2. 重复造轮子严重。在接触ModelArt之前我不知道原来应用落地可以方便快捷。下面我介绍ModelArts提供的两种方法来实现图像分类,这也...

图像分类是计算机视觉的最基本的任务之一,它是很多复杂任务的基础,比如目标检测算法。我在这里记录利用ModelArt进行图像分类的两种方式。我想和很多小伙伴一样,之前一直把图像分类任务置于本地进行训练,它有不少弊端:1. 本地算力开销是一笔不小的费用 2. 重复造轮子严重。在接触ModelArt之前我不知道原来应用落地可以方便快捷。下面我介绍ModelArts提供的两种方法来实现图像分类,这也是我自己学习使用ModelArts的一种记录方式。


方法一:ModelArts自动学习

首先要说明,图像分类是机器学习里面的有监督算法,所谓有监督,可以简单理解为每一个数据是有标签的,任务很明确,你的模型或算法需要根据训练样本预测没有见过的样本的类别。而你的模型学习过程可以简单理解为看见一个样本,预测它的类别,然后对照样本的标签修改自己的参数以达到更好的预测。


显然图像分类的样本是图像,图像里包含的类别是标签。我们假设这样一个场景:你是面包店老板,你的生意很好,你需要一个帮手来帮你分类面包类型,好快速的报出价格,现在这个帮手来了,就是ModelArts图像分类的自动学习,你得教会它面包的类型,于是你拍了很多照片然后给这些照片打上标签然后拿给它,它就开始自动学习。所以,其实作为用户,你不用写一行代码,只需要给样本打好标签就行了。


这里我假设你已经配置好了你的账号且安装了obs-browser-plus客户端,并且在北京四obs数据库下有一个桶。先将自己的图像样本上传到桶中的一个路径下,‘可以没有标签,因为ModelArts配置了接口让我们可以方便的为自己的样本打标签。点击右上角进入控制台然后将鼠标移动至左边的三个横线的地方,此时会弹出许多选项框,移动到下面找到ModelArts。

然后点击左边的自动学习或者直接点击新手入门下的图像分类:

然后创建项目并填写相应的字段,其中数据集的输入位置就是你刚才把数据上传到路径。

进入过后,我们会看见那些没有打上标签的图像,我们可以选择好图片后在右边填写标签名,下方我们可以看见已经有了的标签名:

给图片打上标签后,就可以开始训练了,注意不必为所有图片都打上标签才开始训练。进入训练设置,这些可以个性化填写,以自己的实际需求选择,因为这里只是实验项目,所以我把推理硬件改成cpu,计算规格改成免费gpu。

点击确定开始训练,现在你只需要等待训练完成即可,然后点击模型训练一栏,左边可以看见已经训练的模型的版本,我这里因为训练了两次所以有两个版本,这不是关键的,关键的模型训练好了过后的部署,可以看见模型的版本旁边有个部署按钮,点击就可以开始部署。


由于这里只是演示项目,所以我部署时的计算节点规格选择为免费的cpu,你可以根据自己的实际需求选择部署时的设备。这一步是由可能出错的,因为免费的规格只能部署一个模型,如果报错可以先去部署上线那里把之前部署的删除掉就可以了。

部署也要花一定时间,我们只要等待就好了。

部署完毕过后就看到上面的页面,此时你可以上传你自己的图片进行类别预测,当然不止于在这个页面进行预测,注意右边的URL接口,实际上部署完毕过后就是一个软件可以调用的接口,你可以在自己的其他端口使用你的部署。到这里自动学习的图像分类就记录完毕了,是真*一行代码都没写*就实现了图像分类。


不过对于任务有特定需求的朋友肯定不满足于此,毕竟ModelArts的自动学习就像一个黑匣子,不知道其中的运作方式难免对自己的特定任务会不放心。没关系现在来介绍第二个方法实现图像识别。


方法二:ModelArts制定特定的模型和参数进行图像识别

图像识别领域里有不少优秀的算法,比如VGG,Inception,ResNet,DenseNet,其中ResNet残差网络是最著名的也是目前使用最广的算法。接下来我们就使用这个算法来实现图像分类。

我还是假设你已经将你的数据集分为训练集和验证集且上传到了你的桶中。

我们先创建自己的数据集:在ModelArts控制台下点击数据管理中的数据集,然后点击旁边的创建数据集。

来到创建数据集页面,和刚才自动学习的流程大同小异,我们先填写必要的字段,将训练数据集在obs中的路径填入到数据集输入位置。数据集输出位置是用来输出训练的模型的。场景选择图片的图像分类。其他保持默认即可。

和自动学习一样,如果我们的数据集关有图片没有标注信息的话是需要进行一个标注过程的:

标注完成过后便可以点击旁边的发布按钮进行数据集发布,在发布这里填写字段,我们这里设置训练/验证比例为0.8,也就是80%的数据用作训练,20%的数据用作验证。


发布完成后,我们这个数据集就是可以训练的了,现在我们要去ModelArts的算法市场订阅自己想用的算法了。我们回到ModelArts的控制台,点击左侧的算法管理,点击旁边的市场订阅,再点击市场订阅下的查找算法就来到了算法市场:

在算法市场中搜索resnet,然后选择用于图像分类的resnet模型,不要错选为faster rcnn中的resnet,这里我选择普通版基于TensorFlow实现的resnet50模型,你也可以根据自己的需要选择层数更多的resnet。进入页面,点击订阅:

在完成订阅算法后,我们可以在自己的ModelArts控制台管理里面看见自己订阅的算法。点击算法同步,然后等待同步。等同步完成后点击旁边的创建训练作业。


进入训练作业的参数设置页面:

在这个页面可以设置参数,比如常见的epoch,batch_size,学习率等等!最后选择资源,因为是演示项目,这里就选择免费的,注意。免费的有时候需要排队等候资源。

下一步提交过后我们就能够看见我们的训练作业了:

等待训练完成。因为这里只是演示项目,我就不训练了,占用资源不做事可不好。训练完成后点击右上角的创建模型。

我们在导入模型那里依自己的需求填写相应的参数。点击立即创建即可。

模型创建完毕后我们回到ModelArts控制台,点击左边模型管理中的模型,此时会看见我们刚刚创建的模型,然后点击右边的部署。

我们选择在线服务。然后填写一些必要信息。就跟前面的自动学习一样了。

部署完成后便可以上传图片进行预测了。

同样的也可以通过api调用。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。