yolo 多摄像头_45元的WIFI摄像头应用之YOLO人体识别联动智能家居

2023-05-16

如果大家对智能家居比较感兴趣的话,一定知道阻碍智能家居自动化发展的一个大问题就是,房间里有没有人,如果有人,那人究竟在做些什么,系统又该如何调整环境的照明,温度甚至安防。

在很长的时间里,我们检测人体都依靠两类设备,一类是热释电红外传感器,例如Aqara/小米人体传感器:

说明里面已经说的很清楚了,检测人或宠物移动,所以不动肯定是检测不到的,很多人都把这锅扔给小米背,但实际上,不管是哪个品牌,都做不到静止检测。还有一类叫做微波传感器,例如最近在智能家居玩家群里讨论的很热烈的静止人体传感器:

这个传感器号称可以检测静止人体,不过在企业官方的文档中明确写道:动态探测距离 6-8 米,静态探测距离最大2 米; 而其静态探测是检测人的微小动作,例如呼吸啥的。并且安装位置要与人体平行:

大家其实也可以看出来,这个号称静止人体检测的玩意,实际上也就是个动作传感器,只是灵敏度非常高罢了。先不说安装问题,微波传感器的灵敏度高了之后,电风扇,空调,任何轻微动作都可能触传感器动作。

除了这两种外,本站值友@blindlight正在实验利用无线信号来检测人体,参考文档:

大概意思是用一圈WIFI设备把房间围起来,然后实时监测各个节点的WIFI信号变化,来推断哪里有人。听上去不是啥难事,但是实际上应用起来还是要动些脑筋,我表示能看懂意思,但是抱歉,我做不来,相信看文的各位大部分人也搞不定,所以这里介绍一个大家都能玩的玩意——YOLO。

一、YOLO简介

大道理不说,其实我也不懂,这里大家只要知道YOLO的全称是You only look once,也就是你就看了一眼,看了一眼怎么了呢,看了眼就知道是什么了,这是一个基于深度学习方法的端到端实时目标检测系统。其主要特点一是快,二是安装使用简单,在ubuntu下只需要4条命令就可以开始工作。以下片段来自CSDN @泉伟

不过根据他文中的介绍,他使用的配置为1080Ti,使用YOLO v3原始权重,Resize以后的图片大小为608*608,检测速度可以达到20帧每秒。当然,如果使用tiny权重的话速度会快很多。除了人之外,YOLO还能检测其他常见物体,例如宠物:

不过说实话,如果只是检测有没有人的话,即使不用1080TI,开一台PC我都觉得有些浪费。所以这篇的主旨其实是利用树莓派来实现静态图片的检测。

二、树莓派安装darknet-nnpack

之前说了,如果在ubuntu上安装YOLO的话只需要3条命令:

git clone https://github.com/pjreddie/darknetcd darknetmake

然后下载权重文件,权重文件分两个版本,一个是标准的,一个是轻量(Tiny)的:

wget https://pjreddie.com/media/files/yolov3.weights(标准版)wget wget https://pjreddie.com/media/files/yolov3-tiny.weights(TINY版)

一般来说,标准版的检测准确率会高很多,但是非常非常慢(2400G单线程虚拟机下检测一张大约要30秒+),没有GPU加速是没有应用价值的,所以日常CPU使用都使用TINY版的权重(2400G单线程虚拟机下检测一张大约要2秒+),虽然准确率差了一些,但是找找人啊,猫狗也已经足够。但是标准版的Dakrnet在树莓派3b上面跑的话即使是tiny权重,也要40秒左右一张,显然是没有任何实用价值的。所以如果在树莓派上运行的话,我们需要针对无GPU并且ARM芯片进行优化过的darknet-nnpack。通过它来运行YOLO,我们能将tiny的识别速度提高到1秒/张左右,虽然依旧做不了实时检测,但是考虑到无论是硬件成本,还是运行成本(电费),树莓派都是性价比之选。

当然,根据此表,X86平台使用darknet-nnpack也能获得非常不错的优化速度。而安装只要参照darknet-nnpack的github页面一步步做下去就好,这里就不再复制粘帖了,全程无坑,而在下载weights文件时我们只要下载tiny版的就好:

wget wget https://pjreddie.com/media/files/yolov3-tiny.weights

全部完成后我们可以利用自带图片测试下:

./darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights data/person.jpg

运行速度不错,1.1秒就完成了识别,只是load weights还需要3-4秒,总体上在5秒左右。这里值得说明的是,命令的默认参数是输出准确率超过25%的物体,我们可以根据自身环境来调整参数:

./darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights data/person.jpg -thresh 0.1

例如这个就是输出准确率10%以上的物体。

三、接入摄像头

这里我使用的是上一篇原创提到的45元的ESP32-CAM摄像头模块。当然,你要是其他摄像头,只要能获取到静态JPG文件也都可以使用,这个摄像头没有夜视,视角也比较小,如果有大范围以及夜间检测需求的话其实并不是很合适。不过这里要提醒的是,红外补光摄得的黑白图像YOLO的识别率会进一步降低。调整好摄像头角度,确保人在厨房的每个角落,YOLO都能把人找出来。

这个摄像头最大的好处是,可以直接通过http获取JPG静态图像,所以我这做了个批处理文件,首先是获取静态影像到指定文件夹,然后运行detector来进行识别:

当然,这样只是跑程序识别,结果并不会输出到其他系统,所以我又拼拼凑凑搞了个PY文件,对结果进行分析,数输出结果里面有几个person:

然后将person数量传送给domoticz变量:

最后就是应用了,因为不是实时检测,所以用来自动化开灯啥的是不可能了,但是配合小米红外做到更快的自动关灯还是非常方便的,例如原先我们都是设定人体传感器检测到几分钟后无人关灯,现在就可以配合这个变量,在人体传感器检测到无人时去查看摄像头检测到的结果,如果是0就直接关灯,不用再等待几分钟。

当然,本篇的YOLO只是利用其现成的库做的简单应用,并没有完全展示出YOLO的威力。深入应用的话可以自行训练得到模型,来判断更多的内容,例如你是在看电视,玩手机,还是睡觉等等。或者垃圾倒没倒,碗有没有洗啥的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

yolo 多摄像头_45元的WIFI摄像头应用之YOLO人体识别联动智能家居 的相关文章

随机推荐

  • 网络热门知识点,Linux内核——网络协议栈基本知识

    1 网络协议分层 按照分层的思想把网络协议栈进行分层主要有以下好处 xff1a 1 促进标准化工作 xff0c 允许各个供应商进行开发 2 各层间相互独立 xff0c 把网络操作分成低复杂单元 3 灵活性好 xff0c 某一层变化不会影响到
  • js原生的ajax请求,Javascript封装的原生Ajax请求

    由于工作需要长期使用Ajax 一个页面重复的AJAX请求太多 于是封装起来 只需要编写回调函数 使用方法 1 ajaxrequest 函数执行准备的参数 1 请求地址2 发送数据字符串拼接3 type值可选get post4 回调函数名称
  • 服务器ibmc无法加载js文件,weUI应用之JS常用信息提示弹层的封装

    weUI应用 xff0c 自己用JS封装了几个常用的信息提示的弹层 测试页面的代码在后面有贴出 几个弹层如下图 HTML页面代码 xff1a weUI test 测试 function 提示弹层 xff0c 取消关闭 xff0c 确定做相应
  • 学习ASP.NET Core Razor 编程系列八——并发处理

    学习ASP NET Core Razor 编程系列目录 学习ASP NET Core Razor 编程系列一 学习ASP NET Core Razor 编程系列二 添加一个实体 学习ASP NET Core Razor 编程系列三 创建数据
  • putty和ssh远程登陆报错的解决方法

    putty和ssh远程登陆报错的解决方法 问题 xff1a 使用putty登录linux报错 xff1a server unexpectedly closed network connection 在另一台Linux服务器使用ssh登录 x
  • 数据归一化和两种常用的归一化方法

    数据标准化 xff08 归一化 xff09 处理是数据挖掘的一项基础工作 xff0c 不同评价指标往往具有不同的量纲和量纲单位 xff0c 这样的情况会影响到数据分析的结果 xff0c 为了消除指标之间的量纲影响 xff0c 需要进行数据标
  • 使用 Beautiful Soup 解析网页内容

    安装Beautiful Soup Beautiful Soup是一个Python的HTML解析框架 xff0c 我们可以利用它方便的处理HTML和XML文档 Beautiful Soup有3和4两个版本 xff0c 目前3已经停止开发 所以
  • XIV(4)--Flash caching

    1 xff0c Flash Cache简介 Flash cache 本身是Facebook的一个开源项目 xff0c xff08 准确的说是一个Linux的模块 xff09 xff0c 可以动态加载 Flashcache通过在文件系统 xf
  • 在Google Earth中显示中国城市和机场(动态生成KML的Demo)

    受到上次写的 在Google Earth上显示等高线 镜像1 镜像2 的启发 xff0c 写了个动态实现在Google Earth中显示中国城市和机场 xff0c 效果见最下面的图 也可以打开Google Earth后 xff0c 在临时目
  • ros 开源物体检测_ROS下物体检测和识别功能(ROS下find_object_2d)

    效果 xff1a 安装步骤 xff1a ROS Kinetic sudo apt get install ros kinetic find object 2d cd catkin ws git clone https github com
  • 安装 Ubuntu 20.04 分辨率显示不全解决方案。

    确实这个 安装20 04 版本的ubuntu 存在分辨率的缺陷 xff0c 旧版本不会出现这个现象 既然问题出现了那肯定有方案去解决的 xff0c 不需要在浪费时间去下载镜像了 解决方案 xff1a 1 win 43 鼠标左键 2 xran
  • 嵌入式工程师必读100本专业书籍

    很高兴这么多朋友阅读本篇嵌入式干货书籍汇总 xff0c 编者通过大数据调查 xff0c 经调查汇总如下 xff0c 希望对想要从事嵌入式行业或者已经是行业人士的朋友有所帮助 xff01 在调查过程中得到华清远见 星创客精英训练营的大力支持
  • 程序员工作中的一些建议

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 尽早地添加日志记录和错误处理 在开发新系统时 xff0c 我做的第一件事就是添加日志和错误处理 xff0c 因为这两者从一开始就非常有用 如果系统不能照常工作 xff0
  • VINS(七)estimator_node 数据对齐 imu预积分 vision

    首先通过vins estimator mode监听几个Topic xff08 频率2000Hz xff09 xff0c 将imu数据 xff0c feature数据 xff0c raw image数据 xff08 用于回环检测 xff09
  • C++多态性的总结

    抽空总结下对一直以来对C 43 43 多态性的一点个人理解 1 什么叫早绑定和晚绑定 早绑定指在对象声明的时候就和它的类型建立了关联 晚绑定是指代码在运行时再检查对象是否提供了我们所需要的方法和属性 静态关联 早绑定 和动态关联 晚绑定 2
  • 解决不能正常访问workerman的问题

    问题描述 xff1a 在阿里云ECS上部署了workerman的应用 xff08 ECS是专有网络 xff09 xff0c 在ECS安全组里已经允许workerman需要的全部端口 xff0c 但是外网一直不能正常打开 xff08 注 xf
  • 谈谈技术面试

    只要是招一个技术人员 xff0c 不管是初级的程序员还是高级软件工程师 xff0c 技术上的考核都必不可少 很荣幸作为面试官参与过公司的一些技术面试 xff0c 从中也体会到了一些东西 首先 xff0c 我觉得技术面试是需要讲究技巧的 xf
  • H3C交换机配置详解

    一 用户配置 lt H3C gt system view H3C super password H3C 设置用户分级密码 H3C undo super password 删除用户分级密码 H3C localuser bigheap 1234
  • PCL—综述—三维图像处理

    点云模型与三维信息 三维图像是一种特殊的信息表达形式 xff0c 其特征是表达的空间中三个维度的数据 和二维图像相比 xff0c 三维图像借助第三个维度的信息 xff0c 可以实现天然的物体 背景解耦 除此之外 xff0c 对于视觉测量来说
  • yolo 多摄像头_45元的WIFI摄像头应用之YOLO人体识别联动智能家居

    如果大家对智能家居比较感兴趣的话 xff0c 一定知道阻碍智能家居自动化发展的一个大问题就是 xff0c 房间里有没有人 xff0c 如果有人 xff0c 那人究竟在做些什么 xff0c 系统又该如何调整环境的照明 xff0c 温度甚至安防