一种非机动车逆行检测增量学习与车牌识别方法与流程

文档序号:32950283发布日期:2023-01-14 13:11阅读:354来源:国知局
一种非机动车逆行检测增量学习与车牌识别方法与流程

1.本发明涉及逆行检测增量学习与车牌识别方法技术领域,尤其是涉及一种非机动车逆行检测增量学习与车牌识别方法。


背景技术:

2.随着城市规模的扩大和人口的不断增加,各种非机动车成为人们正常出行生活中必不可少的交通工具,而非机动车数量多、车速快、骑行随意、难以管理等特性给交通出行安全带来很大安全隐患。因此,提升非机动车驾驶人员的文明守法率成为交通治理工作中的重要环节。然而,在交通治理过程中,管理部门投入大量警力资源到各个路口进行现场治理,一方面难以全面覆盖各个路口,无法起到持续性广泛性的震慑作用,另一方面对于现场执法的成效也很难作出精准的评价。因此,依靠人力去检测非机动车逆行的情况,存在着非常大的不稳定性和主观性,难以全角度的进行实时监控,同时将耗费巨大的人力物力成本。
3.目前随着计算机视觉和深度学习的迅速发展,目标检测和ocr识别技术在传统领域的应用越来越广泛,通过卷积神经网络、深度置信网、神经网络等构建一个全方位多层次的学习系统,可以更好的发挥人工智能的准确性、高效性、便捷性。特别是lprnet网络的出现,提高了ocr识别的准确率。同时yolov5的出现也使目标检测技术在实时性上取得巨大突破。
4.视觉算法在实际应用过程中,经常因为新的类别(比如新的种类的非机动车)出现以及完全不同的场景出现等因素造成检测算法失效,然而从头开始重新训练一个模型时间和资源代价很大,为解决这个问题,需要进行增量学习;而增量学习中,灾难性遗忘是主要应该避免的情况。


技术实现要素:

5.本发明的目的是提供一种非机动车逆行检测增量学习与车牌识别方法,以解决依靠人力去检测非机动车逆行的情况所存在的不稳定性、主观性、不全面性和耗费人力物力大的问题,同时还能够避免增量学习中的灾难性遗忘,提高对非机动车监管的效率和质量。
6.为实现上述目的,本发明提供了如下技术方案:
7.本发明主要用到的技术包括,基于深度学习的目标检测、ocr识别、增量学习和实时流协议rtsp。具体地,一种非机动车逆行检测增量学习与车牌识别方法,包括训练模块、摄像头调度模块、运动检测模块、gpu调度模块、非机动车逆行检测模块、车牌检测模块、ocr车牌识别模块、风险保存与上报模块、日志模块,其中:
8.1.1训练模块:负责收集训练数据,建立学习规则,实现增量学习,并避免灾难性遗忘,最终得到yolov5非机动车逆行检测模型和yolov5车牌检测模型;
9.1.2摄像头调度模块:主要基于rtsp的实时流协议,通过轮询算法选择要连接的摄像头组,获取视频流并从中抽帧;
10.1.3运动检测模块:检测画面是否有运动物体;
11.1.4 gpu调度模块:主要为非机动车逆行检测模块、车牌检测模块和ocr模块的模型分配对应的gpu资源,保证当视频帧达到一个batch后进行推理,提高模型的效率和精确度;
12.1.5非机动车逆行检测模块:主要基于yolov5非机动车逆行检测模型,检测摄像头的视频中的逆行非机动车;
13.1.6车牌检测模块:主要基于yolov5车牌检测模型,检测逆行非机动车中的车牌;
14.1.7 ocr车牌识别模块:主要基于改进的lprnet模型,识别车牌中的信息;
15.1.8风险保存与上报模块:将违规的的图片保存,并上报违规车辆的信息;
16.1.9日志模块:保存系统运行过程中的错误信息和警告信息。
17.优选的,训练模块(1.1)的实现方法如下:利用yolov5目标检测模型中的yolov5x网络模型进行训练得到yolov5非机动车逆行检测模型,利用yolov5目标检测模型中的yolov5s网络模型进行训练得到yolov5车牌检测模型,yolov5非机动车逆行检测模型和yolov5车牌检测模型的具体训练方法均依照如下步骤进行:
18.(1)在原有训练集基础上,收集新增类别的图片,并对图片进行标注生成标注框,将标注框划分为训练集、验证集和测试集然后构建模型进行训练,标注框的标签采用如下数据(i,x,y,w,h,c,b),其中i为图片的id,x为标注框左上角x坐标,y为标注框左上角y坐标,w为标注框宽度,h为标注框高度,c为标注框类别标签,b为标注框批次,其中,在yolov5x网络模型中训练时,c=0为自行车,c=1为电动车,c=2为摩托车,c=3为行人,c=4为其他(包括机动车),在yolov5s网络模型中训练时c=0为车牌;
19.(2)关于标注框批次的确定,训练集初始化时批次均设定为1,后续新增图片批次增1;
20.(3)增量学习中,在原yolov5x网络模型或yolov5ss网络模型基础上进行微调(fine-tuning),记录训练数据加入数据集的批次信息,根据批次确定学习规则,通过如下损失函数防止灾难性遗忘:
[0021][0022]
其中i
obj
是指示函数,表示某个锚窗口负责这个类别时才参与计算;bi是第(1)步记录的批次信息,ci是类别标签,pj(ci)是预测类别的概率;
[0023]
(4)关于检测框回归,采用如下的坐标方法计算:
[0024][0025][0026]
其中x,x
*
和xa分别表示标注框、预测框和锚框的左上角x坐标,y、y
*
和ya分别表示标注框、预测框和锚框的左上角y坐标,w、w
*
和wa分别表示标注框、预测框和锚框的框宽、h、h
*
和ha分别表示标注框、预测框和锚框的框高;t
x
为训练时得到的框回归参数,为预测时
得到的框回归参数,采用ciou损失函数对预测时得到的框回归参数回归,使ciou损失函数最小时得到最佳的最终得到训练好的yolov5非机动车逆行检测模型和yolov5车牌检测模型;
[0027]
优选的,摄像头调度模块(1.2)的实现方法如下:
[0028]
(1)将多路摄像头的信息写进配置文件中,包括摄像头的id,摄像头的名称,取帧的时间间隔;
[0029]
(2)通过轮询算法连接相应的摄像头,基于rtsp协议读取视频流,轮询算法实现如下:
[0030]
(2.1)假定摄像头分别为x1,x2,x3,

,xi,每个摄像头的初始分数都为s,将全部摄像头遍历一轮,每个摄像头连接1分钟,若检测到逆行的非机动车辆,则加m分;若一直没检测到,则减n分,一轮遍历过后将每个摄像头按分数排序,分别为s1,s2,s3,

,si;
[0031]
(2.2)之后连接s1,s2,s3,

,si中分数最高的30个摄像头,并为每个摄像头创建一个线程,连接3分钟之后断开连接,按照(2.1)中的规则统计每个摄像头分数(2.3)重复(2.2)中的操作,若某个摄像头连续连接次数超过最大阈值c,则分数减z;若某个摄像头在给定时间t内始终未被连接,则下轮连接会强制连接该摄像头;
[0032]
通过奖惩机制的轮询算法可以最大程度上优先连接出现逆行车辆多的摄像头,保证cpu和gpu资源可以得到更好的利用。
[0033]
(3)摄像头连接过程中加入断线重连机制,具体实现如下:
[0034]
(3.1)设定连接过程中的出错重连间隔time_error_waiting=10,最久重连间隔max_error_waiting=600,每次出错时延时4倍:
[0035]
time_error_waiting=min(max_error_waiting,time_error_waiting*4);
[0036]
(3.2)设定打开过程中的失败重连间隔timeout=1,最久失败重连间隔time_error_waiting=60,每次失败时延时2倍:
[0037]
timeout=min(timeout_max,timeout*2)。
[0038]
优选的,运动检测模块(1.3)的实现方法如下:
[0039]
(1)通过帧差法检测摄像头画面是否运动,由于摄像机采集的视频序列具有连续性的特点,如果场景内没有运动目标则连续帧的变化很微弱,如果存在运动的目标,则连续的帧和帧之间会有明显变化,具体实现如下:
[0040]
(1.1)记视频序列中的第n帧和n-1帧图像分别为fn和f
n-1
,两帧对应的像素点的灰度值记为fn(x,y)和f
n-1
(x,y),将两帧图像对应的像素点的灰度值进行相减,并取绝对值,得到差分图像dn:
[0041]dn
(x,y)=|fn(x,y)-f
n-1
(x,y)|;
[0042]
(1.2)设定阈值t,按照差分图像公式逐个对像素点进行二值化处理,得到二值化图像rn,其中,灰度值为255的点即为前景(运动目标)点,灰度值为0的点即为背景点;对图像rn进行连通性分析,最终可以得到含有完整运动目标的图像rn。
[0043][0044]
(2)只有运动情况下才会运用gpu进行推理。
[0045]
优选的,gpu控制模块(1.4)的实现方法如下:
[0046]
(1)存下当前帧i于全局图像链表is中;
[0047]
(2)检测全局图像链表is长度是否超过一定阈值minlen;
[0048]
(3)当检测到其超过给定的阈值minlen后,对全局图像链表is加锁,得到给定阈值数量的图像,并从全局图像链表is中删除,再解锁;
[0049]
(4)将获取到的图像组成一个batch,载入gpu进行训练,具体实现过程如下:
[0050]
if is.lenght》=minlen
[0051]
{
[0052]
lock(is);
[0053]
batch=is.get(minlen);
[0054]
is.remove(minlen);
[0055]
unlock(is);
[0056]
pack(batch);
[0057]
}。
[0058]
优选的,非机动车逆行检测模块(1.5)的实现方法如下:
[0059]
(1)接受gpu调度模块一个batch的图像;
[0060]
(2)由于不同摄像头的分辨率可能存在差异,这里采用自适应图片缩放,将imgsize设为1280*1280,由于实际使用过程中,因为图片的长宽比不同,会导致缩放填充后,两端的黑边大小不同,填充较多的情况下,可能会存在信息冗沉,影响推理速度,因此通过对原始图像的自适应添加最少的黑边;
[0061]
(3)通过yolov5非机动车逆行检测模型推理,得到预测类别和预测框信息,经过nms非极大值抑制,对获得的预测框进行筛选,原理如下:
[0062]
(3.1)得到预测的非机动车逆行图片的结果,n个预测框分别为σk(xk,yk,wk,hk,ck,pk),k=1,2,

,n,其中c为预测的类别,c=0为自行车,c=1为电动车,c=2为摩托车,c=3为行人,c=4为其他(包括机动车),p为预测类别的概率,0《p《1;
[0063]
(3.2)计算任意两个预测框的交并比iou(σi,σj):
[0064]
两个预测框的交集部分:
[0065]
inter(σi,σj)=max(min(xi+wi,xj+wj)-max(xi,xj)+1,0)
×
max(min(yi+hi,yj+hj)-max(yi,yj)+1,0);
[0066]
交并比:
[0067][0068]
(3.3)设定阈值τ,若iou(σi,σj)≥τ且ci=cj,则比较pi和pj,将较小概率的预测框删除;
[0069]
(3.4)将c=0,1,2,3的预测框,即逆行非机动车的预测框在非机动车逆行图片中绘制出,并按照(x,y,w,h)将预测框从非机动车逆行图片中分割保存。
[0070]
优选的,车牌检测模块(1.6)的实现方法如下:
[0071]
(1)接受权利要求6中(3.4)当中的筛选完成的非机动车逆行图片;
[0072]
(2)通过yolov5车牌检测模型,得到筛选完成的车牌图片,原理如下:
[0073]
(2.1)得到预测的逆行非机动车的车牌图片的结果,n个预测框分别为σk(xk,yk,wk,hk,ck,pk),k=1,2,

,n,其中c为预测的类别,c=0为车牌,p为预测类别的概率,0《p《1;
[0074]
(2.2)计算任意两个预测框的交并比iou(σi,σj):
[0075]
两个预测框的交集部分:
[0076]
inter(σi,σj)=max(min(xi+wi,xj+wj)-max(xi,xj)+1,0)
×
max(min(yi+hi,yj+hj)-max(yi,yj)+1,0);
[0077]
交并比:
[0078][0079]
(2.3)设定阈值τ,若iou(σi,σj)≥τ且ci=cj,则比较pi和pj,将较小概率的预测框删除;
[0080]
(2.4)将c=0的预测框,即逆行非机动车的车牌的预测框在逆行非机动车的车牌图片中绘制出,并按照(x,y,w,h)将预测框从逆行非机动车的车牌图片中分割保存,得到筛选完成的车牌图片。
[0081]
优选的,ocr车牌识别模块(1.7)的实现方法如下:
[0082]
(1)设置ocr车牌识别的自定义字典,包括字母、数字、汉字,字典应包含所有要识别的内容;
[0083]
(2)对筛选完成的车牌图片进行灰度化处理,灰度化采用现行通用的标准平均值法,用g表示灰度后的灰度值,r,g,b表示原来真彩色图中的红,绿,蓝分量,则有:
[0084]
g=0.110b+0.588g+0.322r;
[0085]
(3)对上一步骤得到的图片进行图像对比度增强,因为考虑到车牌识别属于全天候的工作性质,若无理想的补充光照明,自然光照度昼夜变化会引起牌照图像对比度严重不足使图片模糊不清,因此采用图像灰度线性扩展的方法,突出感兴趣的目标或者灰度区间,抑制不感兴趣的灰度区间,设原图像f(x,y)的灰度值范围为a≤f(x,y)≤b,线性变换后,图像g(x,y)的范围为0≤g(x,y)≤mf,f(x,y)和g(x,y)的变换关系表达式为:
[0086][0087]
(4)对上一步骤得到的图片进行图像中值滤波,中值滤波是一种非线性的滤波技术,由于在实际计算过程不需要图像统计特性,所以比较方便,在一定条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤波脉冲好图像扫描噪声比较有效,具体原理是设有一个一维序列f1,f2,

,fn,取窗口长度为奇数m,对此序列进行中值滤波,就是从输入序列中相续抽出m个数,f
i-v
,fi,f
i+v
,其中救火窗口的中心值,v=(m-1)/2,再将这m个点的数值按其数值大小排序,取其序号为正中间的那个数作为滤波器输出,其表达式为:
[0088]
yi=med{f
i-v
,

,fi,

,f
i+v
}i∈z v=(m-1)/2,
[0089]
对数字图像中值滤波实际上是对二维序列的中值滤波,滤波窗口也是二维的,用一个滑动窗口w在图像上进行扫捕,把窗口内包含的图像像素按灰度级升或降序排列,取灰度值居中的像素灰度为窗口中心像素的灰度,公式为:
[0090]
x(m,n)=median{f(m-k,n-1),(k-1)∈w},
[0091]
本方法采用的中值滤波的窗口为3*3;
[0092]
(5)对上一步骤得到的图片进行图像边缘检测,主要用来检测灰度级具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方,本方法采用log算子,log边缘检测器的基本特征是:
[0093]
(5.1)平滑滤波器是高斯滤波器;
[0094]
(5.2)增强步骤才用二阶导数(二维拉普拉斯函数);
[0095]
(5.3)边缘检测判据是二阶导数零交叉点并对应一阶导数较大峰值;
[0096]
(5.4)使用线性内插法;
[0097]
这种方法的特点是图像首先与高斯滤波器进行卷积,这一步即平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除,由于平滑会导致边缘的延展,因此边缘检测器要考虑那些具有局部梯度最大值的边缘点,这一点可以用二阶导数的零交叉点来实现,拉普拉斯函数用作二维的二阶导数的近似,是因为它是一种无方向算子,为了避免检测出现非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘log算子,对图像f(x,y)进行边缘检测,输出h(x,y)是通过卷积运算得到的:
[0098][0099]
由于图像的平滑会引起边缘的模糊,高斯平滑运算导致图像中的边缘和其他尖锐不连续部分的模糊,其中模糊量取决于σ值,σ值越大,噪声滤波效果越好,但同时会丢掉很多边缘信息,影响边缘检测器的性能,如果σ值取小,又有可能平滑不完全而留有太多噪声,两者结合,本方法中σ的取值为2;
[0100]
(6)对上一步骤得到的图片进行车牌倾斜矫正,水平矫正:采用hough变换,检测车牌上下边缘两条明显直线的倾斜角度,然后对牌照进行水平倾斜纠正;竖直矫正:同样采用hough变换,检测车牌左右边缘,得出倾斜角度后矫正;
[0101]
(7)对上一步骤得到的图片进行文字分割和识别,采用lprnet网络模型识别,该lprnet网络模型本质上还是crnn的轻量化修改,使用的损失函数还是ctc loss,推理速度快,准确率高,支持在各种嵌入式平台上跑,同时具有较好的鲁棒性,受相机参数、视角、光照影响小;
[0102]
lprnet网络模型输入图片大小为94*24,lprnet网络模型最后使用一个1*13的卷积来替代原始crnn中的istm,最终采用ctc loss进行训练,测试阶段,采用greedy search或者beam search的解码方式,greedy search挑选每个预测位置的最大概率的预测结果进行解码,beam search挑选整个预测序列的最大概率进行解码。
[0103]
优选的,风险保存与上报模块(1.8)的实现方法如下:
[0104]
(1)筛选完成的非机动车逆行图片和筛选完成的车牌图片,以及逆行非机动车车牌信息;
[0105]
(2)将筛选完成的非机动车逆行图片和筛选完成的车牌图片保存到minio存储器;
[0106]
(3)将逆行非机动车车牌信息通过生产者传递到kafka。
[0107]
本发明采用上述结构的非机动车逆行检测增量学习与车牌识别方法,采用目标检测和ocr识别相结合的思想,通过人工智能的方式对非机动车做到有效监管,提升效率,降
低人工成本。加入增量学习避免高代价的零起点学习,同时采用批次方式避免增量学习中的灾难性遗忘。本发明使用两个目标检测模型检测逆行的非机动车车牌,用第一个模型检测逆行的非机动车,第二个模型检测违规车牌,准确度更高。
附图说明
[0108]
图1为本发明的系统结构图;
[0109]
图2为本发明除训练模块的系统流程图;
[0110]
图3为本发明训训练模块的流程图。
具体实施方式
[0111]
以下结合附图和实施例对本发明的技术方案作进一步说明。
[0112]
一种非机动车逆行检测增量学习与车牌识别方法,如图1所示包括训练模块、摄像头调度模块、运动检测模块、gpu调度模块、非机动车逆行检测模块、车牌检测模块、ocr车牌识别模块、风险保存与上报模块、日志模块。训练模块负责模型训练,得到的数据模型为非机动车逆行检测模块的识别提供基础。摄像头调度模块负责通过轮询算法,连接要读取的摄像头组,根据rtsp协议从摄像头中获得视频流,按照一定的时间间隔进行抽帧,将同一个摄像头的视频帧送入运动检测模块检测。运动检测模块主要用于检测摄像头画面中是否有运动,因为如果针对所有摄像头都进行不间断的24小时的深度学习视频分析,对gpu的负载极大,所以引入运动检测,仅当存在图像运动的情况下才进行图像分析处理,将昂贵的gpu资源转化为廉价的cpu计算核心上去。gpu调度模块主要接受运动检测模块筛选过的视频帧,并将视频帧传入训练模块步骤中得到的数据模型的待推理队列中等待处理,同时为非机动车逆行检测模块、车牌检测模块和ocr车牌识别模块的模型分配gpu资源,当元素数量超过设置的阈值时,将元素打包成一个batch送到非机动车逆行检测模块推理;当超过一定的时间元素数量仍没有满足要求,会强制把剩余元素推送到非机动车逆行检测模块,保证了gpu的高效利用。非机动车逆行检测模块主要是基于yolov5非机动车逆行检测模型对视频帧进行检测,将其中的逆行非机动车用矩形框框出,同时将逆行非机动车图片从原图中分割出来发送给车牌检测模型。车牌检测模型主要是基于yolov5车牌检测模型对逆行非机动车图片进行检测,检测非机动车的车牌,并将车牌图片传递给ocr车牌识别模型,由识别模型识别车牌信息。风险保存与上报模块主要是上报风险信息并向前端平台发出警告信号,以进行前端展示。日志模块记录错误为系统后期调试提供依据。
[0113]
1.1训练模块:负责收集训练数据,建立学习规则,实现增量学习,并避免灾难性遗忘,最终得到yolov5非机动车逆行检测模型和yolov5车牌检测模型。
[0114]
训练模块的实现方法如下:利用yolov5目标检测模型中的yolov5x网络模型进行训练得到yolov5非机动车逆行检测模型,利用yolov5目标检测模型中的yolov5s网络模型进行训练得到yolov5车牌检测模型,yolov5非机动车逆行检测模型和yolov5车牌检测模型的具体训练方法均依照如下步骤进行:
[0115]
(1)在原有训练集基础上,收集新增类别的图片,图片的收集可以从多路摄像头获取已有的视频资料及图像资料,挑取不同角度下,不同场景下,不同时间段,车流动较大的情况下的视频及图像资料,或者是从摄像头直接通过rtsp协议进行视频抽帧处理,然后将
获取的视频及图片资料传到本系统。在视频抽帧处理过程中,本系统需要对获得的视频进行跳帧操作,为尽量实际路况的现实情况,提高本发明的准确率,在进行跳帧处理时,选取间隔时间相同的帧,然后对获得图像进行必要的挑选。有些非机动车变动不明显或者是图像上没有出现非机动车,以及图像上的非机动车模糊不清,对模型训练没有起到积极效果的这些图片进行相应的丢弃处理。将车流动明显,非机动车多样,非机动车近距离和远距离的拍摄情况都很全面的图像进行保留。
[0116]
对图片进行标注生成标注框,标注框的标签采用如下数据(i,x,y,w,h,c,b),其中i为图片的id,x为标注框左上角x坐标,y为标注框左上角y坐标,w为标注框宽度,h为标注框高度,c为标注框类别标签,b为标注框批次,其中,在yolov5x网络模型中训练时,c=0为自行车,c=1为电动车,c=2为摩托车,c=3为行人,c=4为其他(包括机动车),在yolov5s网络模型中训练时c=0为车牌。因为获取的数据有限,所以需要对数据进行预处理,即将获得的数据进行mosaic数据增强操作,平移、旋转缩放数据增强操作,自适应锚框计算和自适应图片缩放,提高本发明的准确率。标注主要依靠人力和相关标注软件同时进行,数据标注完成后划分为训练集,验证集及测试集,然后构建模型进行训练。
[0117]
(2)关于标注框批次的确定,训练集初始化时批次均设定为1,后续新增图片批次增1;
[0118]
(3)增量学习中,在原yolov5x网络模型或yolov5ss网络模型基础上进行微调(fine-tuning),记录训练数据加入数据集的批次信息,根据批次确定学习规则,通过如下损失函数防止灾难性遗忘:
[0119][0120]
其中i
obj
是指示函数,表示某个锚窗口负责这个类别时才参与计算;bi是第(1)步记录的批次信息,ci是类别标签,pj(ci)是预测类别的概率;
[0121]
(4)关于检测框回归,采用如下的坐标方法计算:
[0122][0123][0124]
其中x,x
*
和xa分别表示标注框、预测框和锚框的左上角x坐标,y、y
*
和ya分别表示标注框、预测框和锚框的左上角y坐标,w、w
*
和wa分别表示标注框、预测框和锚框的框宽、h、h
*
和ha分别表示标注框、预测框和锚框的框高;t
x
为训练时得到的框回归参数,为预测时得到的框回归参数,采用ciou损失函数对预测时得到的框回归参数回归,使ciou损失函数最小时得到最佳的最终得到训练好的yolov5非机动车逆行检测模型和yolov5车牌检测模型。以上两个模型分别供给非机动车逆行检测模块和车牌检测模块使用。
[0125]
1.2摄像头调度模块:根据配置文件信息加载摄像头信息,将摄像头按照三十个一组分成若干组,通过轮询算法选择要连接的摄像头组,基于rtsp的实时流协议获取视频流
并从中抽帧送入运动检测模块检测。
[0126]
摄像头调度模块的实现方法如下:
[0127]
(1)将多路摄像头的信息写进配置文件中,包括摄像头的id,摄像头的名称,取帧的时间间隔;
[0128]
(2)据配置文件信息加载摄像头信息,通过轮询算法连接相应的摄像头,基于rtsp协议读取视频流,轮询算法实现如下:
[0129]
(2.1)假定摄像头分别为x1,x2,x3,

,xi,每个摄像头的初始分数都为s,将全部摄像头遍历一轮,每个摄像头连接1分钟,若检测到逆行的非机动车辆,则加m分;若一直没检测到,则减n分,一轮遍历过后将每个摄像头按分数排序,分别为s1,s2,s3,

,si;
[0130]
(2.2)之后连接s1,s2,s3,

,si中分数最高的30个摄像头,并为每个摄像头创建一个线程,连接3分钟之后断开连接,按照(2.1)中的规则统计每个摄像头分数;
[0131]
(2.3)重复(2.2)中的操作,若某个摄像头连续连接次数超过最大阈值c,则分数减z;若某个摄像头在给定时间t内始终未被连接,则下轮连接会强制连接该摄像头;
[0132]
通过奖惩机制的轮询算法可以最大程度上优先连接出现逆行车辆多的摄像头,保证cpu和gpu资源可以得到更好的利用。
[0133]
(3)摄像头通过rtsp协议连接时,可能会因为网络或者线缆原因出现超时现象,因此在摄像头连接过程中加入断线重连机制,当连接超时时,重新回到连接摄像头的步骤,如果连接成功,则判断摄像头是否正常打开。具体实现如下:
[0134]
(3.1)设定连接过程中的出错重连间隔time_error_waiting=10,最久重连间隔max_error_waiting=600,每次出错时延时4倍:
[0135]
time_error_waiting=min(max_error_waiting,time_error_waiting*4);
[0136]
(3.2)设定打开过程中的失败重连间隔timeout=1,最久失败重连间隔time_error_waiting=60,每次失败时延时2倍:
[0137]
timeout=min(timeout_max,timeout*2)。
[0138]
1.3运动检测模块:检测画面是否有运动物体;
[0139]
运动检测模块的实现方法如下:
[0140]
(1)通过帧差法检测摄像头画面是否运动。帧差法依据的原则是:当视频中存在移动物体的时候,相邻帧(或相邻三帧)之间在灰度上会有差别,求取两帧图像灰度差的绝对值,则静止的物体在差值图像上表现出来全是0,而移动物体特别是移动物体的轮廓处由于存在灰度变化为非0,当绝对值超过一定阈值时,即可判断为运动目标,从而实现目标的检测功能。由于摄像机采集的视频序列具有连续性的特点,如果场景内没有运动目标则连续帧的变化很微弱,如果存在运动的目标,则连续的帧和帧之间会有明显变化,具体实现如下:
[0141]
(1.1)记视频序列中的第n帧和n-1帧图像分别为fn和f
n-1
,两帧对应的像素点的灰度值记为fn(x,y)和f
n-1
(x,y),将两帧图像对应的像素点的灰度值进行相减,并取绝对值,得到差分图像dn:
[0142]dn
(x,y)=|fn(x,y)-f
n-1
(x,y)|;
[0143]
(1.2)设定阈值t,按照差分图像公式逐个对像素点进行二值化处理,得到二值化图像rn,其中,灰度值为255的点即为前景(运动目标)点,灰度值为0的点即为背景点;对图
像rn进行连通性分析,最终可以得到含有完整运动目标的图像rn。
[0144][0145]
(2)只有运动情况下才会运用gpu进行推理。
[0146]
1.4gpu调度模块:主要为非机动车逆行检测模块、车牌检测模块和ocr模块的模型分配对应的gpu资源,保证当视频帧达到一个batch后进行推理,提高模型的效率和精确度。
[0147]
gpu控制模块(1.4)的实现方法如下:
[0148]
对通过运动检测模块的视频流按照一定的时间间隔进行取帧,同时为每个视频帧附上唯一的时间戳,将视频帧、时间戳和摄像头图片队列打包成元素,送入每个模型的待推理元素队列。当元素数量满足一个batch后将一个batch的元素交由非机动车逆行检测模块进行推理,当超过给定的时间阈值后仍未满足batch数量,系统会将剩余元素强制推送给非机动车逆行检测模块推理。赋予时间戳的目的是保证各个摄像头在共用一个模型推理时的前后时间顺序不会出现问题,具体步骤如下:
[0149]
(1)存下当前帧i于全局图像链表is中;
[0150]
(2)检测全局图像链表is长度是否超过一定阈值minlen;
[0151]
(3)当检测到其超过给定的阈值minlen后,对全局图像链表is加锁,得到给定阈值数量的图像,并从全局图像链表is中删除,再解锁;
[0152]
(4)将获取到的图像组成一个batch,载入gpu进行训练。
[0153]
具体算法代码如下:
[0154]
if is.lenght》=minlen
[0155]
{
[0156]
lock(is);
[0157]
batch=is.get(minlen);
[0158]
is.remove(minlen);
[0159]
unlock(is);
[0160]
pack(batch);
[0161]
}。
[0162]
1.5非机动车逆行检测模块:主要基于yolov5非机动车逆行检测模型,检测摄像头的视频中的逆行非机动车。如果视频帧中存在逆行的非机动车,模型会将其检测出来,并把轮廓用矩形框框出,并将位置和类别信息保存,将矩形框框出的逆行的非机动车从原图中分割出传给车牌检测模型判断,由车牌检测检测出其中的车牌。
[0163]
非机动车逆行检测模块的实现方法如下:
[0164]
(1)接受gpu调度模块一个batch的图像;
[0165]
(2)由于不同摄像头的分辨率可能存在差异,这里采用自适应图片缩放,将imgsize设为1280*1280,由于实际使用过程中,因为图片的长宽比不同,会导致缩放填充后,两端的黑边大小不同,填充较多的情况下,可能会存在信息冗沉,影响推理速度,因此通过对原始图像的自适应添加最少的黑边;
[0166]
(3)通过yolov5非机动车逆行检测模型推理,得到预测类别和预测框信息,经过nms非极大值抑制,对获得的预测框进行筛选,原理如下:
[0167]
(3.1)得到预测的非机动车逆行图片的结果,n个预测框分别为σk(xk,yk,wk,hk,ck,pk),k=1,2,

,n,其中c为预测的类别,c=0为自行车,c=1为电动车,c=2为摩托车,c=3为行人,c=4为其他(包括机动车),p为预测类别的概率,0《p《1;
[0168]
(3.2)计算任意两个预测框的交并比iou(σi,σj):
[0169]
两个预测框的交集部分:
[0170]
inter(σi,σj)=max(min(xi+wi,xj+wj)-max(xi,xj)+1,0)
×
max(min(yi+hi,yj+hj)-max(yi,yj)+1,0);
[0171]
交并比:
[0172][0173]
(3.3)设定阈值τ,若iou(σi,σj)≥τ且ci=cj,则比较pi和pj,将较小概率的预测框删除;
[0174]
(3.4)将c=0,1,2,3的预测框,即逆行非机动车的预测框在非机动车逆行图片中绘制出,并按照(x,y,w,h)将预测框从非机动车逆行图片中分割保存。
[0175]
1.6车牌检测模块:主要基于yolov5车牌检测模型,检测逆行非机动车中的车牌。
[0176]
车牌检测模块的实现方法如下:
[0177]
(1)接受权利要求6中(3.4)当中的筛选完成的非机动车逆行图片;
[0178]
(2)通过yolov5车牌检测模型,得到筛选完成的车牌图片,原理如下:
[0179]
(2.1)得到预测的逆行非机动车的车牌图片的结果,n个预测框分别为σk(xk,yk,wk,hk,ck,pk),k=1,2,

,n,其中c为预测的类别,c=0为车牌,p为预测类别的概率,0《p《1;
[0180]
(2.2)计算任意两个预测框的交并比iou(σi,σj):
[0181]
两个预测框的交集部分:
[0182]
inter(σi,σj)=max(min(xi+wi,xj+wj)-max(xi,xj)+1,0)
×
max(min(yi+hi,yj+hj)-max(yi,yj)+1,0);
[0183]
交并比:
[0184][0185]
(2.3)设定阈值τ,若iou(σi,σj)≥τ且ci=cj,则比较pi和pj,将较小概率的预测框删除;
[0186]
(2.4)将c=0的预测框,即逆行非机动车的车牌的预测框在逆行非机动车的车牌图片中绘制出,并按照(x,y,w,h)将预测框从逆行非机动车的车牌图片中分割保存,得到筛选完成的车牌图片。
[0187]
1.7ocr车牌识别模块:主要基于改进的lprnet模型,识别车牌中的信息,将逆行的非机动车车牌图片和风险信息传给风险保存与上报模块。
[0188]
ocr车牌识别模块的实现方法如下:
[0189]
(1)设置ocr车牌识别的自定义字典,包括字母、数字、汉字,字典应包含所有要识别的内容;
[0190]
(2)对筛选完成的车牌图片进行灰度化处理,灰度化采用现行通用的标准平均值法,用g表示灰度后的灰度值,r,g,b表示原来真彩色图中的红,绿,蓝分量,则有:
[0191]
g=0.110b+0.588g+0.322r;
[0192]
(3)对上一步骤得到的图片进行图像对比度增强,因为考虑到车牌识别属于全天候的工作性质,若无理想的补充光照明,自然光照度昼夜变化会引起牌照图像对比度严重不足使图片模糊不清,因此采用图像灰度线性扩展的方法,突出感兴趣的目标或者灰度区间,抑制不感兴趣的灰度区间,设原图像f(x,y)的灰度值范围为a≤f(x,y)≤b,线性变换后,图像g(x,y)的范围为0≤g(x,y)≤mf,f(x,y)和g(x,y)的变换关系表达式为:
[0193][0194]
(4)对上一步骤得到的图片进行图像中值滤波,中值滤波是一种非线性的滤波技术,由于在实际计算过程不需要图像统计特性,所以比较方便,在一定条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤波脉冲好图像扫描噪声比较有效,具体原理是设有一个一维序列f1,f2,

,fn,取窗口长度为奇数m,对此序列进行中值滤波,就是从输入序列中相续抽出m个数,f
i-v
,fi,f
i+v
,其中救火窗口的中心值,v=(m-1)/2,再将这m个点的数值按其数值大小排序,取其序号为正中间的那个数作为滤波器输出,其表达式为:
[0195]
yi=med{f
i-v
,

,fi,

,f
i+v
}i∈z v=(m-1)/2,
[0196]
对数字图像中值滤波实际上是对二维序列的中值滤波,滤波窗口也是二维的,用一个滑动窗口w在图像上进行扫捕,把窗口内包含的图像像素按灰度级升或降序排列,取灰度值居中的像素灰度为窗口中心像素的灰度,公式为:
[0197]
x(m,n)=median{f(m-k,n-1),(k-1)∈w},
[0198]
本方法采用的中值滤波的窗口为3*3;
[0199]
(5)对上一步骤得到的图片进行图像边缘检测,主要用来检测灰度级具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方,本方法采用log算子,log边缘检测器的基本特征是:
[0200]
(5.1)平滑滤波器是高斯滤波器;
[0201]
(5.2)增强步骤才用二阶导数(二维拉普拉斯函数);
[0202]
(5.3)边缘检测判据是二阶导数零交叉点并对应一阶导数较大峰值;
[0203]
(5.4)使用线性内插法;
[0204]
这种方法的特点是图像首先与高斯滤波器进行卷积,这一步即平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除,由于平滑会导致边缘的延展,因此边缘检测器要考虑那些具有局部梯度最大值的边缘点,这一点可以用二阶导数的零交叉点来实现,拉普拉斯函数用作二维的二阶导数的近似,是因为它是一种无方向算子,为了避免检测出现非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘log算子,对图像f(x,y)进行边缘检测,输出h(x,y)是通过卷积运算得到的:
[0205][0206]
由于图像的平滑会引起边缘的模糊,高斯平滑运算导致图像中的边缘和其他尖锐不连续部分的模糊,其中模糊量取决于σ值,σ值越大,噪声滤波效果越好,但同时会丢掉很
多边缘信息,影响边缘检测器的性能,如果σ值取小,又有可能平滑不完全而留有太多噪声,两者结合,本方法中σ的取值为2;
[0207]
(6)对上一步骤得到的图片进行车牌倾斜矫正,水平矫正:采用hough变换,检测车牌上下边缘两条明显直线的倾斜角度,然后对牌照进行水平倾斜纠正;竖直矫正:同样采用hough变换,检测车牌左右边缘,得出倾斜角度后矫正;
[0208]
(7)对上一步骤得到的图片进行文字分割和识别,采用lprnet网络模型识别,该lprnet网络模型本质上还是crnn的轻量化修改,使用的损失函数还是ctc loss,推理速度快,准确率高,支持在各种嵌入式平台上跑,同时具有较好的鲁棒性,受相机参数、视角、光照影响小;
[0209]
lprnet网络模型输入图片大小为94*24,lprnet网络模型最后使用一个1*13的卷积来替代原始crnn中的istm,最终采用ctc loss进行训练,测试阶段,采用greedy search或者beam search的解码方式,greedy search挑选每个预测位置的最大概率的预测结果进行解码,beam search挑选整个预测序列的最大概率进行解码。
[0210]
1.8风险保存与上报模块:将违规的的图片保存,并上报违规车辆的信息。收到风险信息和图片时,会将风险信息通过生产值传递给kafka,将风险图片保存到minio服务器中,并向前端平台发出报警信号进行前端展示。
[0211]
风险保存与上报模块(1.8)的实现方法如下:
[0212]
(1)接受筛选完成的非机动车逆行图片和筛选完成的车牌图片,以及逆行非机动车车牌信息;
[0213]
(2)将筛选完成的非机动车逆行图片和筛选完成的车牌图片保存到minio存储器;
[0214]
(3)将逆行非机动车车牌信息通过生产者传递到kafka。
[0215]
1.9日志模块:保存系统运行过程中的错误信息和警告信息。
[0216]
因此,本发明采用上述结构的非机动车逆行检测增量学习与车牌识别方法,采用目标检测和ocr识别相结合的思想,通过人工智能的方式对非机动车做到有效监管,提升效率,降低人工成本。加入增量学习避免高代价的零起点学习,同时采用批次方式避免增量学习中的灾难性遗忘。本发明使用两个目标检测模型检测逆行的非机动车车牌,用第一个模型yolov5非机动车逆行检测模型检测逆行的非机动车,第二个模型yolov5车牌检测模型检测违规车牌,准确度更高。
[0217]
以上是本发明的具体实施方式,但本发明的保护范围不应局限于此。任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内,因此本发明的保护范围应以权利要求书所限定的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1