花朵目标检测

最近更新时间:2019-08-21 11:11:05

场景背景

目标检测任务在计算机视觉和数字图像处理领域扮演着重要角色,其应用场景涵盖多个领域,如航空航天、机器人导航、智能监控、工业检测等。目标检测可以降低人力成本,提高检测效率,因此具有重要的现实意义和商业价值。

精准地从图片中识别出目标所在位置,并准确地将该目标分类,是目标检测任务的核心目的。随着深度学习主流浪潮的推进,目标检测算法在性能上也得到了较大的提升。目前主流的目标检测算法可以分为 One-Stage 目标检测和 Two-Stage 目标检测算法两个类别,其中 One-Stage 目标检测算法主要包括 SSD、YOLO 和 CornerNet 等,此类算法可直接通过一个 stage 产生物体的位置坐标和类别概率,故速度较快。Two-Stage 目标检测算法主要包括 R-CNN、Fast R-CNN和 Faster R-CNN 等,此类算法将目标检测划分为产生候选区域和对候选区域进行分类和位置精修两个阶段,相较 One-Stage 目标检测算法准确度较高。

本文通过智能钛机器学习平台,利用Faster R-CNN算法搭建目标检测模型。用户无须编写代码,只要拖动相应的算法组件,便可以在十几分钟的时间内快速上手,解决目标检测场景下的问题。

数据集介绍

本案例使用的数据集为从 公开数据集 中选取的 Daisy(菊花)和 Sunflower(向日葵)的部分图片,并对其进行手工标注得到的 demo 数据集。

整体流程

工作流整体流程如下:

本场景共包含3个环节,分别是:

  1. 数据上传:上传花朵数据的标注信息和花朵数据的图像信息。
  2. 数据预处理:利用【图像切分转换】将数据拆分成训练集、验证集 ,并将原始 JPG 图片文件转换成高效的 TFRecord 格式文件。
  3. 使用 Faster R-CNN 处理分类任务。
说明:

工作流搭建过程中若连线有误可通过右键单击删除连线

详细流程

一. 上传数据
本步骤中需要上传两个数据源:花朵数据标注和花朵数据图像。

  1. 在智能钛控制台的左侧导航栏,选择【输入】>【数据源】>【COS 数据集】,并拖入画布中,右键单击该组件【重命名】为:花朵数据标注。
  2. 填写 COS 路径地址:${ai_dataset_lib}/public/YOLOv2/flowers/Annotations
注意:

请关闭【是否检查数据】

至此,我们将花朵数据标注成功导入工作流,按照同样的操作我们将花朵数据图像拖拽入工作流,修改对应的 COS 路径地址,并关闭【是否检查数据】按钮。
花朵数据图像地址:${ai_dataset_lib}/public/YOLOv2/flowers/Images

二. 图像切分转换
TFRecord 数据文件是一种将图像数据和标签统一存储的二进制文件,能更好的利用内存,在 Tensorflow 中快速的复制、移动、读取、存储等。

智能钛机器学习平台的【图像切分转换】组件同时适用于目标检测和图像分类,用户只需在参数配置区选择任务类型和切分比例,就可以实现对图像数据的切分和类型转换。在本次实验中,我们使用【图像切分转换】组件将将原始 JPG 文件格式转换成高效的 TFRecord 格式,同时将实验数据切割成训练集和验证集,验证集比例为0.2。具体操作如下:

  1. 在智能钛机器学习平台控制台的左侧导航栏,选择【输入】>【数据转换】>【图像切分转换】,并拖入画布
  2. 将 【花朵数据图像】 的输出桩,连到 【图像切分转换】 左边的输入桩上; 将【花朵数据标注】的输出桩连接到【图像切分转换】右边的输入桩,至此,数据 IO 路径已根据连线自动生成。
  3. 单击【图像切分转换】,在右侧弹框中设置相关算法参数
    • 任务类型:目标检测。
    • 是否进行切分:是。
    • 验证集比例:0.2。
    • 其余参数可默认。

三. 选择网络
选择合适的 CNN 网络处理分类任务,如此处选择 Faster RCNN 网络模型。

  1. 在智能钛机器学习平台控制台的左侧导航栏,选择【算法】>【深度学习算法】>【计算机视觉】>【Faster-rcnn】,并拖入画布。
  2. 将【图像切分转换】左、中、右侧输出桩分别与【Faster-rcnn】的左、中、右侧输入桩相连,至此,部分数据 IO 路径已根据连线自动生成。
  3. 填写参数:
    • 配置文件:可以从 开源代码文件 中下载合适的配置文件。在本 demo 中,可直接 下载配置文件,并将下载后的文件上传至此。
    • 初始模型:此处填写预训练的模型checkpoint路径,在本 demo 中,可以直接复制输入:
      ${ai_dataset_lib}/checkpoints/faster_rcnn/faster_rcnn_resnet50_coco/model.ckpt
    • 类别个数:2。
    • 训练步数:10000(由于目标检测算法收敛较慢,任务流仅为展示用法,要取得较好效果,训练步数需要设为50000次左右)。
    • GPUs:1。
    • 其余参数可默认。

四. 运行调度及训练进度查看
单击画布上方【运行】按钮即可运行工作流,详情请参考 运行工作流