V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
v2410117
V2EX  ›  程序员

关于本地人体识别,该如何优化,求大佬提建议

  •  1
     
  •   v2410117 · 130 天前 · 4485 次点击
    这是一个创建于 130 天前的主题,其中的信息可能已经有所发展或是发生改变。

    家里装了个海康的摄像头,想用于区域人数识别开关灯等操作,我目前的操作流程为

    海康设置区域入侵检测,当区域检测事件触发后,开灯 然后每 10 秒一次使用 Python 调用摄像头拍照,然后 OpenCV 进行拍照后的图片裁剪 然后使用 yolo 进行人数统计,当区域人数为 0 后进行关灯操作

    流程已经被我调通了,但就是速度实在是有点慢, 事件触发到图片裁剪完成还好,基本也就 1 秒多 使用 yolo 进行图片识别的时候,基本要 10 秒才能有反馈结果 而且进行识别的时候,CPU 基本跑到 7 80 (一台 2014 的 macmini 8+256 )

    想请大佬指点一点,有没有什么优化的方案,能提高识别速度

    备注:使用过百度的 AI 识别,确实速度能提升到 1-2 秒识别出结果(但毕竟是家里的图片,不想传到网络识别)

    目前在考虑是否单独用个机器进行这项人体识别操作(主要 macmini 还挂有其他任务),如果单独用机器跑这个人体识别,应该用什么机器呢(个人对硬件确实小白)

    请大佬们指教!

    83 条回复    2022-02-17 11:35:59 +08:00
    murmur
        1
    murmur  
       130 天前   ❤️ 1
    瞎折腾,本来智能家居是简化操作改善体验的,你这一通操作下来折腾个半死效果可能还不好

    如果是人来开灯直接用人体传感器,然后各种联动,还要什么摄像头

    如果是监测比如有 3 个人以上开灯,我建议放弃
    czfy
        2
    czfy  
       130 天前
    为什么要 “区域人数识别开关灯” ?
    v2410117
        3
    v2410117  
    OP
       130 天前
    @murmur 开灯是没问题,主要是关灯,没有啥办法知道啥时候该关灯
    v2410117
        4
    v2410117  
    OP
       130 天前
    @czfy 主要是关灯,开灯其实还好!因为不知道什么时候关灯,小米的人体传感器也基本上只能设置延迟多少分钟关灯
    czfy
        5
    czfy  
       130 天前
    我问的是 “为什么”...就是识别开关灯用来干什么
    murmur
        6
    murmur  
       130 天前
    @v2410117

    https://post.smzdm.com/p/aq0xqdxx/

    我认为这根本不是问题
    root99527
        7
    root99527  
       130 天前
    可优化的点太多了。
    python->C++
    inference 框架替换
    模型压缩
    neroxps
        8
    neroxps  
       130 天前
    emmm 智能家居通病,开灯容易关灯难。
    人在哪里,人想干嘛,智障家居终极难题。
    murmur
        9
    murmur  
       130 天前
    我大概知道你什么问题了,你怕的是人体传感器检测不到静止的人是把,这的却比较麻烦
    murmur
        10
    murmur  
       130 天前
    testv 那种玩法是在每个椅子的坐垫下面放了压力传感器,这样无论是人动还是人坐凳子上都能检测到人在
    neroxps
        11
    neroxps  
       130 天前
    @murmur #6 用过就知道这些都是问题~楼主要做到人走灯灭,而不是人走灯等几分钟灯才灭。
    也不是人久坐不动灯又灭,即使是存在传感器,也有很多 bug ,风扇 阳光 都是干扰项~

    甚至还有人研究高精雷达,算法监听心跳。卷的很。
    murmur
        12
    murmur  
       130 天前
    @neroxps 那绿米那个高精度传感器呢,不过好像这个只能给苹果用
    v2410117
        13
    v2410117  
    OP
       130 天前
    @murmur 绿米那个我也看过,价格贵不说,关键范围不大,我一个摄像头可以看到入户加整个客厅+餐厅,所以才考虑这种人体识别
    whypool
        14
    whypool  
       130 天前 via Android   ❤️ 1
    这玩意不就是几十块钱的红外感应开关?
    neroxps
        15
    neroxps  
       130 天前   ❤️ 1
    曾经我还疯狂的想过使用使用传感器装在门框计算人数。

    尝试过红外对射(安装难度大) vl53l0x 激光测距(需要 2 组传感器)

    ST 做的 demo ,开源
    &ab_channel=STMicroelectronics

    激光测距也一样逃不过阳光干扰,地砖反射等干扰问题。最终躺平。关灯就用语音场景。
    neroxps
        16
    neroxps  
       130 天前
    @murmur #12 阳光 风扇 都会对其干扰。范围也是个问题。价格也是个问题。简而言之,不实用。
    yaoyao1128
        17
    yaoyao1128  
       130 天前 via iPhone
    个人的建议是 别用这个逻辑进行 过于麻烦 以及家里用不太实用……

    感觉可以考虑的方案
    人在传感器 人体传感器
    人体传感器 判断无人后 画面识别完全无变动超过多久自动关灯
    v2410117
        18
    v2410117  
    OP
       130 天前
    @whypool 红外感应能开灯,但是没办法控制啥时候关灯,静止的时候无解
    v2410117
        19
    v2410117  
    OP
       130 天前
    @yaoyao1128 对的,我就是这样考虑的,当无人后画面识别超过 2-3 次无人,就关灯,就不再进行检测了
    dcty
        20
    dcty  
       130 天前   ❤️ 2
    一看标题以为这都进化到“本地人”识别了
    v2410117
        21
    v2410117  
    OP
       130 天前
    @dcty 哈哈,这个难度更大
    v2410117
        22
    v2410117  
    OP
       130 天前
    @neroxps 我其实装摄像头是为了家里小孩,然后在网上看到有人用摄像头这样操作,所以想试试,做出来的效果也算可以(除了识别速度)
    i979491586
        23
    i979491586  
       130 天前
    我也想做一套这个系统,我目前想法是,用一个类似 airtag 大小的信号发射器放到拖鞋里(入户要换鞋),然后每个房间放置 3 个接收器,3 个接收器数据进行计算,判断人的位置,位置结果在 homeassistant 实现联动,你觉得这个方案怎么样?
    neroxps
        24
    neroxps  
       130 天前
    @v2410117 #22 yolo 我搞过,后来发现至少得搞个 N 卡显卡才能爽~或者更换支持 AI 加速的嵌入式机器,投入太大没兴趣了。
    v2410117
        25
    v2410117  
    OP
       130 天前
    @i979491586 想法可以,但是实行很难,除非是只有你一个人住,而且有强制换拖鞋的习惯,不然但凡多一个人,习惯不同,就 gg 了
    v2410117
        26
    v2410117  
    OP
       130 天前
    @neroxps 要这样投入的话,确实很大了!
    neroxps
        27
    neroxps  
       130 天前
    @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 蓝牙接收器就很好,可以直接判断距离都行。
    yaoyao1128
        28
    yaoyao1128  
       130 天前 via iPhone
    @v2410117 重点在于无人检测 个人感觉用传感器作为判断标准 如果传感器认为有人就不需要跑图片的识别了 之后识别图片 识别的时候也没有太大必要考虑从人数入手 直接根据是否存在画面变动就可以 如果家里有宠物的话加一个高度判断就好了
    v2410117
        29
    v2410117  
    OP
       130 天前
    @yaoyao1128 对哈,你这个话倒是提醒我了,直接使用图片对比,2 次图片没有变化的情况下,就无人,这个对比可比识别来的快多了
    neroxps
        30
    neroxps  
       130 天前
    @v2410117 #29 不行的,这样久坐不动一样是无人。然后就传来老婆的咆哮。
    v2410117
        31
    v2410117  
    OP
       130 天前
    @neroxps 老哥,这个咆哮吓退了我,惊
    ldyisbest
        32
    ldyisbest  
       130 天前
    试试 nanodet 这个很快
    neroxps
        33
    neroxps  
       130 天前
    @v2410117 #31 这不是智障家居的常态吗。哈哈,每个玩智障家居都会收到家里人吐槽,除非独居。
    v2410117
        34
    v2410117  
    OP
       130 天前
    @neroxps 为啥海康摄像头几百块钱,它就能做到实时监控并且发出警告呢,是因为自家设计芯片啥的么,感觉网上没有那种低成本精度又高的方案
    RickyC
        35
    RickyC  
       130 天前
    人体识别。好像从未听说过。只能面容识别吧?
    InvincibleDream
        36
    InvincibleDream  
       130 天前
    要不搞个加速棒试试? https://coral.ai/products/accelerator/
    shyrock
        37
    shyrock  
       130 天前
    @dcty #20 同以为是‘本地人’识别,心说这思路恐怕要上方言识别。。。
    xylxAdai
        38
    xylxAdai  
       130 天前
    人在传感器。。可以看看。
    kssdxw
        39
    kssdxw  
       130 天前
    可以试试 OpenPose 人体姿态识别,有 cpu 方案我拿我的 3800X 测试 1080P 视频能做到十几帧。
    ykk
        40
    ykk  
       130 天前
    cpu 跑的慢很正常,换体量更小的模型,转 onnx ,优化代码,IO 和 process 并行
    westoy
        41
    westoy  
       130 天前
    一张 3090 解千愁....
    ylls
        42
    ylls  
       130 天前
    买一个海康的 AI 摄像头 然后在海康 AI 开放平台训练模型 导入到摄像头 直接用摄像头识别呗
    v2410117
        43
    v2410117  
    OP
       130 天前
    @ylls 卧槽,还可以导入摄像头???????????有这等操作吗,惊了
    neroxps
        44
    neroxps  
       130 天前
    @v2410117 #34 emm 他就是吃这行饭的,嵌入式处理,应该是他摄像头里面的芯片做图像对比之类,超过阈值就上传事件给 nvr (超脑)进行后端比对。前后端结合减轻 NVR 负载,NVR 也能在进一步校验,超脑那种实时性也不是很高,我们曾经做过围墙监控,用超脑做布防,一下雨就呱呱叫(不过是很早之前了,现在估计有优化。)

    现在也有很多公司做摄像头处理机器,使用嵌入式 linux 取流简单分析触发,再用服务器加显卡跑 AI 。这些都不是我们普通人家里能投入的,送我电费我也交不起。
    laipidov
        45
    laipidov  
       130 天前
    可以看一下 ncnn 这个框架,搞一下量化,看看速度能不能满足要求
    neroxps
        46
    neroxps  
       130 天前
    @ylls #42 说个价格让我死心。
    xiaozhishang91
        47
    xiaozhishang91  
       130 天前
    @InvincibleDream 这个我用过,体积小,速度快,性能也强,吊打 NCS2
    Ediacaran
        48
    Ediacaran  
       130 天前 via iPhone   ❤️ 2
    做过类似的东西,可以提供个思路:

    1. 用小分辨率图片,320 240 足够了
    2. 先做图片变动判断,两图差的绝对值之和
    3. 换 mobilenetv1
    4. 替换后两层,只输出是否有人的信息,需要找数据集 finetune 一下。

    在 n3150 小主机上跑,跑一帧大概一秒吧,具体时间不记得了
    orqzsf1
        49
    orqzsf1  
       130 天前
    可以试下试下存在感应器,就是有点贵。。我现在是通过喊 Siri 关灯,或者 不在家 / ha 扫手环做忘记关灯,你可以研究下
    i979491586
        50
    i979491586  
       130 天前
    @v2410117 可以看一下 apple 的 ibeacon 技术,精度高,省电,淘宝有卖,瓶盖大小续航也不错,放到拖鞋的后跟挺好的
    i979491586
        51
    i979491586  
       130 天前
    @neroxps 可以看一下 apple 的 ibeacon 技术,精度高,省电,淘宝有卖,瓶盖大小续航也不错,有的公司用来做室内导航
    ylls
        52
    ylls  
       130 天前
    @neroxps 摄像头单价不一样 单摄像头几百到几千 型号 DS-2XA8 开头的吧
    ksc010
        53
    ksc010  
       130 天前
    这个模型是你自己训练的还是别人的 ,要不要换个其他的模型试试,感觉只是识别人数应该没这么慢
    另外 opencv 也能识别标记人体
    lixile
        54
    lixile  
       130 天前
    @v2410117 几百块的 3516 款型就支持你的功能,海思芯片,完全可以全部摄像机完成。
    3516 人体检测应该能支持同时 60 人以上的检测,家里面完全无压力,精度全靠模型优化,商用很常见了。

    另外完全有现成方案,3516D 、3516A 款型 搜索人群密度 之类的关键词,应该有支持的款型
    zx4824
        55
    zx4824  
       130 天前   ❤️ 1
    Yeelight Pro P20 人在传感器上手体验

    https://post.smzdm.com/p/aenogmwk/
    ykk
        56
    ykk  
       130 天前
    @lixile #54 海思量化是一个 individual 可以完成的吗[doge]
    tfdetang
        57
    tfdetang  
       130 天前
    模型侧的优化点就是用更轻量的 yolo 模型,比如基于 MobileNet 的 Yolo 或者各种蒸馏过的 Lite Nano 版本,基本要比原版快一个数量级,对于你这个简单场景应该不太有性能损失;

    如果是用另一台机器进行识别,我觉得 macmini 完全够用了,最好用现成的推理框架而不是简单的 py 包调用。推理框架可以本地编译一下,性能又能有非常大的提升;
    jie170601
        58
    jie170601  
       130 天前 via Android
    想到两个不用摄像头的:

    1. 出入口想办法检测到人出或者人入,像停车场那样来统计

    2. 最近第一次进无人超市,发现它那标签似乎成本很低,可以在家人衣服上都放一个
    koebehshian
        59
    koebehshian  
       130 天前
    用过 yolo 直接读海康视频,在 jetson_nano 上,用 yolo 的 tiny 模型,可以识别框内是否有人,速度一秒 6 帧
    disk
        60
    disk  
       130 天前
    我记得油管的 linus 做过一个视频讲了全屋动态检查,用到了加速棒,配合现成的框架感觉还行。
    feitxue
        61
    feitxue  
       130 天前
    之前用的虹软的 sdk,你可以研究下,人脸跟踪还 ok 的.
    不上传服务器.本地识别.
    https://ai.arcsoft.com.cn/
    WoodsGao
        62
    WoodsGao  
       130 天前
    这种情况没必要用检测模型,直接整个小的分类模型就可以解决了,macmini 跑一张要 10 秒也太夸张了,看下分辨率是不是太高了
    gscsnm
        63
    gscsnm  
       130 天前
    我现在是在门口放了个按钮,每次出门按一下,执行出门程序。。
    aimnzo
        64
    aimnzo  
       130 天前
    海康有智能摄像机可直接输出人数统计结果
    ijse
        65
    ijse  
       130 天前
    如果 ha 的话,可以通过快捷指令判断 手机连接 wifi 自动触发操作
    FightPig
        66
    FightPig  
       130 天前
    yolo 这么慢么?上次看有人做的调用挺快的,
    Dawnnnnnn
        67
    Dawnnnnnn  
       130 天前
    @zx4824 有个疑问,猫猫移动会被误识别吗?看原理就是红外检测,红外检测现在的技术能判断是人还是猫吗
    ijustdo
        68
    ijustdo  
       130 天前
    我树莓派 4 都没你那么慢,你这需求直接用 python 掉 face_recognition 基于 dlib 就 ok ,https://github.com/ghostwwl/my_raspbian/blob/master/gcam/main.py 碰到指定人录像发消息
    bilberry
        69
    bilberry  
       130 天前
    **Pyroelectric 热释电传感器**了解下
    bilberry
        70
    bilberry  
       130 天前
    @bilberry
    https://s2.loli.net/2022/02/16/VeRLPrldCovtyGH.png
    学校全都是这种传感器,都没有开关的
    encro
        71
    encro  
       130 天前
    居然没有一个人讨论为什么慢?
    凭借我学了几天的 OpenCV 知识,只用 OpenCV 直接二值化之后检测应该很快的啊。
    encro
        72
    encro  
       130 天前
    收回上面的话,
    中间已经有几位讨论了。
    alanse7en
        73
    alanse7en  
       130 天前
    因为你要做的事情很简单,就是检测是否有人
    首先是不需要那么复杂的模型,第二个就是可以降低分辨率之后再输入到模型进行预测
    documentzhangx66
        74
    documentzhangx66  
       130 天前
    给你一个新思路:不关灯。

    1.房子每个角落全部部署光感小夜灯,那种不超过 3W 的。

    2.小夜灯不关。要找东西时,手动开关大灯。

    这样做的优势是,家里很温馨,像个酒店,不找东西时根本不需要开大灯。
    luckykong
        75
    luckykong  
       130 天前
    搞一张本地没有人,只有家具和设备的图片。

    当长时间没有移动,不确定是否有人的时候,去和没有人的图片做对比。 如果有差异,再去识别差异的这部分里是不是有人。。
    rpman
        76
    rpman  
       129 天前
    如果画面长期静止,才触发模型判别关灯。入侵检测触发开灯。
    rpman
        77
    rpman  
       129 天前
    优化推理速度你是做不到的,放弃吧
    xsen
        78
    xsen  
       129 天前
    海康有支持客流统计的摄像头,iDS-****系列的
    可以划定监测区域、检测线与监测方向,检测到有人员进出、可通过 http 实时上报
    ljkWeb
        79
    ljkWeb  
       129 天前
    监控房间里符合人体的热源这种不知道可不可行
    wtfv233
        80
    wtfv233  
       129 天前
    关于关灯:HomeKit 有超过某个定位区域自动关灯的设置的,你打开家庭 App 看看
    opengps
        81
    opengps  
       129 天前
    我买了个红外感应的传感器,二十块。接入到照明线路上,电源常开,红外感应不到人就能断电,感应到人就能通电
    lingxipaofan
        82
    lingxipaofan  
       129 天前
    海康摄像头好像本身就支持入侵检测啊,你可以看看海康开放 sdk 能不能实现你要的功能
    abccccabc
        83
    abccccabc  
       129 天前
    这个功能不错:晚上有人进入摄像头区域,开灯,并且拍照。小偷一进来,吓个半死。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1708 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 16:49 · PVG 00:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.