房间是否有人

引子

房间是否有人,听起来像是要在这个题目下讨论一部悬疑电影,或是争论一个哲学问题。(罗素回忆维特根斯坦时提到: “我的德国工程师,我觉得,是个笨蛋。他认为经验的东西都不可认识---我要他承认这房间里没有一头犀牛,但他不肯。”)

然而,我们并不准备在这个题目下讨论哲学,如果采取维特根斯坦彻底的不可知论立场,永远也弄不清房间里是否有人。

让我们来关注一个非常形而下的问题。

问题背景: 为了省电

我有两个朋友在做酒店方案,他们分别都提到这个问题: 能否确定房间里是否有人,如果没人,则切断电源

由于这个问题听起来定义清晰,他们觉得我应该能用技术方案解决它。搞几个传感器,捣鼓几行代码,应该就能搞定吧。

意料之外

不知道你是怎么想,反正我第一次听到这个问题,觉得肯定可以在一个午休时间解决它。

经过一个午休时间,并没取得任何进展。在晚上洗澡时都没有想到好的解决方案,我就开始意识到问题的复杂性了。一般来说,如果有什么问题,连洗澡时,都想不清楚,它便值得认真对待了。

残思断想

先列出一些不成熟的思考片段。

第一人称视角

想象自己是个酒店服务员,接到前台发来的询问:406房间是否有人?,我们要怎么回答呢?在不考虑隐私的情况下,先用万能房卡进入房间,看看床上有没有人;看看床底下有没有人;看看阳台有没有人;看看卫生间有没有人。

经过这个想象,发现问题进一步复杂了: 客房可能有多个区域(至少有卫生间和卧室)。

如果我们采用寻找人在哪里的思路,不只要确定房间里有没有人,还要确定卫生间有没有人。

人是什么

如果每个房间都有一个服务员,以躲猫猫的方式展开搜寻:掀开被子、看看卫生间门后,总是能确认房间里是否有人的。

但我们希望自动化来做这件事,这意味着我们希望采用传感器之类的设备。

假设有一个人躺在床上,我们怎么知道那儿有一个人呢?这个问题本质上问的是:什么传感器能识别到

摄像头当然是个不错的主意,加上机器视觉,再加上我们的聊天记录和隐私组成的大数据,我们不仅能知道这是一个人,甚至能推测出被子里蒙着头的另一人是谁。

但往房间里安装摄像头这个建议,可能会让人怀疑你是个偷窥狂。

反正我用脚投票,是不会走进这种酒店的。

在不能用摄像头的情况下,我们可以考虑使用红外传感器,探测房间里是否有热源,或者是否有运动的热源。

激光雷达和Walabot

如果不差钱的话,或许可以试试激光雷达和Walabot。两者的策略都是利用波的反射,对整个空间进行扫描,寻找目标物体。只要算法够好,Walabot甚至允许你隔墙探测。

但两者的价格都贵得很,不知要节约多少电才抵得上它们的成本。

主动探测的困境

前头提到的这些传感器(包括摄像头),基本都是主动探测模式,困难似乎挺多,我们不仅得探测多个区域,而且还得考虑探测器的范围和死角。

如果客户睡觉时,头蒙在被子里?系统误判为房间无人,把空调关了,客户会热得蹬被子的。

机器学习

有什么事情是调参不能解决的呢?如果有,就多调一些参数!

采用机器学习的好处之一是,可以给项目起名叫基于AI的酒店解决方案!指不定能拿到一笔大融资!

思路是这样的,似乎找不到一个智能传感器能轻松确定房间有人,那么我们就布置若干廉价传感器,然后把这些数据喂给神经网络,当然,SVM或决策树应该也够用,但为了演讲和PPT,我劝你用神经网络。

我们把各种进出房间的情况,都用传感器记录下数据,只要有足量的典型的数据喂给我们的神经网络,客户有几人、客户只不是在厕所与我们躲猫猫、客户是不是躲在床底下,我们都能准确得出结论。在机器学习眼里,这是个简单的二值分类问题:有人还是没人。

由于传感器的触发顺序影响判断,可以考虑RNN或LSTM这类能处理序列数据的神经网络。

思路上,这个想法受到集成学习模型(如XGBoost)这类算法的启发,通过组合很多不精确的传感器,来提高整体预测精度。

计算视角

主动探测模式有些山穷水尽。让我们来换个思路,采用计算视角: 统计人员的进出,来确定房间里是否有人。

思路是这样的: 假如进入房间人次为1,离开房间人次为1,于是可以确认房间里没人,切断电源!

假如进入房间人次为1,离开房间人次为1 听起来非常容易用程序实现,只要对房间入口进行监测就行。想想到博物馆偷文物的电影桥段: 纵横交错的红外线,用来确定是否有窃贼闯入。使用树莓派(200块钱的微型电脑)采集进出人次的监测数据,统计一下,便可确定任意时段里,房间里是否有人。

但电影桥段里的红外线只能知道是否有人来,并不知道它的运动方向,我们怎么确定用户是进门还是出们? 这个不难,放置多道红外线,进门和出门时,人们依次路过这几道红外线,但进门和出门时,红外线被触发的顺序是不同的。于是就能知道客户是进门还是出门。

这里还会遇到一些问题,诸如有两人同时进入,简单的红外线系统很难知道同时有两人进入,尤其是他们并肩行走时。

上周与@David聊到这个话题,他试图引入质量来消解这个问题,诸如在进门处的地毯下安装一个压力传感器,能知道地毯上的质量。不过@Jackson指出工程上,实施起来十分困难,价格也不像红外传感器廉价。

@David还提到一个非常有趣的思路。我们别把思路聚焦在房间里。可以在房门口放置摄像头,而不是在房间内放置。

我们可以把房间里是否有人转化为刚才什么人进出房间。转化后的问题把我们视角带到外部,仿佛我们是个门卫。而在房间外部放置摄像头是可能的!

不过这里依然有隐私问题。比如我就十分不乐意进出房间,都被摄像头监控,仿佛软禁一般。

会不会是伪命题?

房卡是拿来干嘛的?

这是非常典型的反问。

房卡不就是拿来取电的吗?用户离开房间,带走房卡,不就断电了吗?十年前这些问题不都被解决了吗?

情况是这样的:当一个房间有多个住户的时候,经常会忘了拔房卡。

总结

目前还没想到理想的方案:精确度高、廉价、易实施。

这个问题比它初看起来要复杂许多, 可能还要耗费我好几个洗澡的时间。

欢迎加入讨论:)

补遗

在朋友圈里发了这篇文章,把一些有意思的留言放过来:

@xudong: 红外热感放在地面或头顶是否可行? 人的头顶我们可以简单的认为是某种圆形(用热感屏蔽杀马特发型) 按照门宽进行处理 假设正常人体头部厚度是10-20厘米 这里假设两个情侣抱在一起一边亲吻一边侧着进入 那么按照switch手柄上的红外摄像头 理论上是可以识别出一个葫芦形状的 也就是两个重叠的圆 那么我们是否可以认为 一个探测到圆心就是一个人?

@xudong: 虽然能解决大人牵着小孩 或者抱着孩子 但是 不能解决孩子骑在大人头上。

@maoyong: 我们弄了一年也没弄的很准, 我们用了两种方式
1.写程序统计,我们用窗磁,人体,开关等联合起来,只要是人触发的,就算有人。
2.通过ai 训练学习。
第一种在多人的情况下不是很准,第二种还可以。

@Tom.Riddle: 如果不统计人,而统计人的行为呢,只是判断有没有人的行为的话,能否用多条件来并行判断呢,只要满足任意人行为条件即为有人,反之则没人,条件可以定为房间插座有没有电量输出,开关状态有没有转变,如果稳定一段时间没有输出(对于房间原有设备可不进行考虑),网络设备有没有流量,用水有没有变化,还有一些声控传感器(可能有隐私问题)等一些条件,当多条件满足时就判定没人,如果怕存在问题还可以仅关闭大额电量,还暴露诸如台灯等设备插孔的供电,这样能省掉大额电力支出就可以算变相达到目的了

@HelloPlanet: 人体微博雷达




Fork me on GitHub