45元的WIFI摄像头应用之YOLO人体识别

2019-04-02 20:04:40 246点赞 2280收藏 120评论

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

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

45元的WIFI摄像头应用之YOLO人体识别

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

45元的WIFI摄像头应用之YOLO人体识别

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

45元的WIFI摄像头应用之YOLO人体识别

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

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

45元的WIFI摄像头应用之YOLO人体识别

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

一、YOLO简介

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

45元的WIFI摄像头应用之YOLO人体识别

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

45元的WIFI摄像头应用之YOLO人体识别

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

二、树莓派安装darknet-nnpack

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

git clone https://github.com/pjreddie/darknet
cd darknet
make

然后下载权重文件,权重文件分两个版本,一个是标准的,一个是轻量(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秒/张左右,虽然依旧做不了实时检测,但是考虑到无论是硬件成本,还是运行成本(电费),树莓派都是性价比之选。

45元的WIFI摄像头应用之YOLO人体识别

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

wget wget

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

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

45元的WIFI摄像头应用之YOLO人体识别

45元的WIFI摄像头应用之YOLO人体识别

运行速度不错,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摄像头模块:

零基础打造全屋智能控制系统 篇二十九:45元的WIFI摄像头模块,能玩出什么花样?本篇文章来自#春夏焕新你买了什么#话题征稿活动,参与投稿,大额金币等你拿哦!征稿活动正在进行中,>点击投稿casatift| 25 评论28 收藏160查看详情

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

45元的WIFI摄像头应用之YOLO人体识别

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

45元的WIFI摄像头应用之YOLO人体识别

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

45元的WIFI摄像头应用之YOLO人体识别

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

45元的WIFI摄像头应用之YOLO人体识别

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

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

展开 收起
120评论

  • 精彩
  • 最新
  • 我只看到楼主家卫生间都装了 [装大款]

    校验提示文案

    提交
    卫生间装摄像头?我还没这么丧心病狂。那个变量是在卫生间门关闭,热水器打开时,计算人体传感器被触发多少次用的。

    校验提示文案

    提交
    收起所有回复
  • 这个是截视频帧进行识别么?不是直接接视频进来?

    校验提示文案

    提交
    算力问题,算力足够就可以直接实时算视频了

    校验提示文案

    提交
    建议用FPGA做加速可以实时

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 我不太懂,识别的意义在哪?

    校验提示文案

    提交
    最终目的:隔壁老王

    校验提示文案

    提交
    这篇的应用还局限在识别人,配合人体传感器,当人体传感器检测和摄像头都检测到无人,就可以直接关灯,而之前单人体的话,就必须设置个2-5分钟的延迟,防止人没动就关灯。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 准确率太低,还不如直接opencv

    校验提示文案

    提交
    opencv都能够人脸识别了,做这个真大材小用了

    校验提示文案

    提交
    对的,人体人脸树莓派摄像头opencv都能搞定,哪用得上tensorflow,除非需要自己训练模型。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 人坐下,就是那种正对着桌子的那种情况可以检测出来嘛 [黑线]

    校验提示文案

    提交
    你桌底放个人体传感器就好了。。。

    校验提示文案

    提交
    收起所有回复
  • ha可以玩么

    校验提示文案

    提交
    可以啊,接口换成mqtt就好

    校验提示文案

    提交
    收起所有回复
  • jetson nano啊

    校验提示文案

    提交
    正准备搞,要自己玩训练,必须要个有点算力的玩意,jetson nano虽然弱鸡了点,但是性价比还不错

    校验提示文案

    提交
    收起所有回复
  • 海康威视的摄像头能做这个么?

    校验提示文案

    提交
    可以啊,用ffmpeg截RTSP流,然后分析就行

    校验提示文案

    提交
    收起所有回复
  • 打搅了,老哥,我按照您最初的教程,用PVE虚拟机装了最新版的树莓派Raspbian 桌面系统,安装了Domoticz 提示成功, 也可以看到有Domoticz的服务,不过就是打不开网页,安装apche 可以打开网页,端口不冲突,能帮忙分析一下是哪里的问题嘛

    校验提示文案

    提交
    你用的是啥硬件,干嘛要装raspbian,首选不是应该Ubuntu+docker么

    校验提示文案

    提交
    哈哈,主要是啥也不会,然后网上搜到的都是 树莓派的教程多一些,然后就用了Raspbian 桌面系统,硬件的话就是前阵子各种翻车的J1900,我再去试试Ubuntu +docker,多谢了 老哥 [赞]

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 老哥,打扰一下~在darknet-nnpack框架下yolov3配置总是失败,各种bug,缺少各种文件(已经按照教程重来了好几遍了),提示缺少libdarknet.so文件,电脑里也找不到,是怎么回事呢?说好的全程无坑【哭笑】

    校验提示文案

    提交
    你用的自带的PY?那个nnpack下有点问题,我也没试出来就放弃了。

    校验提示文案

    提交
    有替代方案吗?方便加一下QQ吗

    校验提示文案

    提交
    收起所有回复
  • 智能化最大问题是安全,除了客厅和餐厅,我其他地方不安装任何摄像头

    校验提示文案

    提交
    有故事的人 [惊喜] [惊喜] [惊喜] [惊喜]

    校验提示文案

    提交
    收起所有回复
  • 学校都开始整这玩意儿了,做大数据分析,学生上课专注多长时间,分神多长时间,写作多长时间,瞌睡多长时间都能分析出来,360度无死角监控,一整天观察学生的一举一动,想想都可怕。

    校验提示文案

    提交
    公司都对产线员工进行动作分析了

    校验提示文案

    提交
    收起所有回复
  • yolo属于多物体识别,还得靠摄像头,我司已研发出wifi人体探测,目前全国唯一,本月商用,价格便宜 [惊喜]

    校验提示文案

    提交
    哪家公司?????????????????????

    校验提示文案

    提交
    上海际遥,要来看看么 [惊喜]

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 成本太高了。松下有一款能探测静止人体的远红外阵列探测模块,也挺贵的。

    校验提示文案

    提交
    那款也不能直接用,还是要自己写算法来计算探测到的是人还是其他

    校验提示文案

    提交
    收起所有回复
  • 楼主厉害,专业。另外我想问下就是那么多收藏了的大佬,都看懂作者这么专业的东东么?我是一脸懵逼啊~

    校验提示文案

    提交
  • 太高端,完全不懂。

    校验提示文案

    提交
  • 要监控楼上那一楼扔垃圾,有没啥好的方案,这个困扰我好久了

    校验提示文案

    提交
  • 牛鸭!好好研究研究,争取弄个产品造福我等弱鸡 [装大款]

    校验提示文案

    提交
  • 很牛*的样子 ~

    校验提示文案

    提交
  • 牛*!!家里有人识别最终解决办法

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
2.2K
扫一下,分享更方便,购买更轻松