让我们先来先看一下最终实现的效果视频
现在很多科技巨头如 IBM、谷歌、微软和亚马逊都推出了简便易用的视觉识别 API,甚至一些小型公司如 Clarifai 等也推出的相似的 API。此外,Facebook今年年初宣布开源其物体检测平台 Detectron,用于推动计算机视觉领域的研究。
下面两幅照片都用 IBM 的 Watson Visual Recognition 中的默认分类器打上了标签,但第一幅图在此之前首先被一个物体检测模型标注过
根据自己的实际用途,你可能并不需要一个自定义的物体检测模型。Ten sorFlow的物体检测 API 提供了几个模型,可以调整速度和准确率,都是基于 COCO 数据集。为了让大家方便一些,引入网上(作者 Nick Bourdakos)一个列表,将用 COCO 模型可以检测出的物体放在了一起:
当然,如果你想检测的物体不在上述列表中,比如 logo 什么的,那么你需要创建一个自定义物体检测器。
众所周知,星星之火可以燎原,火灾是一种频繁发生而又损失惨重的灾难,一直是人们极力关注而又要求预防、遏制的灾祸。大量的火灾案例说明,火灾早期探测是预防火灾、及时扑灭火灾、减少火灾损失的有效手段,发现越早,扑救越及时,形成灾祸的可能性就越小。所以我想搭建一个模型,用于识别日常生活中的火焰,在火灾发生早期,利用火焰的色彩、面积变化,边缘变化规律,形体变化规律,尖角数、质心位置移动等信息作为火灾识别的依据,本文基于中信机器学习平台做的图像多特征的火焰识别能够有效识别出火灾火焰,并有很强的抗干扰能力。
回归正题,谈谈怎么用中信机器学习平台做图像识别
要想完成图像识别的模型,把模型训练好,有许多很多工作要做(如果你不愿意自己搭建和训练模型,你可以找找相关教程,使用一些平台上提供的已经封装好的模型),模型训练步骤如下:
快速创建第一个模型
1.创建项目准备建模
2.将数据上传至中信机器学习平台
3.构建计算过程并调试代码
4.运行并查看结果
首先通过访问地址http://ml.c.citic/hub/login,打开中信云网站首页,页面如下:
如果该用户没有登录,点击登陆自动跳转至中信云登录界面,如下图:
注册账号密码登陆进入,得到界面
1.创建项目准备建模
点击【Lab View】创建新的项目,创建完成显示如图:
2.将数据上传至中信机器学习平台
点击上传按钮,上传已经下载好的模型和数据文件到平台
3.选择开发引擎并调试代码
点击Terminal 为新项目搭建需要语言环境,以pathon3.0为例:
首先,在终端上安装的 Python 和 pip 安装脚本要求:
向 PYTHONPATH 中添加 models 和 models/slim:
重要提醒:每次打开终端都必须这样运行,或添加至你的 ~/.bashrc 文件。
运行脚本:
一旦脚本完成运行,你会得到一个 train.record 文件和一个 val.record 文件。我们训练模型会用到它们。你就
到这里为止,我们的环境搭建工作就完成啦,是不是很简单?
安装完成,可以选择编程语言进行机器学习平台的开发测试,以pathon3.0为例
点击pathon3.0图标,进入pathon3的输入界面,如下图:
4.调试参数,训练模型
从零训练一个物体检测器要花好几天,即便是在使用多个 GPU 的情况下也是如此。为了加快训练速度,我们会用一个由多种不同数据集上训练得来的模型,将该模型的参数重新用于初始化我们的新模型。
训练这一步和我们在本地环境下运行的步骤一样。如果你使用的是我用的训练数据,那么你只需复制我的 repo (如果不是用的我的训练数据,那就复制你自己的 repo):
目录结构应该是这样的:
模型什么时候能准备好呀?这要根据你的训练数据的多少。数据越多,你需要的步骤就越多。我的模型差不过在 4500 步左右时趋于平稳,在 20000 步左右时达到顶峰。我继续训练,一直训练了 20 万步,但是效果没有进一步改善。
我建议你每 5000 步下载一次模型,然后进行评估,以确保你训练的方式是正确的。
5.导出推理图
要想用我们的代码使用整个模型,我们需要将检查点文件( model.ckpt-STEP_NUMBER.* )转换成一个冻结的推理图(inference graph)。
将刚才下载到的检查点文件转移至你一直在用的 repo 中的根文件夹里。
然后运行如下命令:
记得 export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim。
你应该会看到一个新的 output_inference_graph 目录,包含一个 frozen_inference_graph.pb 文件。这就是我们需要的文件。
6.测试模型
现在,运行如下命令:
然后就会在 test_images 目录里的所有图像上运行在 output_inference_graph/frozen_inference_graph.pb 中发现的对象检测模型,并将结果导出在 output/test_images 目录中。
结果
我们把搭建的模型运行于视频中的片段,就得到如开头视频的检测结果了:
从视频中可以看到,我们搭建的模型成功地追踪到了影片中的火焰飞舞情况。