APP下载

基于卷积神经网络的车辆识别设计与实现

2019-05-22叶亚光

电脑知识与技术 2019年10期
关键词:卷积神经网络深度学习

叶亚光

摘要:随着人工智能的不断发展,对于传统领域提出了新的挑战。在大数据时代,图片和视频信息的成倍增长,如何从这些信息中提取出我们“感兴趣”的数据,成了越来越多学者研究的重点。本文基于卷积神经网络,构建车辆图像数据库,参考当下计算机视觉领域新提出的GoogleNet网络分类模型,修改NVDIA提出的Detection网络部分层,调整学习率、激活函数等部分训练参数和网络结构,形成新的object detection网络结构,提高对于图像和视频中车辆的识别率。

关键词:深度学习;卷积神经网络;车辆识别

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2019)10-0169-02

开放科学(资源服务)标识码(OSID):

随着社会的发展,人们的生活水平的提高,安全意识逐渐增大,城市中监控系统的投入不断增多,带来了越来越多的视频数据。从这些海量的视频数据中找出有效且需要的数据需要投入大量的人力,那么能否利用计算机视觉领域的深度学习,通过前期大量有效的车辆标记数据进行训练,建立识别车辆数据的神经网络,通过该神经网络代替人脑进行解读视频数据,识别出有效的车辆数据。其中涉及有卷积神经网络及深度学习等相关内容。

深度学习是一种特征学习方法,把原始数据通过简单而非线性的模型转变成更高层次、更抽象的表达。卷积神经网 络(CNN)具有提取反映数据本质的隐性特征及可扩展性的优越性能,可被用于几乎全部的目标识别分类领域,例如交通信号识别、人脸识别、道路场景解析、图像理解等。在车辆检测方面,其区别于浅层学习的突出优点之一在于算法的可扩展性,能够进一步扩展识别交通环境中的多类目标。[2]

本文选用的神经网络为卷积神经网络,并在当下较流行的caffe深度学习框架,使用6G显存的GTX1060显卡,GPU模式,ubuntu16.04操作系统,Python2.7语言等开发环境,进行视频数据的车辆识别。经实验证明,该神经网络具识别速度快,准确度高等特点。

1 深度学习框架caffe篇

工欲善其事必先利其器,需要使用caffe学习框架,就需要从搭建caffe环境开始。搭建caffe环境分为以下几个模块,分别是Ubuntu、CUDA、cuDNN、OpenCV等。本文使用的操作系统为Ubuntu16.04LTS,需要注意的是,由于使用nvidia公司的GTX1060显卡,先屏蔽操作系统自带的显卡驱动再上官网下载安装对应的驱动程序。

本文使用的GPU训练方式,由于需要提高训练速度,需要安装CUDA运算平台和GPU加速库,本文使用CUDA为8.0版本,cuDNN为7.2.1版本。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,在处理车辆数据时,需要使用到OPenCV的库函数,本文安装的OPenCV版本为3.2.0。

以上环境都安装齐全的条件下,安装caffe学习框架,本文使用nvcaffe版本,由于caffe需要使用到各种库函数,根据个人经验,py语言提供强大的库函数,能够满足caffe的需求。本文使用的2.7版的python语言。

2 数据标注及训练篇

本文采用半监督学习的方式进行车辆数据的训练,那么就需要告诉电脑什么是车辆。本文参考KITTI数据集格式及结合数据集标记软件对车辆数据进行标记形成实验所需要用到的车辆数据集。

本文采用nvidia公司的digits工具进行数据集的生成和网络的训练。通过数据集生成功能模块,将标记数据集生成LMDB格式数据。再由分类器googlenet和修改后的Detection卷积网络对数据集(LMDB)进行训练,通过调整学习率等参数,得到30次迭代训练后的结果。选择识别度较高的网络结构文件和权重文件,用于之后测试使用。

由于卷积神经网络在模型训练时耗时较长,利用样本反馈在线更新网络模型难度大,且实时性效果差等缺点。因而本文的做法是提前对网络模型进行训练,不实施在线更新。模型训练完成后,直接将模型带入到测试程序框架中,以检测的方式完成对每一张图片里的车辆识别。模型检测的结果会计算出目标的预测位置。[3]

3 网络模型结构篇

本文采用GoogleNET网络模型作为基础,修改网络部分层,实现对车辆数据的识别。本文的卷积神经网络结构为数据输入层、Slice层,卷积层、python层、池化层、激活函数层、LOSS层、dropout层等多层次结构。

卷积层根据需要设置卷积核的个数、卷积核的大小、卷积核的步长、权值初始化、偏置项的初始化、扩充边缘等参数。池化层采用MAX池化方式,根据各层需要修改kernel_size和stride参数。

根据AlexNet的论文,本文使用的激活函数层大部分激活函数使用ReLU类型,小部分激活函数使用Sigmoid类型。Relu激活函数(The Rectified Linear Unit)表达式为:f(x)=max(0,x)f(x)=max(0,x)。相比sigmoid和tanh函数,Relu激活函数的优点在于:

1)梯度不饱和。梯度计算公式为:1{x>0}1{x>0}。因此在反向傳播过程中,减轻了梯度弥散的问题,神经网络前几层的参数也可以很快的更新。

2)计算速度快。正向传播过程中,sigmoid函数计算激活值时需要计算指数,而Relu函数仅需要设置阈值。如果x<0,f(x)=0x<0,f(x)=0,如果x>0,f(x)=xx>0,f(x)=x。加快了正向传播的计算速度。因此,Relu激活函数可以极大地加快收敛速度。

在python层中,根据需要自定义编写自己的目标识别框,使用caffe.layers.detectnet.clustering模块并设置param_str参数。将侦测目标的位置用矩形框编出来,bbox-list表示相对1248*384侦测到的目标座标。

4 实验结果篇

经过30次迭代计算,将30次训练生成的loss_bbox率和loss_covarage率以图表的形式表示。实验结果表明,第30次迭代计算,有较低的loss_bbox率和loss_covarage率。接下来,自己用python2.7语言编写demo.py,通过import caffe语句导入caffe模块,通过detection(img, net, transformer)函数,用该模型对测试图片进行目标侦测,查看是否能准确地将车辆数据标记出来。

5 结束语

随着技术的发展,越来越多的深度学习开源框架展现在我们面前,例如Tensorflow,Torch等。这些工具不仅性能优异而且可以使用在小型开发版上,更适合嵌入式深度学习应用。更为重要的是,使用这些框架训练得到的模型可以直接高效地部署到交通和安防等应用领域中,促进物联网技术的发展,不断提高国家信息化水平。

参考文献:

[1] 蔡英凤,王海,陈龙,等.采用视觉显著性和深度卷积网络的鲁棒视觉车辆识别算法[J].清华大学学报:自然科学版,2015,36(3):333-336.

[2] 李琳辉,伦智梅,连静,等.基于卷积神经网络的道路车辆检测方法[J].吉林大学学报:工学版,2017,47(2):385-391.

[3] 闵召阳,赵文杰.基于卷积神经网络检测的单镜头多目标跟踪算法[J].舰船电子工程,2017,37(12):25-28.

【通联编辑:唐一东】

猜你喜欢

卷积神经网络深度学习
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法
有体验的学习才是有意义的学习
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望