基于AidLux平台实现智慧社区中高空抛物和车辆车牌识别

本文介绍了如何基于AidLux平台实现智慧社区中的高空抛物识别和车辆车牌识别。首先阐述了智慧社区的背景、项目落地方式以及边缘设备的应用场景。接着详细探讨了高空抛物识别的方案设计、数据采集、算法实现,并在AidLux平台上进行部署和推理测试。然后,讲解了车辆车牌识别的背景、方案设计、模型训练和测试,同样在AidLux平台实现了部署。最后,文章展示了实际运行效果和中文字体修复方法。
摘要由CSDN通过智能技术生成

本文针对智慧社区里面的两个典型场景:高空抛物和车牌识别,记录评测了基于AidLux平台的算法开发以及边缘部署的过程。

1智慧社区的背景

1.1智慧社区的各类场景算法的划分

智慧社区主要分成以下三个方面:住房安全管控、社区环境管控以及物业服务管控三个部分。住房安全管控,主要包括消防安全的监管和入侵安全之类。社区环境管控,主要是对小区内的公共环境实时监测。物业服务管控,主要是包括提升物业效率的智能化管控。

每个场景都对应着不同的算法业务功能,每个算法业务功能则是由不同的算法框架如:目标检测、图像分类、人脸检索等组合而成。

1.2智慧社区项目落地方式

一般的项目算法开发流程:

产品的开发流程,相对于项目的开发流程在整体上差不多,产品需求的明确性相对与项目稍差,同时涉及到投入市场后的用户反应等因素,所以需求变更稍频繁,同时考虑后期的拓展性等问题,在算法方案和算法接口上会考虑更多

算法项目,会有验收指标,但是如果有的客户对算法了解不多,需要算法参与指导制定验收指标。算法的评价分为两种:一种是算法模型的评价,另外一种是项目业务的评价

1.3边缘设备在智慧社区中的应用场景

现在外界很流行端边云协同系统,即指把简单的、需要实时计算和分析的过程放到离终端设备更近的地方,以保证数据数据处理的实时性,同时也减少数据传输的风险。

整体上说是边缘负责局部的数据分析和推理,而云端则汇集所有边缘的感知数据、业务数据以及互联网数据,完成对行业以及跨行业的态势感知和分析,而端指的是终端设备,如手机、智能家电、摄像头等。

2高空抛物识别

2.1背景简介

高空抛物是智慧社区的重要部分之一,主要为主动识别高空中抛下的物体,一般场景为以监看和事后取证为主。

我们在很多小区经常会看到类似的高空抛物相机,以仰视的角度,往住宅楼的角度拍摄,当发生抛物事件的时候,可以实时的监测到,当发生危险事故时,可以实时的去追踪,查看当时高空抛物的视频,追踪到底是从哪家的窗口抛出的。

2.2方案设计

难点在于以下几点:

(1)抛出的物体相对于整个楼栋的目标太小;

(2)干扰因素较多,如白天的飞鸟、飘落的树叶、夜晚的背景楼栋灯光等;

(3)环境影响如雨天、雾天、逆光等环境对结果影响较大。

2.2.1数据采集

难点在于相机的位置和角度的安装。对于不同的层高,建议的安装距离和分辨率选择对应的相机焦距不同。针对夜间低照度,小区夜间光照不足,不建议通过补光的方式来提高环境照度,这样的环境下可以选型超星光摄像头,最低支持0.0002lux。白天高空抛物摄像头对着天空,白天有强烈的太阳光会造成逆光现象,可以选型摄像头支持120db的宽动态摄像头,同时也支持背光补偿。

2.2.2算法设计

1. 使用传统的动态目标检测,如光流检测和帧差法;

2. 使用目标检测+目标追踪算法,对抛出的物体先做目标检测,并对检测到的物体做追踪;

3. 使用物体追踪+过滤算法;

4.  使用视频分类的算法。

对于第一种方法传统方法的动态目标检测,如光流检测和帧差法,稳定性稍差,优点在于对于数据要求低。

对于第二种方法,使用目标检测检测被抛物体,并通过目标追踪对抛出物体的运动轨迹做追踪,会受到背景的影响很大,因为楼宇间的灯光等,同时使用目标检测+目标追踪的方法,其难点在于小目标的检测,很容易出现漏检

对于第三种方法,针对第二种方法中的目标检测算法的效果不佳,采用高斯背景建模的方法,过滤背景信息。再使用目标追踪如kalman滤波,完成运动轨迹的记录,同时针对第二种方法中视频中会出现的树叶、飞鸟以及晒衣服等的摆动等不符合抛物运动的轨迹的误检,通过SOM网络进行聚类,SOM(自组织映射神经网络)会对不同运动的轨迹进行分析:排除掉不符合抛物运动的轨迹

对于第四种方法,使用视频分类的方式,即对一段时间内的视频流做视频分类,这里可以通过第三步中先通过视频抽帧完成高斯背景建模,过滤掉背景后,再对前处理后的视频完成视频的分类。

本文主要选择第一种方法。

2.3算法实现

流程是先在PC端完成算法的实现后,再移植到安卓端。

2.3.1去抖动

背景建模的前提是保证摄像机拍摄位置不变,保证背景是基本不发生变化的。

其主要的原理是通过每张图的特征,找到两个图片的关键点,并基于关键点获得变换矩阵后,将原图通过变换矩阵变换后,与第一张原始图片对齐。

   def debouncing(self, image, index, ratio=0.7, reprojThresh=4.0, showMatches=False):
        image = cv2.resize(image, (int(image.shape[1]/1), int(image.shape[0]/1))) # 截帧图片的长宽的量化
        start = time.time() 
        (kps, features) = self.detectAndDescribe(image) # 对图片灰度化,并基于ORB算法,定位到关键点
        print(f"take 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值