赞
踩
import cv2 as cv import os.path
调了cv2库和numpy库等。cv2.videocapture("...");
d(x,y)=sqrt((x1-y1)*(x1-y1)+(x2-y2)*(x2-y2))
参数调优的目标通常是最小化泛化误差(generalization error),也可以根据具体任务自定义其他优化目标。泛化误差是指预测未知样本得到的误差,通常由验证集得到,调优的方法如网格搜索(grid search)、随机搜索(random search)、贝叶斯优化(bayesian optimization),是比较常用的算法,其他算法如基于梯度的优化(gradient-based optimization)、受启发于生物学的进化算法(evolution strategy)等。
差分隐私根据噪声扰动使用的方式和位置来进行分类:
输入扰动:噪声被加入训练数据。
目标扰动:噪声被加入学习算法的目标函数。
算法扰动:噪声被加入中间值,例如迭代算法中的梯度。
输出扰动:噪声被加入训练后的输出参数。
数据见下表: | 姓名 | 薪水 | |-王二-|-5000-| |-张三-|-6000-| |-李四-|-7000-| Python代码的具体实现如下: import numpy as np # 导入numpy库 def get_noisy_digit(value, epsilon): # 符合普拉斯分布的噪声 # 数学公式无需完全理解 u = np.random.random() - 0.5 noisy_digit = 0.0 - value/epsilon*np.sign(u)*np.log(1.0-2*np.abs(u)) return np.rint(noisy_digit) if __name__ == '__main__': company_salary = {'王二':5000,'张三':6000,'李四':7000} # 真实的人力资源数据 noisy_salary = company_salary.copy() # 新建的人力资源数据 value = 3000 # 薪水最大差距3000 epsilon = 4 # 隐私保护预算,值越小泄露风险越小,噪声越大 for i in company_salary: noisy_salary[i] = (noisy_salary[i] + get_noisy_digit(value, epsilon)) # 逐个加噪声 print('真实的数据如下:{}'.format(company_salary)) print('差分隐私后的数据如下:{}'.format(noisy_salary)) 运行代码后,得到结果如下: 真实的数据如下:{'王二': 5000, '张三': 6000, '李四': 7000} 差分隐私后的数据如下:{'王二': 6052.0, '张三': 6306.0, '李四': 7188.0} 可以看到,薪水数据经过差分隐私技术处理,发生了明显变化,从而有效的保护了薪水隐私。
3.1.2 数据集标注
使用labelImage标注工具,将车辆图片中包含车辆目标的部分进行人工标注,标注流程如图3所示。
图3 标注流程图
图片中若存在车辆目标,则用矩形框框出,并命名为car,如果没有车辆目标,则继续处理下一张图片,标注效果如图4所示。完成标注后,最终生成xml文件,存储矩形框位置坐标和类别信息,并保存在指定路径中,便于后期调用到模型中。
图4 标注图片效果图
3.1.3 模型训练
调整yolov3模型中的参数设置,将输入层中训练集图片设置为416x416尺寸,卷积层获取权重计算图像特征,通过前向传播输出结果值,与标注值进行误差比较,再进行反向传播调整权重大小,循环往复,直到误差值小于设定的阈值,找出训练最优的输出模型。
3.1.4车辆目标检测
使用训练好的最优检测模型,利用opencv图像处理库从车辆视频中截取得到一帧图像,作为检测数据的来源,使用模型分析图像中是否含有车辆,如果有,就会用矩形框框出其中的车辆.并得到车辆在图像中的坐标。如果没有车辆目标,则再次检测一帧视频图像。如图5所示为检测到车辆目标的效果图。
图5 检测车辆效果图
3.2 车流量统计模块
实现基于计算机视觉的车流量统计,目前主要采用的方法包括虚拟检测线法、虚拟检测线圈法、基于目标跟踪的车辆计数法等。为满足对检测准确度和精确度的要求,本项目结合这三种方法,在原来yolov3模型的基础上,融入相邻帧匹配策略,进行算法的优化,用于车流量统计。通过在道路上设置检测区域,在识别车辆目标的基础上,通过比较相邻帧之间的车辆坐标位置,从而完成车辆的计数。
3.2.1 相邻帧统计车辆
将相邻帧中心匹配策略和yolov3目标检测相融合,在实现车辆检测的同时,对统计区域进行计数,首先由yolov3得到所有检测车辆目标及其坐标位置,利用重心机制获取车辆的中心,与待统计区域的上界相比较能够减少了存入的次数,当车辆进入统计区时,将坐标存入MYSQL数据库,第二帧检测时,重心满足存储条件时,遍历数据库中所有数据,判断重心相近的数据,不需要计数,否则计数加一。清空表中所有车辆数据,再存入当前帧满足条件的车辆信息,为下一帧检测做准备。重复操作,直至统计完成。通过这样的方式,能够避免车辆数目的错误统计。测试结果表明,增加匹配基准的判定可以有效提高计数结果的准确率。相邻帧统计处理的效果如图6所示。
图6 相邻帧统计效果图
3.2.2 数据库存储车流量数据
利用数据库sql语言的insert语句,进行数据的存储。当检测完成后,系统调用代码中的存储函数,将统计的数据写入数据库,便于后期监管人员及时了解当前车流量的情况。数据库存储详情如图7所示。
图7 数据库存储数据详情
5.项目总结与展望
本项目主要研究了在固定场景下,通过交通视频对交通路况信息进行分析,涉及的内容主要包含数据处理、车辆目标检测和车流量统计等方面。最终实现了视频中车辆的统计与分析,具体内容包括:
(1)采用端到端的yolov3检测算法,实现交通道路场景下的目标定位和类型识别。
(2)利用opencv中按照帧率的方法提取图像,有效解决重复计数问题。
(3)将相邻帧中心匹配策略与yolov3模型相结合,通过相邻匹配的方法有效改善重复检测的问题。
(4)融入数据库存储技术,将统计的结果存入数据库中,便于后续进行数据的分析和预测。
鉴于团队成员能力有限,考虑问题不够全面、细致,其中还有许多地方还有更多的提升空间,如:
(1)系统未进行车辆的细致分类,如:大型车、小型车、非机动车等。
(2)检测场景比较固定,不能够应用于太复杂的路况。
(3)对天气、光影等外界因素欠缺考虑,使得结果难免会出现些许偏差。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。