哪些深度相机有python接口_用树莓派和YOLO打造一个深度学习照相机

news/2025/1/8 20:43:43/

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

亚马逊刚刚发布了一款智能摄像头DeepLens,它使用机器学习来检测物体、面部和一些活动,如弹吉他。虽然现在还不可以购买DeepLens,但是智能摄像头的想法令人兴奋。

想象一下可以用一个相机分辨你是在弹吉他,还是在创作一段新的舞蹈,还是在学习一个新的滑板技巧。摄像头可以使用原始图像的数据来判断你是否玩的是新的滑板技巧。或者如果你正在跳新的舞蹈,这套舞蹈动作有哪些以及如何将动作与音乐协调起来。

本文将搭建一个深度学习摄像头,它检测何时有鸟出现在摄像头的图像中,然后保存有鸟的照片。最终结果如下图所示:

 

 

深度学习相机检测到的包含鸟的图像

深度学习相机是机器学习全新平台的开始。

DeepLens拥有100 GFlops的用于推理的计算能力,这仅仅是一个令人感兴趣的深度学习相机必备的最低的计算能力。未来,这些设备将变得更加强大,并允许每秒推断数百张图像。

但是谁想等到未来呢?

可以智能推理的“笨”相机

我们不需要在相机里构建一个深度学习模型,而是在边缘使用一台“笨”电脑摄像头(比如9美元的树莓派),将其连接到网络摄像头上,然后通过WiFi发送图像。在权衡一点延迟的情况下,我们今天可以建立一个与DeepLens概念相同的原型,而且更便宜。

本文将构建一个这样的相机。用Python编写一个web服务器从树莓派发送图像到另一个计算机来推理或检测图像。

然后,另一台处理能力更强的计算机将使用“YOLO”神经网络结构来对输入图像进行检测,并且告诉我们摄像头中是否有鸟。

我们将从YOLO结构开始,因为它是最快的检测模型之一。而且它有一个对Tensorflow的接口,它易于安装而且可以在许多不同平台上运行。如果你使用本文用的微小模块,你也可以在CPU上检测,而不必在昂贵的GPU上。

回到我们的原型。如果摄像头检测到一只鸟,就保存该图像以供后续分析。

这仅仅是一个真正智能深度学习相机的开始,非常基础,但你必须从某处开始。让我们开始我们原型的第一个版本。

检测vs图像

 

检测并标记鸟儿

如前所述,DeepLens的成像被内置到计算机。因此,它可以进行基准级检测,并通过机载计算能力确定图像是否符合您的标准。

但是像树莓派,不一定具有进行实时机载检测所需的计算能力。因此,我们将使用另一台计算机来推断图像里有什么。

本文我使用一个简单的带摄像头和wifi接入(树莓派3和一个便宜的摄像头)的Linux计算机来作为服务器,该服务器用于深度学习做推理。

这很好,因为它允许连接很多便宜的外部摄像头,并在台式机上做所有的计算。

摄像头图像服务器栈

如果你不想使用树莓派摄像头,那么可以按照这些操作指南在树莓派上安装OpenCV 3,要按照说明书中获得最新版本本地安装OpenCV 3.3.1替代3.3.0版本。

旁注,为了在我的树莓派上用3.3.1,我得禁用CAROTENE。你可能也得这样做。

这之后,我们需要用Flask建立web服务器,这样我们可以从摄像头加载图像。

本文初步使用的是Miguel Grinberg的经典摄像头服务器代码,而且仅创建一个简单的JPEG,而不是一个视频:

如果你想使用树莓派摄像头,那么确保取消from camera_pi行的注释,而且注释掉from camera_opencv这一行。

你可以使用python3 app.py或gunicorn运行该服务器,与Miguel的帖子中提到的一样。

当没有请求时,它使用Miguel的经典摄像头管理机制来关闭摄像头,如果有多个机器推理摄像头采集的图像,也使用该管理机制管理线程。

一旦在树莓派上开始,首先找到它的IP地址,然后通过web浏览器访问,来测试并确保服务器工作。

该URL类似于http://192.168.1.4:5000/image.jpg:

加载树莓派的页面来确认图像服务器工作

从摄像头服务器提取图像并进行推理

现在,我们可以加载摄像头的当前图像。我们可以构建脚本来抓取这些图像并对它们进行推断。

我们将使用requests以及Darkflow,requests是用于从URL抓取文件的强大的Python库,Darkflow是在Tensorflow上YOLO模块的一个实现。

不幸的是,无法通过pip安装Darkflow,因此我们需要复制repo,然后在我们用于推理的计算机上,建立和安装它。

安装Darkflow repo后,需要下载一个要使用的YOLO版本的权重和模型。

本文,使用的是YOLO v2微小网络版,因为我想在比较慢的计算机上运行推理,该计算机使用机载CPU,而不是GPU。微小网络版比完整的YOLO v2模型精度低。

这之后,还需要在检测计算机上安装Pillow, numpy和OpenCV。

最后,编写代码以运行检测:

以上就是我们检测运行的非常基本的第一个版本。我们可以在控制台上看到树莓派正在检测什么,还可以看到看见的每只鸟保存在硬盘上。

之后,运行一个程序标记出YOLO在图像上检测出的鸟儿。

权衡:更多的误报还是更多的漏报?

需要注意,在选项字典中创建的threshold键。

这个阈值表明我们需要什么样的可信度,至少要有我们要找的东西。

为了测试,我将其设为0.1。但是这个低阈值会带来很多误报。更糟的是,我们用于检测的微小YOLO模块比真正的YOLO模块精度要低,因此我们会得到相当多的错误检测。

降低或提高阈值可以提高或降低模块的总输出,这取决于你想构建的内容。本文有更多的误报,但是我更希望得到更多的鸟的图像。你可能需要调整这些参数以满足你的需求。

等候鸟儿

让鸟进入我的喂食器花了很长时间。我想我要在后院里的喂食器中放几小时的食物。

但是这用了几天时间。松鼠不停地吃我放的食物,而且头几天我几乎没看见天上有一只鸟。

最后,我做了第二个喂食器,这个更明显而且远离地面。这次,我终于得到像文章开头的一些图像。

最后

和往常一样,本文的代码可以在Github上获取:https://github.com/burningion/poor-mans-deep-learning-camera

英文原文:https://www.makeartwithpython.com/blog/poor-mans-deep-learning-camera/

译者:张新英


http://www.ppmy.cn/news/845784.html

相关文章

[Micropython]TPYBoard v102 DIY照相机

摄像头(CAMERA或WEBCAM)又称为电脑相机、电脑眼、电子眼等,是一种视频输入设备,被广泛的运用于视频会议,安防系统 、图像采集系统、 环境监控 、工业现场过程控制 等方面。本实验用TPYBoard v102以及PTC06 串口摄像头模块DIY一个简易的照相机…

android自动照相机2.0,Koda相机app下载-Koda相机v2.0.12 安卓版-腾牛安卓网

Koda相机是一款强大的特效相机,能够为用户提供丰富而且免费的贴纸素材。现在只要简单几步就可以拍摄照片,有着超多特效滤镜供你选择。而且在当前APP里没有任何广告,给你带来更加优质的拍摄效果,不管是拍人还是拍景色都是不错的选择…

5. Cordova照相机和阶段性分析

阶段性分析 第一阶段,入门。 第二阶段,到这里自我感觉算是差不多基本入门了,接下来打算做一些常用API练习,就比如这个插件主要用于拍照或使用图库文件,还有一些文件操作,IO之类的,计划一周左右实…

linux下编写照相机应用程序,Linux下的图片编辑软件

首先还是先了解一下 Pinta 这款软件,Pinta 是一款 Pinta可在Ubuntu软件中心进行安装,但是版本已经很老旧了。 安装: ①稳定版本(建议使用这个版本,版本号:1.4): sudo add-apt-repository ppa:pinta-maintai…

如何快速打造淘宝爆款

打造网店单品爆款 网络零售行业自2003年快速发展以来已经经历了15个年头。八年来很多人都在研究该如何更好地做好网店推广工作。 在传统的市场营销概念中,大家对推广的理解相当简单,一般都认为是让我们的产品广而告之,让更多人知道我们的服…

STM32照相机(OV2640)

一、BMP编码简介 BMP(全称Bitmap)是Window操作系统中的标准图像文件格式,文件后缀名为“.bmp”,使用非常广。它采用位映射存储格式,除了图像深度可选以外,一般不采用其他任何压缩,因此&#xf…

Python+树莓派+YOLO打造一款人工智能照相机

亚马逊刚刚推出了DeepLens 。这是一款专门面向开发人员的全球首个支持深度学习的摄像机,它所使用的机器学习算法不仅可以检测物体活动和面部表情,而且还可以检测类似弹吉他等复杂的活动。虽然DeepLens还未正式上市,但智能摄像机的概念已经诞生…

软件工程——第13章软件项目管理知识点整理(完结)

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.管理的定义? 2.软件项目管理地位?(重要性) 3.软件项目管理过程从一组项目计划活动开始&#xff0c…