首页
社区
课程
招聘
[翻译]利用 Raspberry Pi 和 YOLO 打造基于深度学习的摄像头
发表于: 2018-1-21 00:49 5269

[翻译]利用 Raspberry Pi 和 YOLO 打造基于深度学习的摄像头

2018-1-21 00:49
5269

亚马逊刚刚发布了 DeepLens ,一款智能摄像机,使用机器学习来探测物体、面部表情,还有如同在相机上弹吉他这样的活动。尽管 DeepLens 目前还没问世,但智能相机这个点子是很令人期待的。

想象一下,如果你在使用一架能够分辨演奏吉他、创建新舞蹈,或者学习新的滑板技巧的照相机。它可以使用原始数据图像来判断你是否get到了一个技巧。或者当你正在做一个新的舞蹈动作时,它能分辨出这一系列的姿势,以及这些姿势是如何配合音乐的。

今天,我们要构建一个深度学习的摄像机,当有鸟出现在摄像机里面时,就保存当前的图片,最终的结果图是这样的:

深度学习相机是机器学习计算机全新平台的开端。

DeepLens有100 GFlops的计算能力可用于推断,这仅仅是一个深度学习相机所需计算能力的开始。在未来,这些设备将变得更加强大,并每秒可以对成百上千的图像进行判断。

不用在相机中构造一个深度学习模型,我们使用 edge 的“傻瓜”相机(相当于一个价值9美元的树莓派),将其挂接到一个网络摄像机上,然后通过 wifi 发送图片。尽管会有一点延迟,但我们可以构建一个 DeepLens 概念的原型,价格也更加便宜。

所以,在这篇文章里面,我们就这样来操作。先用python写一个服务端,将树莓派中的图片发送到另一台电脑进行推断或者图像检测。

另一台具有更强处理能力的计算机将使用名为“YOLO”的神经网络体系结构对该输入图像进行检测,并判断画面中是否有鸟。

我们将从 YOLO 这个结构开始,它是最快的检测模型之一。Tensorflow模型有一个端口,它非常易于安装并且可以运行在多种不同的平台上。如果您使用我们在本文中使用的模型,您还可以在CPU上进行检测,不需要昂贵的GPU。

在我们的原型中,如果在画面中检测到了鸟,那么我们就会将图片保存下来以供后续分析。

这只是智能深度照相机的开始,相当的基础,让我们开始吧。

正如之前说的那样,DeepLens 的成像刚好是在电脑中的,所以它可以做基本的检测,确定图像是否符合标准与机载计算能力。

但是像树莓派这样的东西,我们不一定要有实时检测的计算能力。因此,我们将使用另一台计算机来推断图像中的内容。

因此,我使用了一台简单的 linux 电脑,它具有网络摄像头和wifi接入功能(树莓派 3一款便宜的网络摄像机),它作为一个服务端,方便我的深度学习计算机来做推理。

这是一个很好的堆栈,因为它允许保存许多便宜的相机,并在我的台式机上在一个地方完成所有的计算。

如果你不想使用树莓派相机,你可以使用这些指令在你的树莓Pi上安装OpenCV 3,在指令中使用OpenCV 3.3.1版本,以获得本地安装的最新版本。

我必须禁用CAROTENE编译才能在我的Raspberry Pi上获得3.3.1版本。你或许也需要这样做。

完成上面的工作过后,我们就需要在 Flask 上面设置网络服务了,就可以从网络摄像机上加载图片了。

我使用Miguel Grinberg摄像头服务器代码作为开端,创建了一个简单的jpg端点而不是运动jpeg端点:

如果您想使用Raspberry Pi摄像机,请确保没有注释 from camera_pi,并注释掉 from camera_opencv这一行。

就像在Miguel的文章中提到的一样,可以使用 python3 app.py或使用gunicorn命令来运行这个服务器,

利用相机管理功能,当没有请求进入的时候就关掉相机,并且如果有多台机器对摄像头进入的图像进行检测的时候,还能管理线程。

一旦我们启动了树莓派服务端,获得ip地址后就可以在浏览器里面去访问。

url 就如同这样:http://192.168.1.4:5000/image.jpg


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//