1. 花朵图像分类

1.1. 场景背景

随着信息时代的发展,伴随着照相装备和图片采集设备的普及,越来越多的图片数据广泛存在于生产生活的各个角落,如何对海量图片数据进行高效的分类和检索成为了一项新的挑战。智能钛机器学习平台为用户提供一种深度学习快速搭建图像分类模型,用户无须编写代码,只要拖动相应的算法组件,便可以在短时间内快速上手,解决自己的实际问题。本场景中,将通过搭建 CNN 网络训练分类模型,识别五种花朵;训练完成后部署模型,通过 HTTP 调用返回预测结果,共包含4个环节,预计完成需要30分钟。

1.2. 数据集介绍

本案例使用的公开数据集共包含五类花朵数据:Daisy(菊花)、Dandelion(蒲公英)、Rose(玫瑰)、Sunflower(向日葵)和Tulip(郁金香),共218MB大小。

数据集抽样展示如下:(各类别下花朵照片示例)

2.1. 花朵图像分类 - 图1

1.3. 整体流程

工作流整体流程如下:

2.1. 花朵图像分类 - 图2

1.4. 详细流程

一. 数据准备

  • 在智能钛机器学习平控制台的左侧导航栏,选择【输入】>【数据源】>【 COS 数据集】,拖入画布中

  • 填写 COS 路径地址${COS}为地址前缀,请直接复制输入: ${ai_dataset_lib}/image_classification/flower_photos,并关闭【是否检查数据】

2.1. 花朵图像分类 - 图3

二. 切分数据

在模型训练的时候通常会将所有的数据分成三部分, 分别是训练集 training set、验证集 validation set 和测试集 test set。训练集用来训练模型,验证集用于调节超参数,测试集用来整体评估模型的性能。

本文的实验较简单,可以只将数据切割成训练集和测试集,比例为8:2, 80%用于训练,20%用于测试。

  • 在控制台的左侧导航栏,选择【输入】>【数据转换】>【图像数据切分】
  • 将【图像数据切分】拖入画布,并右键重命名为“切分数据”
  • 填写参数, 其余参数均可默认:

    • 图像存储路径:自动生成

    • 输出路径:自动生成

    • 分类 or 检测任务:Classification

    • 验证集比例:0.2

2.1. 花朵图像分类 - 图4

三. 数据格式转换

TFRecord 数据文件是一种将图像数据和图像标签统一存储的二进制文件,能更好地利用内存,在 TensorFlow 中快速的复制、移动、读取、存储等。在这一步中,我们将原始 JPG 文件转换成高效的 TFRecord。

  • 在控制台的左侧导航栏,选择【输入】>【数据转换】>【图片格式转换(分类)】,并拖入画布中
  • 将【切分数据】的输出桩连到【图片格式转换】左边的输入桩上,将【COS 数据集】输出桩连接到【图片格式转换】右侧的输入桩
  • 填写参数, 其余参数均可默认:

    • 路径自动生成
    • images/split:1000
  • 两个输出桩分别代表训练集和验证集的 TFRecord 文件, 供后面的分类网络使用

2.1. 花朵图像分类 - 图5

四. 分类网络

选择合适的 CNN 网络处理分类任务,这里以 Inception 网络为例。 Inception 网络的详情可以参考 相关论文

  • 在控制台的左侧导航栏,选择【算法】>【深度学习算法】>【计算机视觉】>【 Inception 】,并拖入画布中

  • 将【图片格式转换】的两个输出桩,分别连接到【 Inception 】 的前两个输入桩,代表了训练集和验证集数据文件,同时将【切分数据】的输出桩连接到【 Inception 】 最右侧的输入桩,代表“label_map文件所在目录”

2.1. 花朵图像分类 - 图6

  • 填写参数:

    • batch_size: 16

    • 学习率:0.0025

    • 训练步数:6000

    • 是否模型微调:true

    • 优化器:sgd

    • 微调模型路径:复制填写${ai_dataset_lib}/checkpoints/inception/inception_v1.ckpt

    • GPUs:深度学习网络用到了 GPU 资源, 可以极大地提高训练速度。 单击该选项,在对话框中选择合适的显卡型号和数量,此处1张显卡即可

2.1. 花朵图像分类 - 图7

五. 运行调度及训练进度查看

详情请参考 运行工作流