『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 8779|回复: 9

[技术探讨] 我的基于摄像头的人体识别方案

[复制链接]

4

主题

14

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
金钱
288
HASS币
0
发表于 2021-5-23 14:16:29 | 显示全部楼层 |阅读模式
我是HA新手来的,还没熟悉HA插件的规则,所以代码是C++写的一个独立程序。但是人体识别的方案是可行且通用的,欢迎大神们把它改造成HA插件,更欢迎大神们能进行优化。
全文无代码。对于有同等技术能力的坛友来说,代码量很小、也很易懂,直接看源码就好了。


源码地址:https://github.com/LiangZuoting/PersonMonitor.git

我的博文介绍

相比起人体传感器,基于摄像头的人体检测优点明显:
能区分人体和其它移动物体;
能检测静止物体;
扩展性高。你可以引入姿态识别,通过摄像头完成更多、更细分的场景任务。

废话不多说,简单介绍下项目。

开发环境:
树莓派 4B,4G 版。实测采集1280 * 720 分辨率的图像内存占用在 200 MB 左右,所以低内存的也一样用。

Paddle-Lite 深度学习库。本方案的大脑。这个是百度旗下的一个开源 repo,专为树莓派等较低性能的硬件设计过的,实测识别一次在 100ms 内,完全能接受。

摄像头,我就不放链接了,有带货嫌疑。但是市面上 USB 接口的带夜视能力的摄像头极其稀少,我也是淘了好久才在万能的 1688 上找到的。大家可自行以 “USB 夜视 摄像头”做关键字搜索。为什么一定要 USB ?有线才能保证低延时。通过 RTSP 传输的网络摄像头,天然的带有少许延时,又特别容易受网络波动影响。
具体的采集,我直接用的 OpenCV。还被 OpenCV 小坑了一下,因为 OpenCV 的采集会默认缓存几帧,为了降低发热我已经把帧率降低到 2-4帧/s 了,几帧的缓存意味着秒级的延时,简直不能接受。

以上。


其实比起人体传感器,缺点也是很多:
功耗高;
门槛高;
花钱多。

一句话,投入的成本高出了很多。但是从我个人角度来讲,基于摄像头(深度学习)的场景化解决方案,应该才是最正确的路。


回复

使用道具 举报

0

主题

40

帖子

321

积分

中级会员

Rank: 3Rank: 3

积分
321
金钱
281
HASS币
0
发表于 2021-10-20 12:28:26 | 显示全部楼层
能用网络摄像头吗?
回复

使用道具 举报

7

主题

193

帖子

1551

积分

金牌会员

Rank: 6Rank: 6

积分
1551
金钱
1358
HASS币
0
发表于 2021-10-24 10:18:25 来自手机 | 显示全部楼层
18889766360 发表于 2021-10-20 12:28
能用网络摄像头吗?

网络摄像头可考虑frigate NVR方案
回复

使用道具 举报

16

主题

222

帖子

1717

积分

金牌会员

Rank: 6Rank: 6

积分
1717
金钱
1495
HASS币
0
发表于 2021-10-24 19:57:52 | 显示全部楼层
能不能写个具体的方法?难道是搬运?
回复

使用道具 举报

4

主题

14

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
金钱
288
HASS币
0
 楼主| 发表于 2021-11-26 10:47:01 | 显示全部楼层
mengyu 发表于 2021-10-24 19:57
能不能写个具体的方法?难道是搬运?

这个吧,会者不难,难者不会。。。
对懂 C++、opencv 的人来说,这个项目一两天就搞出来了。比较我自己手写的 C++ 代码也才 200 来行,其它就是调用库。对这部分人吧,直接看源码更快。
对不懂的人呢,您说我该从哪说起呢。。。
回复

使用道具 举报

4

主题

14

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
金钱
288
HASS币
0
 楼主| 发表于 2021-11-26 10:49:34 | 显示全部楼层
18889766360 发表于 2021-10-20 12:28
能用网络摄像头吗?

摄像头采集我用的 opencv,支持 rtsp 摄像头。至于其它封闭式的监控摄像头,我就不知道了。
不过要考虑延时问题,我就是从 rtsp 摄像头切换到有线摄像头的。
回复

使用道具 举报

0

主题

14

帖子

336

积分

中级会员

Rank: 3Rank: 3

积分
336
金钱
322
HASS币
0
发表于 2021-11-26 13:52:55 | 显示全部楼层
大神搞下K210的板子
回复

使用道具 举报

4

主题

14

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
金钱
288
HASS币
0
 楼主| 发表于 2021-11-26 14:26:49 | 显示全部楼层
bc12358 发表于 2021-11-26 13:52
大神搞下K210的板子

这误会大了,我对嵌入式开发一窍不通
回复

使用道具 举报

26

主题

150

帖子

1275

积分

金牌会员

Rank: 6Rank: 6

积分
1275
金钱
1120
HASS币
20
发表于 2022-1-18 15:10:08 | 显示全部楼层
问一下大佬,看了下那款摄像头,是不能左右移动的,需要尽可能的放在一个观全局的位置,但是由于是USB口,要么就只能挂个树莓派,但是多角度多放2个的话,每个摄像头都要配个派(鉴于目前派的价格实在虚高成本着实不低啊),有没有啥办法,能不能通过网线传输呢?
回复

使用道具 举报

4

主题

14

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
金钱
288
HASS币
0
 楼主| 发表于 2022-1-19 11:05:09 | 显示全部楼层
hass943 发表于 2022-1-18 15:10
问一下大佬,看了下那款摄像头,是不能左右移动的,需要尽可能的放在一个观全局的位置,但是由于是USB口, ...

1. 树莓派有 4 个 USB 口的吧?我隐约记得我现在的方案(帧率、分辨率)CPU 占比 40% 左右?所以没必要一个摄像头一个 pi。如果实时性没那么高的话,可以通过降低帧率等手段进一步减小负荷,应该还可以再多带一两个摄像头。
2. 有可替换的网络摄像头,rtsp 传输,opencv 同样支持,但是延时肯定会比 USB 这种有线的高一点点,稳定性也会差点。你 1688 或淘宝上搜下应该能找到,我找不到我之前的订单纪录了。
3. 关于我为什么用这种固定角度摄像头,就是要输出参照物的固定坐标。比如客厅和餐厅的分界线,客厅和阳台的分界线。这样后期就可以扩展到如下效果:当人体坐标落在客厅区域时,打开客厅灯,关掉其它区域的灯;当人体坐标非常靠近阳台门时,就可以假设此人要进入阳台,提前打开阳台灯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-10 13:13 , Processed in 0.053748 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表