家里装了个海康的摄像头,想用于区域人数识别开关灯等操作,我目前的操作流程为
海康设置区域入侵检测,当区域检测事件触发后,开灯 然后每 10 秒一次使用 Python 调用摄像头拍照,然后 OpenCV 进行拍照后的图片裁剪 然后使用 yolo 进行人数统计,当区域人数为 0 后进行关灯操作
流程已经被我调通了,但就是速度实在是有点慢, 事件触发到图片裁剪完成还好,基本也就 1 秒多 使用 yolo 进行图片识别的时候,基本要 10 秒才能有反馈结果 而且进行识别的时候,CPU 基本跑到 7 80 (一台 2014 的 macmini 8+256 )
想请大佬指点一点,有没有什么优化的方案,能提高识别速度
备注:使用过百度的 AI 识别,确实速度能提升到 1-2 秒识别出结果(但毕竟是家里的图片,不想传到网络识别)
目前在考虑是否单独用个机器进行这项人体识别操作(主要 macmini 还挂有其他任务),如果单独用机器跑这个人体识别,应该用什么机器呢(个人对硬件确实小白)
请大佬们指教!
1
murmur 2022-02-16 09:38:08 +08:00 1
瞎折腾,本来智能家居是简化操作改善体验的,你这一通操作下来折腾个半死效果可能还不好
如果是人来开灯直接用人体传感器,然后各种联动,还要什么摄像头 如果是监测比如有 3 个人以上开灯,我建议放弃 |
2
czfy 2022-02-16 09:39:16 +08:00
为什么要 “区域人数识别开关灯” ?
|
5
czfy 2022-02-16 09:48:37 +08:00
我问的是 “为什么”...就是识别开关灯用来干什么
|
6
murmur 2022-02-16 09:48:42 +08:00
|
7
root99527 2022-02-16 09:50:03 +08:00
可优化的点太多了。
python->C++ inference 框架替换 模型压缩 |
8
neroxps 2022-02-16 09:50:43 +08:00
emmm 智能家居通病,开灯容易关灯难。
人在哪里,人想干嘛,智障家居终极难题。 |
9
murmur 2022-02-16 09:51:03 +08:00
我大概知道你什么问题了,你怕的是人体传感器检测不到静止的人是把,这的却比较麻烦
|
10
murmur 2022-02-16 09:51:54 +08:00
testv 那种玩法是在每个椅子的坐垫下面放了压力传感器,这样无论是人动还是人坐凳子上都能检测到人在
|
11
neroxps 2022-02-16 09:52:33 +08:00
@murmur #6 用过就知道这些都是问题~楼主要做到人走灯灭,而不是人走灯等几分钟灯才灭。
也不是人久坐不动灯又灭,即使是存在传感器,也有很多 bug ,风扇 阳光 都是干扰项~ 甚至还有人研究高精雷达,算法监听心跳。卷的很。 |
13
v2410117 OP @murmur 绿米那个我也看过,价格贵不说,关键范围不大,我一个摄像头可以看到入户加整个客厅+餐厅,所以才考虑这种人体识别
|
14
whypool 2022-02-16 09:56:07 +08:00 via Android 1
这玩意不就是几十块钱的红外感应开关?
|
15
neroxps 2022-02-16 09:56:30 +08:00 1
曾经我还疯狂的想过使用使用传感器装在门框计算人数。
尝试过红外对射(安装难度大) vl53l0x 激光测距(需要 2 组传感器) ST 做的 demo ,开源 &ab_channel=STMicroelectronics 激光测距也一样逃不过阳光干扰,地砖反射等干扰问题。最终躺平。关灯就用语音场景。 |
17
yaoyao1128 2022-02-16 09:57:30 +08:00 via iPhone
个人的建议是 别用这个逻辑进行 过于麻烦 以及家里用不太实用……
感觉可以考虑的方案 人在传感器 人体传感器 人体传感器 判断无人后 画面识别完全无变动超过多久自动关灯 |
19
v2410117 OP @yaoyao1128 对的,我就是这样考虑的,当无人后画面识别超过 2-3 次无人,就关灯,就不再进行检测了
|
20
dcty 2022-02-16 10:00:16 +08:00 2
一看标题以为这都进化到“本地人”识别了
|
22
v2410117 OP @neroxps 我其实装摄像头是为了家里小孩,然后在网上看到有人用摄像头这样操作,所以想试试,做出来的效果也算可以(除了识别速度)
|
23
i979491586 2022-02-16 10:02:44 +08:00
我也想做一套这个系统,我目前想法是,用一个类似 airtag 大小的信号发射器放到拖鞋里(入户要换鞋),然后每个房间放置 3 个接收器,3 个接收器数据进行计算,判断人的位置,位置结果在 homeassistant 实现联动,你觉得这个方案怎么样?
|
24
neroxps 2022-02-16 10:04:39 +08:00
@v2410117 #22 yolo 我搞过,后来发现至少得搞个 N 卡显卡才能爽~或者更换支持 AI 加速的嵌入式机器,投入太大没兴趣了。
|
25
v2410117 OP @i979491586 想法可以,但是实行很难,除非是只有你一个人住,而且有强制换拖鞋的习惯,不然但凡多一个人,习惯不同,就 gg 了
|
27
neroxps 2022-02-16 10:09:43 +08:00
@i979491586 #23 有这样的方案。https://espresense.com/
但是 esp32 蓝牙和 wifi 一起工作的时候信号飘的很 https://github.com/dalehumby/ESPHome-Apple-Watch-detection iPhone 和 AppleWatch 会一直广播一个蓝牙信标 https://github.com/furiousMAC/continuity/blob/master/messages/nearby_info.md 通过这个信标能判断手表是带着,还是充电。但我实际测试 esp32 蓝牙和 wifi 一起工作的时候,信号飘的很,有时候手表放 esp32 隔壁信号依然超过阈值,不靠谱。 用笔记本外接 USB 蓝牙接收器就很好,可以直接判断距离都行。 |
28
yaoyao1128 2022-02-16 10:11:04 +08:00 via iPhone
@v2410117 重点在于无人检测 个人感觉用传感器作为判断标准 如果传感器认为有人就不需要跑图片的识别了 之后识别图片 识别的时候也没有太大必要考虑从人数入手 直接根据是否存在画面变动就可以 如果家里有宠物的话加一个高度判断就好了
|
29
v2410117 OP @yaoyao1128 对哈,你这个话倒是提醒我了,直接使用图片对比,2 次图片没有变化的情况下,就无人,这个对比可比识别来的快多了
|
32
ldyisbest 2022-02-16 10:19:02 +08:00
试试 nanodet 这个很快
|
34
v2410117 OP @neroxps 为啥海康摄像头几百块钱,它就能做到实时监控并且发出警告呢,是因为自家设计芯片啥的么,感觉网上没有那种低成本精度又高的方案
|
35
RickyC 2022-02-16 10:21:16 +08:00
人体识别。好像从未听说过。只能面容识别吧?
|
36
InvincibleDream 2022-02-16 10:25:42 +08:00
要不搞个加速棒试试? https://coral.ai/products/accelerator/
|
38
xylxAdai 2022-02-16 10:30:30 +08:00
人在传感器。。可以看看。
|
39
kssdxw 2022-02-16 10:36:22 +08:00
可以试试 OpenPose 人体姿态识别,有 cpu 方案我拿我的 3800X 测试 1080P 视频能做到十几帧。
|
40
ykk 2022-02-16 10:36:24 +08:00
cpu 跑的慢很正常,换体量更小的模型,转 onnx ,优化代码,IO 和 process 并行
|
41
westoy 2022-02-16 10:38:08 +08:00
一张 3090 解千愁....
|
42
ylls 2022-02-16 10:38:24 +08:00
买一个海康的 AI 摄像头 然后在海康 AI 开放平台训练模型 导入到摄像头 直接用摄像头识别呗
|
44
neroxps 2022-02-16 10:41:01 +08:00
@v2410117 #34 emm 他就是吃这行饭的,嵌入式处理,应该是他摄像头里面的芯片做图像对比之类,超过阈值就上传事件给 nvr (超脑)进行后端比对。前后端结合减轻 NVR 负载,NVR 也能在进一步校验,超脑那种实时性也不是很高,我们曾经做过围墙监控,用超脑做布防,一下雨就呱呱叫(不过是很早之前了,现在估计有优化。)
现在也有很多公司做摄像头处理机器,使用嵌入式 linux 取流简单分析触发,再用服务器加显卡跑 AI 。这些都不是我们普通人家里能投入的,送我电费我也交不起。 |
45
laipidov 2022-02-16 10:43:23 +08:00
可以看一下 ncnn 这个框架,搞一下量化,看看速度能不能满足要求
|
47
xiaozhishang91 2022-02-16 10:45:34 +08:00
@InvincibleDream 这个我用过,体积小,速度快,性能也强,吊打 NCS2
|
48
Ediacaran 2022-02-16 10:46:34 +08:00 via iPhone 2
做过类似的东西,可以提供个思路:
1. 用小分辨率图片,320 240 足够了 2. 先做图片变动判断,两图差的绝对值之和 3. 换 mobilenetv1 4. 替换后两层,只输出是否有人的信息,需要找数据集 finetune 一下。 在 n3150 小主机上跑,跑一帧大概一秒吧,具体时间不记得了 |
49
orqzsf1 2022-02-16 10:48:48 +08:00
可以试下试下存在感应器,就是有点贵。。我现在是通过喊 Siri 关灯,或者 不在家 / ha 扫手环做忘记关灯,你可以研究下
|
50
i979491586 2022-02-16 10:54:24 +08:00
@v2410117 可以看一下 apple 的 ibeacon 技术,精度高,省电,淘宝有卖,瓶盖大小续航也不错,放到拖鞋的后跟挺好的
|
51
i979491586 2022-02-16 10:55:26 +08:00
@neroxps 可以看一下 apple 的 ibeacon 技术,精度高,省电,淘宝有卖,瓶盖大小续航也不错,有的公司用来做室内导航
|
53
ksc010 2022-02-16 11:08:27 +08:00
这个模型是你自己训练的还是别人的 ,要不要换个其他的模型试试,感觉只是识别人数应该没这么慢
另外 opencv 也能识别标记人体 |
54
lixile 2022-02-16 11:20:29 +08:00
@v2410117 几百块的 3516 款型就支持你的功能,海思芯片,完全可以全部摄像机完成。
3516 人体检测应该能支持同时 60 人以上的检测,家里面完全无压力,精度全靠模型优化,商用很常见了。 另外完全有现成方案,3516D 、3516A 款型 搜索人群密度 之类的关键词,应该有支持的款型 |
55
zx4824 2022-02-16 11:22:42 +08:00 1
|
57
tfdetang 2022-02-16 11:47:12 +08:00
模型侧的优化点就是用更轻量的 yolo 模型,比如基于 MobileNet 的 Yolo 或者各种蒸馏过的 Lite Nano 版本,基本要比原版快一个数量级,对于你这个简单场景应该不太有性能损失;
如果是用另一台机器进行识别,我觉得 macmini 完全够用了,最好用现成的推理框架而不是简单的 py 包调用。推理框架可以本地编译一下,性能又能有非常大的提升; |
58
jie170601 2022-02-16 12:20:10 +08:00 via Android
想到两个不用摄像头的:
1. 出入口想办法检测到人出或者人入,像停车场那样来统计 2. 最近第一次进无人超市,发现它那标签似乎成本很低,可以在家人衣服上都放一个 |
59
koebehshian 2022-02-16 13:17:52 +08:00
用过 yolo 直接读海康视频,在 jetson_nano 上,用 yolo 的 tiny 模型,可以识别框内是否有人,速度一秒 6 帧
|
60
disk 2022-02-16 13:45:17 +08:00
我记得油管的 linus 做过一个视频讲了全屋动态检查,用到了加速棒,配合现成的框架感觉还行。
|
61
feitxue 2022-02-16 13:56:50 +08:00
|
62
WoodsGao 2022-02-16 14:12:53 +08:00
这种情况没必要用检测模型,直接整个小的分类模型就可以解决了,macmini 跑一张要 10 秒也太夸张了,看下分辨率是不是太高了
|
63
gscsnm 2022-02-16 16:47:38 +08:00
我现在是在门口放了个按钮,每次出门按一下,执行出门程序。。
|
64
aimnzo 2022-02-16 16:58:33 +08:00
海康有智能摄像机可直接输出人数统计结果
|
65
ijse 2022-02-16 17:05:46 +08:00
如果 ha 的话,可以通过快捷指令判断 手机连接 wifi 自动触发操作
|
66
FightPig 2022-02-16 17:18:37 +08:00
yolo 这么慢么?上次看有人做的调用挺快的,
|
68
ijustdo 2022-02-16 18:13:38 +08:00
我树莓派 4 都没你那么慢,你这需求直接用 python 掉 face_recognition 基于 dlib 就 ok ,https://github.com/ghostwwl/my_raspbian/blob/master/gcam/main.py 碰到指定人录像发消息
|
69
bilberry 2022-02-16 18:25:48 +08:00
**Pyroelectric 热释电传感器**了解下
|
70
bilberry 2022-02-16 18:30:41 +08:00
|
71
encro 2022-02-16 19:15:13 +08:00
居然没有一个人讨论为什么慢?
凭借我学了几天的 OpenCV 知识,只用 OpenCV 直接二值化之后检测应该很快的啊。 |
72
encro 2022-02-16 19:18:54 +08:00
收回上面的话,
中间已经有几位讨论了。 |
73
alanse7en 2022-02-16 20:07:16 +08:00
因为你要做的事情很简单,就是检测是否有人
首先是不需要那么复杂的模型,第二个就是可以降低分辨率之后再输入到模型进行预测 |
74
documentzhangx66 2022-02-16 20:15:53 +08:00
给你一个新思路:不关灯。
1.房子每个角落全部部署光感小夜灯,那种不超过 3W 的。 2.小夜灯不关。要找东西时,手动开关大灯。 这样做的优势是,家里很温馨,像个酒店,不找东西时根本不需要开大灯。 |
75
luckykong 2022-02-16 20:46:24 +08:00
搞一张本地没有人,只有家具和设备的图片。
当长时间没有移动,不确定是否有人的时候,去和没有人的图片做对比。 如果有差异,再去识别差异的这部分里是不是有人。。 |
76
rpman 2022-02-17 05:04:18 +08:00
如果画面长期静止,才触发模型判别关灯。入侵检测触发开灯。
|
77
rpman 2022-02-17 05:05:09 +08:00
优化推理速度你是做不到的,放弃吧
|
78
xsen 2022-02-17 06:59:25 +08:00
海康有支持客流统计的摄像头,iDS-****系列的
可以划定监测区域、检测线与监测方向,检测到有人员进出、可通过 http 实时上报 |
79
ljkWeb 2022-02-17 09:36:55 +08:00
监控房间里符合人体的热源这种不知道可不可行
|
80
wtfv233 2022-02-17 09:38:47 +08:00
关于关灯:HomeKit 有超过某个定位区域自动关灯的设置的,你打开家庭 App 看看
|
81
opengps 2022-02-17 09:51:31 +08:00
我买了个红外感应的传感器,二十块。接入到照明线路上,电源常开,红外感应不到人就能断电,感应到人就能通电
|
82
lingxipaofan 2022-02-17 10:32:38 +08:00
海康摄像头好像本身就支持入侵检测啊,你可以看看海康开放 sdk 能不能实现你要的功能
|
83
abccccabc 2022-02-17 11:35:59 +08:00
这个功能不错:晚上有人进入摄像头区域,开灯,并且拍照。小偷一进来,吓个半死。
|
84
byteboy 196 天前
全屋安装了 7 个 aqara 的人体存在传感器( FP1 )后,全部清净了,基本没有自动开关不了的灯。
|