亚马逊AWS官方博客

基于猫狗识别实验入门DeepLens

2017年11 月 30 日凌晨,在美国拉斯维加斯一年一度的 AWS re: Invent 大会上,亚马逊 AWS 发布了一款名为 DeepLens 的人工智能摄像机,它是世界上第一台支持深度学习的摄像机,用以运行实时计算机视觉模型,为开发者提供机器学习的实践经验。

在本篇文章中,将通过一个猫狗识别实验来带您掌握AWS DeepLens的基本使用方法。 即便是一个初学者,也可以在10 分钟左右完成将一个自带的项目创建并部署到 AWS DeepLens 设备上,从而领略深度学习的神奇应用。

 

1. DeepLens 简介

AWS DeepLens 是世界上第一台支持深度学习的摄像机。它可以与多个 AWS 机器学习服务集成,可以从 AWS 云端下载预置的模型并部署到本地执行推理。它能够学习和探索最新的人工智能技术,以开发基于深度学习模型的计算机视觉应用程序。

深度学习是一种利用神经网络学习和进行预测的机器学习技术,2006年多伦多大学的神经网络专家Geoffrey Hinton等人首次提出了深度学习的概念,从此拉开了深度学习研究和应用的序幕,这些研究与应用主要集中在图像、语言、文字三大领域。而AWS DeepLens 可以帮助我们快速学习和探索深度学习在图像领域的应用。

我们先来了解一下这台设备,

AWS DeepLens 技术规格:

  • Intel Atom® 处理器
  • Intel Gen9 显卡
  • Ubuntu OS 16.04 LTS
  • 100 GFLOPS 性能
  • 双频 Wi-Fi
  • 8GB RAM
  • 16GB 存储
  • 可以通过 microSD 卡扩展的存储
  • 4MP 摄像头,MJPEG 格式
  • 264 编码,1080p 分辨率
  • 2 个 USB 端口
  • Micro HDMI
  • 音频输出

AWS DeepLens 集成了AWS 多项服务:

AWS DeepLens 与 Amazon Rekognition 集成以用于进行高级图像分析、与 Amazon SageMaker 集成以用于训练模型,与 Amazon Polly 集成以创建启用语音功能的项目。该设备还可以与 AWS IoTAmazon SQSAmazon SNSAmazon S3Amazon DynamoDB 等服务安全连接。

AWS DeepLens 自带示例项目:

自带有 8个示例项目可用,分别是:

目标检测

准确检测并识别20个不同的对象。

艺术风格

让你的环境看起来像梵高的画作。

人脸识别

检测到人的面部。

是不是热狗

将食物分类为热狗或不是热狗。

猫狗识别

检测并识别猫或者狗。

动作识别

识别30种不同的动作。

头部姿势

检测9种不同的头部姿势角度。

鸟分类

检测超过200种鸟。

 

 

 

 

 

2. DeepLens 动手实验

本文中用到的代码放置在亚马逊云科技的官方GitHub仓库中。

如需下载代码,可以在终端使用如下命令:

 

git clone https://github.com/aws-samples/deeplens-china-blog-sample-code.git

 

作为机器学习的初学者,您可以使用 AWS DeepLens 通过基于深度学习示例项目的动手教程来探索深度学习。

使用DeepLens 之前的准备

  • 拥有一个AWS账户
  • 拥有一台AWS DeepLens 设备
  • 完成DeepLens设备注册

 

DeepLens使用详细步骤介绍

 

下面用自带的猫狗识别实验介绍DeepLens具体使用,通过这个实验,将了解到如何通过使用 AWS DeepLens 准确检测和识别您房间中的猫或狗。

 

该示例实验是基于卷积神经网络,使用预训练的Resnet-152网络架构将图像分类为猫或者狗,之后把模型部署到 AWS DeepLens 设备。在完成部署后,就可以实时检测 AWS DeepLens 如何使用模型识别您的宠物。

 

完成这个实验,仅需要如下三个步骤:

 

步骤一:建立一个深度学习项目

 

(1) 打开AWS DeepLens控制台https://console.thinkwithwp.com/deeplens/.

 

(2) 创建一个新的项目,点控制面板左边的Projects,再点Create new project.

(3) 在Choose project type (选择项目类型)页面,选中Use a project template (使用项目模板).

(4) 然后选择要创建的示例项目。在此练习中,选择 Cat and dog recognition (猫狗识别)

滚动到屏幕底部,然后选择 Next.

 

(5) 命名项目,在Project information(项目信息)页面中,执行以下操作:

Project name(项目名称),输入项目的名字。

Description – Optional(项目描述,可选),输入项目的描述。

选择 Create (创建)

至此,完成了一个项目的创建,返回到Project(项目页,其中列出了刚刚创建的项目。

 

步骤二:部署项目到DeepLens 设备

将上述的深度学习模型部署到设备,

(1) 返回Project(项目页,选择建立好的项目,并打开项目详细信息。

(2) 在打开的项目详细信息页,点击Deploy to device(部署到设备)。

 

(3) 在Target device(目标设备)页,从列表中选中AWS DeepLens设备,请选择要将此项目部署到的设备。一个 AWS DeepLens 设备一次只能部署一个项目。

(4) 在 Review and deploy (检查和部署) 屏幕上,检查项目,选择Deploy (部署) 以部署该项目。

至此,完成了一个项目的部署。

 

步骤三:实时查看结果

成功部署之后,就可以实时查看DeepLens 识别宠物的过程。

(1) 打开浏览器测试,https://192.168.43.18:4000/,并将摄像头对准房间中的宠物。

 

(2) 屏幕结果显示,这是一只dog()

虽然DeepLens准确识别这是一只狗,我们仍然想知道,设备识别为狗的概率,能否在屏幕上输出该值,我们可以通过修改Lambda函数中的代码来实现。

 

3. AWS Lambda 使用

DeepLens的预测过程是通过AWS Lambda 函数中的代码来实现,因此可以通过修改里面的内容来扩展AWS DeepLens的使用。这部分描述如何在输出结果上增加概率输出的详细步骤。

 

(1) 在 Project(项目)页面选中想要编辑的项目Cat-and-dog-recognition,点击 Function, deeplen-cat-and-dog-recognition/version/1.

(2) 在上一步打开的页面点击Code, 确认py,可以看到全部.的代码,点击Edit code(修改代码)。

(3) 修改代码,参考131行获取模型识别结果及对应的概率,组合成字符串,然后参考133行添加到图片上。(也可以直接复制github中py文件的完整代码来快速完成)

(4) 代码修改之后,点击File-Save,随后点击Deploy。

(5) Deploy成功之后,会有提示Successfully updated the function deeplens-cat-and -dog-recognition之后需要点击Publish new version

(6) 查看发布成功的版本 Version2

(7) 使用version 2的Lambda函数,回到Project (项目)页面,点击edit在打开的edit页面,点击Function,选中Version 2,点

(8) 把更新过的项目的新版本部署到设备,重新部署之前需要Remove project即删除设备上的已有项目。重复上述DeepLens 安装使用的步骤二:部署项目到DeepLens设备。

 

(9) 重新设别,重复上述DeepLens 安装使用的步骤三:实时查看结果。

现在可以看到,我们的程序在准确的识别这是一只狗的同时,还会输出对应的概率0.9893.

至此我们完成了创建和部署一个自带的AWS Deeplens项目,并利用Lambda函数实现了部分自定义的输出。当然AWS DeepLens 还有其他的一些功能:

 

4. 实验常见问题FAQ

Q:设备注册无法完成怎么办?

A:有可能是国内网络问题导致,建议尝试在不同的region注册,通常在tokyo(ap-northeast-1)注册效果最佳,或者可以通过使用带VPN的路由器来避免网络问题;此外,使用Windows IE浏览器也可能导致无法注册成功,建议使用Firefox或Chrome等。

 

Q:通过console部署模型至DeepLens终端的速度非常慢?

A:有可能是国内网络问题导致,需要耐心等待,或者可以使用带VPN的路由器。

 

其他问题请参考链接 https://docs.thinkwithwp.com/zh_cn/deeplens/latest/dg/troubleshooting-device-registration.html#troubleshooting-device-registration-8

5.总结

深度学习对图像的处理和应用是深度学习领域一个重要的研究方向,这类应用正在很多行业发挥着越来越重要的作用,例如,制造业的缺陷检测,医疗行业的医疗影像分类,自动驾驶等等。可以说,人工智能和机器学习正在催生新一代的智能产业,包括智能家居、智能零售、智能工业等。 AWS DeepLens希望激发更多的人学习人工智能的兴趣,并共同创造更多人工智能的应用,让人类的工作和生活变得更加轻松。

 

本篇作者

Jane Wang

亚马逊云科技专业服务团队数据科学家。主要负责落地实施企业实际应用的机器学习项目,拥有多个行业的项目经验,涵盖银行、保险、医疗、物流、制造、零售等行业。

蒲洋

亚马逊云科技专业服务团队数据科学家。在计算机视觉、数据分析、图像重构等领域拥有近十年的项目经验,深度参与媒体、能源及医学等行业的AI模型开发和应用。

刘明

AWS专业服务团队数据科学家。在机器学习、深度学习、数据挖掘及模型部署开发拥有扎实经验。深度参与过能源、医疗、教育、媒体等行业的机器学习应用搭建及数据平台建设。