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

关于静态车辆识别项目的技术选型

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

    城中村,平时一般都是把车停家门口,最近邻居也买车了,如果邻居已经把车停进来了,平常最方便的入口就进不来,需要绕一圈从另一边开进来。家门口有两路监控,能清晰看到左右两边邻居有没停车进来,家里有 nas 和树莓派,于是有一些想法,是否可以通过静态图像或者动态视频的方式,识别是否有车辆停放,通过“嗨,Siri”知道情况,提前选好路线回家停车。 uGwmRI

    第 1 条附言  ·  248 天前
    补充说明:有兄弟问,手机上不能看监控肉眼判断有没车吗?这个是最准确的。答案:可以,但开车不方便,不安全也很不极客,而且我个人开车习惯用 CarPlay 功能,手机都是放一边去或者裤兜里。
    第 2 条附言  ·  248 天前
    有位兄弟提到一个很重要的点,我确实不应该关注邻居是否有停车进来,而是关注领居门前的巷子是否是空的,可以让我开车直接进入的。不能进入的情况有太多的,不一定是停了车;但能进入的只有一种情况,就是巷子是空的。
    第 3 条附言  ·  247 天前

    本着闲着也是闲着,我打算把兄弟提供的可执行方案,一个个尝试一遍。先从最简单粗暴的开始,拍照上传(假定大家也跟我一样,已经部署好ZLMediakit以及海康IPC到服务端是网络通畅的):

    1. 先配置/index/api/addStreamProxy接口,动态添加所有海康IPC的rtsp拉流代理;
    2. 通过访问ZLMediakit提供的flv拉流地址"/live/204.live.flv",测试正常;
    3. 通过访问ZLMediakit提供的截图接口"/index/api/getSnap",测试正常; 4J1Tbw
    4. 在iOS快捷指令中添加指令如图所示: ey12dl
    5. “嘿,Siri!查看门口右边有没停车”,效果出来啦~~! 0f8UiT
    6. 为了更加的智能,还添加了自动化,根据定位,一旦我开车回到家附近,就自动触发查询提醒 9Kd3qf

    到这里,通过iOS快捷指令,自动化展示监控实时截图,肉眼快速准确判断是否有障碍物,暂无借助任何视频或者图像分析算法,基本满足需求,第一版完美收工!

    62 条回复    2023-08-25 09:20:04 +08:00
    x1abin
        1
    x1abin  
       248 天前   ❤️ 2
    可以用 mediapipe 的 Object Detection 识别车辆状态,启个 web 服务提供查询,配置个苹果的捷径查询你那个状态,就可以通过 Siri 去问了。
    spicy777
        2
    spicy777  
       248 天前
    加下邻居微信,每次进来之前问一下
    raycool
        3
    raycool  
       248 天前
    直接 YOLO 模型就行。
    pming1
        4
    pming1  
    OP
       248 天前
    @spicy777 哈哈,是可以的,但容易打扰到邻居,以及及时响应也是个问号。到底,还是怀着技术宅如果拯救不了世界,那至少要拯救下自己的心态。
    summerwar
        5
    summerwar  
       248 天前
    写个接口,访问获取最新的摄像头画面(图片即可),然后就知道了
    yuhuan66666
        6
    yuhuan66666  
       248 天前   ❤️ 1
    yoloV8
    pming1
        7
    pming1  
    OP
       248 天前
    @x1abin 是的,我初步想法也是这样,通过一个算法完成识别,并通过 webapi 提供服务,从而打通 Siri 。我研究下 mediapipe ,看实现效果如何。非常感谢回复!
    pming1
        8
    pming1  
    OP
       248 天前
    @summerwar 现状就是这样,但开车打开手机看监控,毕竟不太方便,提前看也不合适,时间差,可能我到了,邻居刚好早一秒停进来了。
    GeorgeGalway
        9
    GeorgeGalway  
       248 天前
    跟邻居商量一家停一边
    pming1
        10
    pming1  
    OP
       248 天前
    @yuhuan66666 yolo 和 mediapipe 有对比吗?我是做 web 开发的,语言没所谓,不太熟悉图像识别领域,哪种更简单和轻量?现有能力支持 rtsp 实时视频流,也支持实时拍照获取图片。
    SeaRecluse
        11
    SeaRecluse  
       248 天前   ❤️ 4
    固定视角,甚至不用上 AI 模型,来个虚拟框判断帧间像素差距就好了
    pming1
        12
    pming1  
    OP
       248 天前
    @GeorgeGalway 也是寸土寸金,巷子比较窄,完全靠墙,也过不了两辆车。
    quix
        13
    quix  
       248 天前   ❤️ 2
    装个地磁传感器不是更简单便宜吗
    NakeSnail
        14
    NakeSnail  
       248 天前
    @SeaRecluse 感觉你的方式靠谱,简单高效
    tool2d
        15
    tool2d  
       248 天前 via Android   ❤️ 2
    固定视角做图片 hash 就可以了,对比两帧的图片,hash 值差距太大,即为有车占道。
    kkk9
        16
    kkk9  
       248 天前
    不清楚 op 用的什么牌子,我两台 NVR (大华和海康)都有区域报警功能,只要划定区域有异动就会报警(邮件 smtp ),调整好灵敏度就行了
    makejohn2015
        17
    makejohn2015  
       248 天前
    frame difference
    Baymaxbowen
        18
    Baymaxbowen  
       248 天前 via iPhone
    换个思路 用车牌识别来实现 车牌识别 GitHub 上有很多能直接用的项目
    yolee599
        19
    yolee599  
       248 天前   ❤️ 3
    直接获取一张摄像头截图就行了,现在的摄像头应该都有这样的接口,自己肉眼去判断有没有车,这是最准确的,最容易实现的,也是成本最小的方式
    summerwar
        20
    summerwar  
       248 天前   ❤️ 2
    1.拍个没车的图片,然后将实时获取到的图片与没车的图片进行对比,超过一个阈值则认为是有车即可,阈值多调整几次

    2.从实时获取到的图片中获取车牌,如果识别到车牌则认为停车了,没获取到则没车
    maxxfire
        21
    maxxfire  
       248 天前   ❤️ 4
    地上画个 X 号,不就完事了吗
    maxxfire
        22
    maxxfire  
       248 天前   ❤️ 2
    搞清楚对象,你要的是空地,而不是车
    x1abin
        24
    x1abin  
       248 天前   ❤️ 3
    @summerwar @SeaRecluse 帧差异比较可能想象很简单,实际应用上很不准确,受太多其它环境变量影响,如一天的不同光照等...现在的 AI 模型用起来就跟买菜一样简单,几行代码就能解决的事情没必要自己去手撸。
    nzynzynzy
        25
    nzynzynzy  
       248 天前   ❤️ 1
    挨着墙做一个宽的踏板,装一个滑轮组,当有车轮压在上面的时候牵动钢索,在楼的外侧竖起一个小红旗。这个没电的时候都好使,或者你家门口停了一只大象的时候也好使。
    SeaRecluse
        27
    SeaRecluse  
       248 天前
    如果是用 AI 模型,其实有个更傻瓜式的处理方案,就是直接用 Clip 模型,然后比较画面中是否有汽车停放就好了。可以直接咨询 new bing 这段话:给我一个使用 clip 的 python 脚本。用于判断摄像头画面中是否存在汽车停放
    d3js
        28
    d3js  
       248 天前
    很有意思的话题
    balaWgc
        29
    balaWgc  
       248 天前
    最近我在研究树莓派的摄像头运动检测,只需要帧差法比对就行了,就是连续的两帧做对比,设置一个阈值,车这种比较大的,阈值设置高一点,就能检测到了
    mightybruce
        30
    mightybruce  
       248 天前
    @balaWgc
    说得不错,大多数人一看就是没做过,摄像头有 25fps, 直接使用 python 服务 和深度网络模型无疑是自杀。
    树莓派配上计算棒才能勉强达到 5 到 6FPS, 要么就是英伟达专门的板子 Jetson TX2
    处理速度远远跟不上视频的速度。
    建议先画一个感兴趣区域( ROI), 直接上粗暴简单的算法(比如帧差法,光流法)
    然后再保存图片,用深度学习网络判断是否为车
    mightybruce
        31
    mightybruce  
       248 天前   ❤️ 1
    https://github.com/olgarose/ParkingLot
    这个就是简单粗暴的判断, 有了这个基本可以过滤多数情况,剩下的就交给神经网络去判断了。
    niji
        32
    niji  
       248 天前 via iPhone
    摄像头远程看不了吗?
    Tink
        33
    Tink  
       248 天前
    yolo ,很简单的
    zomco
        34
    zomco  
       248 天前
    这个应该是车牌识别,用不上神经网络吧
    hanlin85
        35
    hanlin85  
       248 天前   ❤️ 1
    我自己有个类似的需求,老房子的老小区,树莓派加摄像头对着下面空的车位,手机搞了个快捷指令(车位图片),hi Siri 就执行,树莓派就拍一张照片发送到我的邮箱,一般在老房子的最后一个红绿灯就查看一下是否有空车位,有就开下去,没有就绕到上面一点的停车场去。
    isnullstring
        36
    isnullstring  
       248 天前
    从摄像头定时获取一张图片,上传到图床,固定连接,微信里打开,然后浮窗

    以后想看 就打开微信,右滑打开浮窗,刷新下就完事

    这不比搞什么识别简单、稳定、可靠?

    另外就是 监控也能做这种检测,检测到车辆就发邮件,微信里也能收到 邮件提示,搞定
    FawkesV
        37
    FawkesV  
       248 天前
    什么时候做好了,发给帖子了。 看看咋实现的
    qwerhk
        38
    qwerhk  
       248 天前
    第二张图,停的好像是新款宋 plus ?
    CodeXx
        39
    CodeXx  
       248 天前
    @hanlin85 想到一起了,定时自动拍照发过来就行了
    Deplay
        40
    Deplay  
       248 天前   ❤️ 1
    @mightybruce op 的需求不需要实时检测,webapi 收到请求的时候判断下就行了,yolo 拿 cpu 跑也就 10s 的样子
    @balaWgc 帧差法适合检测车辆进出,而不是存在
    sofukwird
        41
    sofukwird  
       248 天前 via Android
    用红外线传感器?
    kimown
        42
    kimown  
       248 天前
    买一个小米摄像头远程看
    pengtdyd
        43
    pengtdyd  
       248 天前
    为啥非要用技术解决呢。养一条恶犬也行的。
    xinge666
        44
    xinge666  
       248 天前   ❤️ 1
    YOLOv8 一键,用 Python 脚本也是一键,加个 Flask 做个简单的 API ,请求的时候拍张照然后送 YOLO ,直接就能识别有没有车,直接返回给 iOS 的捷径。
    chole
        45
    chole  
       247 天前
    萤石 自带这个功能
    ykk
        46
    ykk  
       247 天前
    你这个叫侵入检测,跟车辆检测没关系
    arvinsilm
        47
    arvinsilm  
       247 天前
    在你邻居车底贴个 AirTag ( doge
    pming1
        48
    pming1  
    OP
       247 天前
    @arvinsilm 聪明如你(哭笑不得
    pming1
        49
    pming1  
    OP
       247 天前
    @ykk 也不完全是,我是要知道有没障碍物阻碍我把车开进来,如果有车只是经过,是没问题的。
    realpg
        50
    realpg  
       247 天前
    感谢 OP 提供想法 我发现我手头啥都有 连夜做了个摄像头远程识别空车位判断我要去哪停车
    pming1
        51
    pming1  
    OP
       247 天前
    @chole 是海康的设备,但没开萤石。本着技术宅拯救世界的精神,折腾折腾。
    pming1
        52
    pming1  
    OP
       247 天前
    @qwerhk 眼神真好,是的。
    mightybruce
        53
    mightybruce  
       247 天前
    如果是通过 siri 指令的形式抓拍一张,那么还不如网友所说,直接通过指令控制摄像头拍一张上传到 nas 或 邮箱,直接查看,简单省事。yolo,ssd,fastercnn 不建议了, 还不如人眼看一下快速。
    crisrock
        54
    crisrock  
       247 天前
    和邻居说清楚,一人停一边,这样不用想
    pming1
        55
    pming1  
    OP
       247 天前
    @crisrock 邻居很 nice ,只是巷子太窄,两辆车 0 距离挨着也过不去。
    pming1
        56
    pming1  
    OP
       247 天前
    @mightybruce 现在实现的第一版,其实差不多,也是拍照,人眼确认。这个也会有两个不太方便的地方:1 、手机上要打开这张图片; 2 、眼睛要从开车视野挪到手机屏幕上。这两点多少会给行车安全带来一定的安全隐患。我预期实现的效果是这样的,“嘿,Siri !门店现在能不能开车停进去?”,“能的|不能”。
    SoyaDokio
        57
    SoyaDokio  
       247 天前
    年轻就是好,看到啥都想写个轮子。

    如果是我,可能就网上随便找个车牌识别源码,只要识别到就算有车。毕竟识别车牌程序已经非常成熟了。
    mightybruce
        58
    mightybruce  
       247 天前
    很多人提到车牌,其实并不可行,车牌检测如果离得较远,小于检测最小的像素框就基本很困难了,
    基于 ROI (region of interest) 检测一下是否为车就好,yolo 虽然快,但是准确率并不是很高,嵌入式的话可以参考 openvino 的 model zoo , gluoncv 的 model zoo
    结合 专门的嵌入式深度学习框架比如 tensorflow lite, ncnn, 腾讯 tnn, 阿里 mnn 来做。
    边缘计算推理这方面 需要对模型做剪裁 ,深度模型减枝。 浮点型运算也从 fp-32 变为 fp-16 甚至 int-8
    腾讯这方面深度学习的边缘计算资料很全
    https://qengineering.eu/
    crisrock
        60
    crisrock  
       246 天前
    @pming1 无论邻居有没有停车,你是不是都可以从更远的地方绕进来,如果是这样,要是我的话就每次绕一下,省得折腾。
    pming1
        61
    pming1  
    OP
       246 天前
    @crisrock 左右两边都有邻居,他们都有车,只是左边邻居把车停进来的概率比右边低很多,而且从左边进来要绕很大一圈,这个成本足够让我有折腾技术解决方案的动力。
    crisrock
        62
    crisrock  
       246 天前
    @pming1 明白了,祝好运
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   898 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:06 · PVG 06:06 · LAX 15:06 · JFK 18:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.