【玩转数据系列十】利用阿里云机器学习在深度学习框架下实现智能图片分类

简介: 伴随着今日阿里云机器学习PAI在云栖大会的重磅发布,快来感受下人工智能的魅力。 一、背景 随着互联网的发展,产生了大量的图片以及语音数据,如何对这部分非结构化数据行之有效的利用起来,一直是困扰数据挖掘工程师的一到难题。
+关注继续查看

伴随着今日阿里云机器学习PAI在云栖大会的重磅发布,快来感受下人工智能的魅力。

一、背景

随着互联网的发展,产生了大量的图片以及语音数据,如何对这部分非结构化数据行之有效的利用起来,一直是困扰数据挖掘工程师的一到难题。首先,解决非结构化数据常常要使用深度学习算法,上手门槛高。其次,对于这部分数据的处理,往往需要依赖GPU计算引擎,计算资源代价大。本文将介绍一种利用深度学习实现的图片识别案例,这种功能可以服用到图片的检黄、人脸识别、物体检测等各个领域。

下面尝试通过阿里云机器学习平台产品,利用深度学习框架Tensorflow,快速的搭架图像识别的预测模型,整个流程只需要半小时,就可以实现对下面这幅图片的识别,系统会返回结果“鸟”:

二、数据集介绍

本案例数据集及相关代码下载地址:https://help.aliyun.com/document_detail/51800.html?spm=5176.doc50654.6.564.mS4bn9

使用CIFAR-10数据集,这份数据是一份对包含6万张像素为32*32的彩色图片,这6万张图片被分成10个类别,分别是飞机、汽车、鸟、毛、鹿、狗、青蛙、马、船、卡车。数据集截图:

数据源在使用过程中被拆分成两个部分,其中5万张用于训练,1万张用于测试。其中5万张训练数据又被拆分成5个data_batch,1万张测试数据组成test_batch。最终数据源如图:

三、数据探索流程

下面我们一步一步讲解下如何将实验在阿里云机器学习平台跑通,首先需要开通阿里云机器学习产品的GPU使用权限,并且开通OSS,用于存储数据。
机器学习:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.112.IOG7OU
OSS:https://www.aliyun.com/product/oss?spm=a2c0j.103967.416540.50.KkZyBu

1.数据源准备

第一步,进入OSS对象存储,将本案例使用的相关数据和代码放到OSS的bucket路径下。首先建立OSS的bucket,然后我建立了aohai_test文件夹,并在这个目录下建立如下4个文件夹目录:
https://zos.alipayobjects.com/rmsportal/eXgLTWObHKpDvnWTWTVN.png

每个文件夹的作用如下:

  • check_point:用来存放实验生成的模型
  • cifar-10-batches-py:用来存放训练数据以及预测集数据,对应的是下载下来的数据源cifar-10-batcher-py文件和预测集bird_bullocks_oriole.jpg文件
  • train_code:用来存放训练数据,也就是cifar_pai.py
  • predict_code:用来存放cifar_predict_pai.py

    本案例数据集及相关代码下载地址:https://help.aliyun.com/document_detail/51800.html?spm=5176.doc50654.6.564.mS4bn9

2.配置OSS访问授权

现在我们已经把数据和训练需要的代码放入OSS,下面要配置机器学习对OSS的访问,进入阿里云机器学习,在“设置”按钮的弹出页面,配置OSS的访问授权。如图:
https://zos.alipayobjects.com/rmsportal/FFRjZMOnAhneNokppRgU.png

3.模型训练

从左边的组件框中拖拽“读OSS Bucket”以及“Tensorflow”组件链接,并且在“Tensorflow”的配置项中进行相关设置。

  • Python代码文件:OSS中的cifar_pai.py
  • 数据源目录:OSS中的cifar-10-batches-py文件夹
  • 输出目录:OSS中的check_point文件夹

点击运行,实验开始训练,可以针对底层的GPU资源灵活调节,除了界面端的设置,需要在代码中也有相应的支持,代码编写符合Tensorflow的多卡规范。

4.模型训练代码解析

这里针对cifar_pai.py文件中的关键代码讲解:
(1)构建CNN图片训练模型

network = input_data(shape=[None, 32, 32, 3],
                         data_preprocessing=img_prep,
                         data_augmentation=img_aug)
    network = conv_2d(network, 32, 3, activation='relu')
    network = max_pool_2d(network, 2)
    network = conv_2d(network, 64, 3, activation='relu')
    network = conv_2d(network, 64, 3, activation='relu')
    network = max_pool_2d(network, 2)
    network = fully_connected(network, 512, activation='relu')
    network = dropout(network, 0.5)
    network = fully_connected(network, 10, activation='softmax')
    network = regression(network, optimizer='adam',
                         loss='categorical_crossentropy',
                         learning_rate=0.001)

(2)训练生成模型名为model的一系列文件,这些文件组成了TF的预测模型

    model = tflearn.DNN(network, tensorboard_verbose=0)
    model.fit(X, Y, n_epoch=100, shuffle=True, validation_set=(X_test, Y_test),
              show_metric=True, batch_size=96, run_id='cifar10_cnn')
    model_path = os.path.join(FLAGS.checkpointDir, "model.tfl")
    print(model_path)
    model.save(model_path)  

5.查看训练过程中的日志

训练过程中,右键“Tensorflow”组件,点击查看日志。

点击打开logview连接,按照如下链路操作,打开ODPS Tasks下面的Algo Task,双击Tensorflow Task,点击StdOut,可以看到模型训练的日志被实时的打印出来:

随着实验的进行,会不断打出日志出来,对于关键的信息也可以利用print函数在代码中打印,结果会显示在这里。在本案例中,可以通过acc查看模型训练的准确度。

5.结果预测

再拖拽一个“Tensorflow”组件用于预测,

  • Python代码文件:OSS中的cifar_predict_pai.py
  • 数据源目录:OSS中的cifar-10-batches-py文件夹,用来读取bird_mount_bluebird.jpg文件
  • 输出目录:读取OSS中的check_point文件夹下模型训练生成的model.tfl模型文件

预测的图片是存储在checkpoint文件夹下的图:

结果见日志:

6.预测代码数据

部分预测代码解析:

  predict_pic = os.path.join(FLAGS.buckets, "bird_bullocks_oriole.jpg")
    img_obj = file_io.read_file_to_string(predict_pic)
    file_io.write_string_to_file("bird_bullocks_oriole.jpg", img_obj)

    img = scipy.ndimage.imread("bird_bullocks_oriole.jpg", mode="RGB")

    # Scale it to 32x32
    img = scipy.misc.imresize(img, (32, 32), interp="bicubic").astype(np.float32, casting='unsafe')

    # Predict
    prediction = model.predict([img])
    print (prediction[0])
    print (prediction[0])
    #print (prediction[0].index(max(prediction[0])))
    num=['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']
    print ("This is a %s"%(num[prediction[0].index(max(prediction[0]))]))

首先读入图片“bird_bullocks_oriole.jpg”,将图片调整为像素32*32的大小,然后带入model.predict预测函数评分,最终会返回这张图片对应的十种分类['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']的权重,选择权重最高的一项作为预测结果返回。
注:因为模型训练存在随机性,所以不保证每次训练出的模型对于预测图片都可以返回准确结果,需要不断调试对应参数才能达到稳定效果,本实验只是简单案例。

四、其它

作者微信公众号(与作者讨论):

参与讨论:云栖社区公众号

免费体验:阿里云数加机器学习平台

往期文章:

【玩转数据系列一】人口普查统计案例

【玩转数据系列二】机器学习应用没那么难,这次教你玩心脏病预测

【玩转数据系列三】利用图算法实现金融行业风控

【玩转数据系列四】听说啤酒和尿布很配?本期教你用协同过滤做推荐

【玩转数据系列五】农业贷款发放预测

【玩转数据系列六】文本分析算法实现新闻自动分类

【玩转数据系列七】有娃的注意了,机器学习教您如何提高孩子学习成绩

【玩转数据系列八】机器学习算法的离线调度实现-广告CTR预测

【玩转数据系列九】机器学习为您解密雾霾形成原因

相关实践学习
使用天池notebook进行工业蒸汽数据分析
本场景基于天池notebook,提供天池平台工业蒸汽预测场景进行数据分析体验。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
相关文章
|
22天前
|
机器学习/深度学习 搜索推荐 计算机视觉
【阿里云OpenVI-人脸感知理解系列之人脸识别】基于Transformer的人脸识别新框架TransFace ICCV-2023论文深入解读
本文介绍 阿里云开放视觉智能团队 被计算机视觉顶级国际会议ICCV 2023接收的论文 "TransFace: Calibrating Transformer Training for Face Recognition from a Data-Centric Perspective"。TransFace旨在探索ViT在人脸识别任务上表现不佳的原因,并从data-centric的角度去提升ViT在人脸识别任务上的性能。
283 37
|
3月前
|
存储 机器学习/深度学习 缓存
阿里云PAIx达摩院GraphScope开源基于PyTorch的GPU加速分布式GNN框架
阿里云机器学习平台 PAI 团队和达摩院 GraphScope 团队联合推出了面向 PyTorch 的 GPU 加速分布式 GNN 框架 GraphLearn-for-PyTorch(GLT) 。
阿里云PAIx达摩院GraphScope开源基于PyTorch的GPU加速分布式GNN框架
|
10月前
|
机器学习/深度学习 人工智能 Cloud Native
阿里云机器学习平台 PAI宣布集成国产深度学习框架 OneFlow
在云栖大会上,阿里云机器学习PAI平台宣布集成自研深度学习框架OneFlow,进一步提升对国产算法框架的支持。PAI可以在架构上实现包括对国际主流、国内自研在内的任何第三方深度学习框架的支持。
阿里云机器学习平台 PAI宣布集成国产深度学习框架 OneFlow
|
机器学习/深度学习 人工智能 自然语言处理
阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地
EasyNLP背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。
阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地
|
消息中间件 分布式计算 数据可视化
阿里云计算框架 | 学习笔记
快速学习阿里云计算框架
125 0
|
人工智能 物联网 大数据
框架协议签订仅12天,阿里云宁波市工业互联网中心应用推广论坛成功举办
7月10日,继阿里巴巴集团与宁波市人民政府签署战略合作框架协议仅12天后,在阿里云宁波市工业互联网中心应用推广论坛上,阿里云与宁波市江北区人民政府联合宣布,阿里云宁波市工业互联网中心正式落户宁波文创港。
473 0
框架协议签订仅12天,阿里云宁波市工业互联网中心应用推广论坛成功举办
|
敏捷开发 运维 监控
2021中国互联网大会7.15正式发布阿里云《云采用框架白皮书》
7月15日,阿里云与中国信息通信研究院在2021中国互联网大会数字化治理论坛上联合发布了《云采用框架白皮书》。
900 0
2021中国互联网大会7.15正式发布阿里云《云采用框架白皮书》
|
敏捷开发 运维 监控
阿里云与中国信通院联合发布《云采用框架白皮书》
2021年7月15日,阿里云与中国信息通讯院将在“2021中国互联网大会——数字化治理论坛”上, 联合发布国内业界首个《云采用框架白皮书》。
727 0
阿里云与中国信通院联合发布《云采用框架白皮书》
|
新零售 人工智能 算法
奥鹏教育与阿里云进行战略合作并签署框架合作协议
2019年12月11日上午,北京奥鹏远程教育中心有限公司与阿里云在杭州阿里集团总部签署了框架合作协议。
264 0
奥鹏教育与阿里云进行战略合作并签署框架合作协议
|
弹性计算 开发框架 关系型数据库
阿里云搭建ThinkPHP框架
ThinkPHP是一款免费、开源、快速、简单、面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷Web应用开发和简化企业应用开发而诞生的。本篇教程介绍如何使用云市场镜像快速搭建ThinkPHP框架。
802 0
相关产品
机器学习平台 PAI
推荐文章
更多