亚马逊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 IoT、Amazon SQS、Amazon SNS、Amazon S3、Amazon 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.aws.amazon.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) 查看发布成功的版本 Version:2
(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的路由器。
5.总结
深度学习对图像的处理和应用是深度学习领域一个重要的研究方向,这类应用正在很多行业发挥着越来越重要的作用,例如,制造业的缺陷检测,医疗行业的医疗影像分类,自动驾驶等等。可以说,人工智能和机器学习正在催生新一代的智能产业,包括智能家居、智能零售、智能工业等。 AWS DeepLens希望激发更多的人学习人工智能的兴趣,并共同创造更多人工智能的应用,让人类的工作和生活变得更加轻松。