0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于树莓派的TensorFlow对象检测系统设计方案

科技观察员 来源:Robin Cole 作者:Robin Cole 2022-04-14 17:04 次阅读

前言

Home Assistant 中的 Tensorflow 集成目前存在问题,这是由于在多个平台上支持 Tensorflow 的复杂性而出现的。除非您对调试安装问题非常有信心,否则我不建议您尝试遵循本指南。另请注意,Hassbian 不再由 Home Assistant 维护。

概括

在本文中,我们将介绍如何设置 Home-Assistant 以使用 TensorFlow 执行对象检测,然后在相机图像上执行对象检测的过程。希望这将使您能够以最少的精力将尖端的 AI 技术投入到您的家庭自动化项目中的生产中。

TensorFlow是一种流行的开源机器学习框架,可用于图像处理中的广泛应用,特别是用于对象检测。家庭自动化项目中有许多对象检测应用,例如在摄像头馈送中定位车辆或宠物等对象,然后根据这些对象的存在执行操作(使用自动化)。Home-Assistant是一个流行的开源 Python 3 家庭自动化平台,可以在 Raspberry Pi 上运行。TensorFlow 对象检测在一些设置后可在 Home-Assistant 中使用,允许人们在他们的家庭自动化项目中开始使用对象检测,而无需大惊小怪。Home-Assistant 文档提供了开始使用 TensorFlow的说明对象检测,但所描述的过程比典型的家庭助手组件要复杂一些。如文档所述,此组件需要下载文件,在您的计算机上编译,并添加到 Home Assistant 配置目录。

家庭助理设置

我在 Raspberry Pi 4 上使用 Home-Assistant 版本 0.98 的 Hassbian 部署,但请注意,其他 Home-Assistant 部署的步骤应该相同(警告,Hassio 还不允许安装 TensorFlow,所以不要尝试它)。关于硬件的说明,TensorFlow 模型需要大约 1 GB 的 RAM,因此虽然可以在 RPI3 上运行,但体验太差了,我什至不建议尝试。作为最低要求,我推荐具有 》 2GB RAM 的 RPI4。

有关设置的更多信息,请参阅Hassbian 文档,但基本过程是:

将 Hassbian 磁盘映像闪存到 SD 卡(我使用Etcher )

将您的 Wifi 凭据添加到 SD 卡上的文本文件中

将 SD 卡插入您的 Pi

插入键盘并显示到 Pi 以监控安装过程

您可以通过连接到 Pi 的键盘来完成整个 TensorFlow 设置,但我建议通过 Hassbian 脚本安装Cloud9 Web IDE。此 IDE 允许您从网络上的任何计算机通过 Home-Assistant 前端执行 TensorFlow 设置过程。按照此处的说明安装 Cloud9 ,然后导航到http://hassbian.local:8181您现在可以使用面板 iframe在 Home-Assistant GUI 上显示 Cloud9 IDE ,通过添加到 Home-Assistant configuration.yaml文件进行配置(通过 Cloud9 IDE 编辑):

panel_iframe:

cloud9:

title: cloud9

icon: mdi:wrench

url: http://hassbian.local:8181/ide.html

编辑文件后,最好使用配置验证工具。要使用它,从侧面板,配置 -》 常规 -》 检查配置(在配置验证下))。

pYYBAGJX48SAAYXCAAEAKk9LnZE673.png

如果您从配置检查工具中获得确定,则需要重新启动 Home-Assistant 以使更改生效(从侧面板配置 -》 常规 -》 重新启动(在服务器管理下))。重新启动时,您应该看到以下内容:

poYBAGJX436AQPWnAALD6_Y0zG0200.png

TensorFlow 设置
确保您正在运行 Home-Assistant 的最新版本。我建议您阅读TensorFlow 组件文档以了解设置过程,但在本指南中我们跳过了几个步骤,因为我在 GitHub 上提供了所需的代码。

第 1 步:安装 TensorFlow

我们需要 TensorFlow 可用于 Home-Assistant。从 Cloud9 IDE 中的命令行:

sudo apt-get install libatlas-base-dev libopenjp2-7 libtiff5

从 Pi 切换到 homeassistant 用户 ->sudo -u homeassistant -H -s

激活homeassistant python环境->cd /srv/homeassistant/然后source bin/activate

从 pypi -> 安装 tensorflow pip3 install tensorflow==1.13.2(检查当前版本要求)

第 2 步:从我的 GitHub 获取 TensorFlow 需要的文件

在任何计算机上,导航到:https ://github.com/robmarkcole/tensorflow_files_for_home_assistant_component并下载 ZIP 文件或克隆存储库。使用 Cloud9 IDE 将tensorflow/object_detection存储库中的文件夹复制到 Home-Assistant 的配置文件夹中。生成的文件夹结构如图 2 所示。

第 3 步:为目标检测选择合适的模型

型号选择
TensorFlow“模型”是具有扩展名的二进制文件,.pb其中包含 TensorFlow 将用于执行对象检测的神经网络的权重。这是您无需担心的细节,但需要的是选择合适的模型并将其放置在配置目录中。正如组件文档所建议的那样,互联网上有一系列可用的模型,或者您甚至可以创建自己的模型。一般来说,模型的准确性和速度之间需要权衡取舍。由于 Raspberry Pi 的 CPU 和 RAM 有限,我们应该选择轻量级的型号,例如为手机设计的型号。TensorFlow 模型动物园提供可下载模型的列表,因此请导航至动物园自述文件并选择模型。在这里,我们将遵循文档建议并选择ssd_mobilenet_v2_coco模型。从命令行,并注意到我们仍在使用homeassistant用户配置文件:

TENSORFLOW_DIR="/home/homeassistant/c9workspace/homeassistant/tensorflow"
cd $TENSORFLOW_DIR
curl -OL http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz
tar -xzvf ssd_mobilenet_v2_coco_2018_03_29.tar.gz

请注意,我们设置环境变量TENSORFLOW_DIR以确保将下载的文件放在本文中配置说明所需的位置。现在我们有一个可用的模型文件,我们可以配置 TensorFlow 组件。

TensorFlow 组件配置
您将需要一个相机源来提供图像。我只是设置了一个local_file 相机,但您可以使用任何相机源。请注意您的相机的 entity_id(我的是camera.local_file)并将以下内容添加到您的 configuration.yaml 文件中:

image_processing:
- platform: tensorflow
scan_interval: 20000
source:
- entity_id: camera.local_file
model:
graph: /home/homeassistant/c9workspace/homeassistant/tensorflow/ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb

再次检查您的配置更改是否有效并重新启动 Home-Assistant。

TensorFlow 组件使用
现在是有趣的部分,使用 TensorFlow 组件!请注意,在重新启动时 Home-Assistant 将在其日志中发出有关未安装 OpenCV 的警告,您可以忽略这一点,因为 TensorFlow 可以改用 Pillow。另请注意,我们进行了配置scan_interval: 20000,这意味着 TensorFlow 图像处理不会自动执行(默认每 10 秒一次),而是仅在我们通过调用scan服务触发它时执行,您可以从 Home-Assistant 前端的服务开发人员工具中执行此操作. 下图向您展示了 TensorFlow 组件如何显示其结果:

poYBAGJX43CAAO7OAANAQ_gJ7QE401.png

您现在可以在 Home-Assistant自动化中使用对象检测数据。Home-Assistant论坛是获取自动化想法的好地方,请查看。

可能遇到的故障排除

当我使用 Tensorflow 时,Home-Assistant 崩溃了,为什么?您可能没有足够的可用内存,因为模型需要约 1 GB 的 RAM。终止 pi 上的一些进程,然后重试

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测系统
    +关注

    关注

    3

    文章

    954

    浏览量

    43029
  • 树莓派
    +关注

    关注

    116

    文章

    1706

    浏览量

    105610
收藏 人收藏

    评论

    相关推荐

    基于树莓设计的RFID门禁系统

    本项目使用树莓设计门禁或设备的访问控制系统系统根据用户列表检查RFID标签,允许拥有授权RFID标签的指定成员进入室内。系统包括一个US
    的头像 发表于 04-01 14:50 6829次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>设计的RFID门禁<b class='flag-5'>系统</b>

    树莓防占位系统

    设计内容为学校图书馆设计一个防止违规占座系统,实现通过若干条件的判断,来判断当前作为是否被违规占座。功能描述结合树莓,利用压力传感器分别检测桌面和椅面是否有物体(书),再通过人体红外
    发表于 07-21 09:16

    请问我这个树莓高清视频直播服务器设计方案可行吗?

    项目描述:摄像机拍摄1080p高清视频,编码成h.264格式后,通过网线传输给路由器,客户端通过rtsp地址观看视频 暂定方案:高清视频经FPGA编码成h.264格式,传给树莓树莓
    发表于 06-20 03:12

    树莓方案集锦

    树莓方案集锦
    发表于 02-09 10:12

    树莓装机教程

    树莓装机教程树莓装机教程树莓装机教程树莓
    发表于 11-25 10:14 52次下载

    树莓3硬件配置_树莓3都能装什么系统_树莓3系统安装教程

    树莓3一直颇受电子发烧友的青睐,这篇文章主要讨论的就是树莓3的硬件配置、树莓3都能装什么
    发表于 12-08 14:36 2.6w次阅读

    树莓3系统安装介绍_Noobs进行树莓3系统安装_Noobs进行树莓3系统恢复

    这篇文章主要和大家一起来讨论一下关于树莓3的系统安装是什么,基于Noobs的树莓3的系统安装
    发表于 12-08 15:02 5958次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>3<b class='flag-5'>系统</b>安装介绍_Noobs进行<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3<b class='flag-5'>系统</b>安装_Noobs进行<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3<b class='flag-5'>系统</b>恢复

    树莓是什么树莓的简单介绍

    要想玩转树莓,首先得知道树莓是什么。在本节中,作者将带领大家揭开树莓的神秘面纱,了解
    发表于 05-15 18:09 30次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的简单介绍

    树莓的学习设计方案合集

    本文档的主要内容详细介绍的是树莓的学习设计方案合集免费下载包括了:AMG8833 8x8红外热像仪传感器应用附PCB驱动源码,Arduino与树莓
    发表于 03-11 08:00 12次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>的学习<b class='flag-5'>设计方案</b>合集

    树莓树莓4B新手篇:安装官网Raspbian Buster系统及基础配置

    目录1、前言2、树莓4B有什么特色?3、树莓新手准备4、烧录Raspbian Buster系统到Micro SD卡开启SSH及配置无线连
    发表于 11-06 18:21 26次下载
    【<b class='flag-5'>树莓</b><b class='flag-5'>派</b>】<b class='flag-5'>树莓</b><b class='flag-5'>派</b>4B新手篇:安装官网Raspbian Buster<b class='flag-5'>系统</b>及基础配置

    距离检测报警使用树莓Pico

    电子发烧友网站提供《距离检测报警使用树莓Pico.zip》资料免费下载
    发表于 11-09 11:49 0次下载
    距离<b class='flag-5'>检测</b>报警使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>Pico

    TensorFlow手势识别树莓开源

    电子发烧友网站提供《TensorFlow手势识别树莓开源.zip》资料免费下载
    发表于 11-09 09:27 1次下载
    <b class='flag-5'>TensorFlow</b>手势识别<b class='flag-5'>树莓</b><b class='flag-5'>派</b>开源

    使用Home Assistant进行TensorFlow对象检测

    电子发烧友网站提供《使用Home Assistant进行TensorFlow对象检测.zip》资料免费下载
    发表于 12-14 09:30 0次下载
    使用Home Assistant进行<b class='flag-5'>TensorFlow</b><b class='flag-5'>对象</b><b class='flag-5'>检测</b>

    树莓使用KiCad设计方案

    树莓官方使用KiCad、资助KiCad,而KiCad开发团队也支持树莓,具体行动是KiCad也推出Raspberry Pi OS适用的版本,只要是基于代号Bulleye的Debia
    发表于 01-03 12:47 1834次阅读

    基于树莓的机器人设计方案

    准备树莓和 CRICKIT Hat 1、如果你已经安装了 CRICKIT Hat 的 40 针连接器的转接端子,请将其取下。 如果我们希望按钮引线适合而不被后面板压扁,我们需要帽子以
    发表于 10-19 12:31 689次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的机器人<b class='flag-5'>设计方案</b>