电子说
摘要: 提出了一种基于机器视觉和深度学习的智能路牌识别系统。采用嵌入式的ARM9作为前端采集系统,在服务器上采用图像处理算法先对前端采集的路牌图像进行文字区域的提取和分割,然后用训练好的卷积神经网络对分割的文字进行识别,最后将识别信息以语音的形式反馈给使用者。使用前端硬件在高速公路上采集路牌图像并在服务器的CAFFE框架上进行测试,结果表明该系统能实时准确地将路牌信息以语音的方式播报给使用者。
0 引言
随着社会的快速发展,现今的生活中,汽车已经成为主要的交通工具,路牌也成为一种重要的导航工具。无论是高速公路还是国道、省道,到处都树立着路牌。然而,由于路牌常常被竖立在路的两边,当司机需要了解路旁路牌的信息时,注意力很容易被分散,当驾驶者对自己所在道路不熟悉的时候,前方路况和各种标志的路牌会让驾驶者的心里压力变大,驾驶者由于减速观看路牌很容易发生交通堵塞和交通事故,使得交通状况变得更加恶劣。对此,国内外一些研究学者对路牌的识别进行了研究[1],但效果不是很理想,将路牌识别系统实现的更是少之又少。智能路牌识别系统能有效地提取路牌信息,帮助驾驶者理解路牌的信息,对于安全驾驶有着极其重要意义,对将来智能驾驶战略也将做出突出的贡献。
1 智能路牌识别控制系统的总体设计
本系统由基于嵌入式技术的前端采集、通信传输系统和远程云服务器识别系统组成。前端采集传输采用基于三星Cortex-A9架构的核心板,配备一千万像素摄像头、语音播报模块和4G通信模块构建智能路牌识别系统的硬件平台。摄像头采集含有路牌的图像,由主控芯片对图像进行压缩,压缩后的图像在4G模块下通过SOCKET程序传送到云服务器上。采用云平台服务器作为智能路牌识别器的数据处理中心,在服务器上通过深度学习算法训练文字识别网络,将分割后的图像在训练好的网络上进行识别,然后将得到的结果传输到前端,通过语音模块播报给使用者。智能路牌识别器的总体设计如图1所示。
2 智能路牌识别控制系统的硬件设计
2.1 主控单元模块
该模块采用ARM9核心的处理器作为中央控制单元模块,用它实现对前端采集系统各个单元模块所采集的数据信息进行汇总分析和处理,对各个功能模块发出控制指令,协调整个系统稳定运行。中央控制单元完成图像采集,根据预先板载的压缩算法程序完成图像压缩,通常可达到6:1的压缩率,并发给云服务器,减小了传输时间,保证了信息传输的实时性。中央控制单元同时接收来自云服务器发送的识别结果,并将结果通过语音模块反馈给使用者。
2.2 前端采集模块
前端采集采用的是一千万像素的CMOS高清摄像头,它能够清晰地拍摄前方场景信息,用于智能路牌识别系统对路牌信息的采集。得到的高清图片存储在中央控制单元,并由中央控制单元对其进行处理。
2.3 无线通信模块
无线通信模块由外围电路和4G通信芯片构成,使用SOCKET通信和4G通信技术,完成智能路牌识别系统和云端服务器的相互连接。在中央处理器模块的控制下,前端采集压缩的图片在无线通信模块的作用下发送给云端服务器,同时云端服务器将处理完成的信息通过无线传输模块发送给中央控制单元,把结果实时反馈给使用者。
2.4 语音文字播报模块
语音播报模块主要作用是将云端服务器处理的路牌文字信息以语音播报的形式展现给驾驶者,使得驾驶者不用因环顾四周的路牌文字而分心。该模块主要采用SYN6288中文语音合成芯片实现对语音文字的播报,把云端服务器发送的文本文字转化为音频信息。SYN6288语音芯片采用UART和SPI两种通信方式,实现文本智能分析处理、多音字处理功能。该模块的电路如图2所示。
3 智能路牌识别控制系统的软件设计
本系统软件的设计由两部分组成。一部分是前端ARM9加载Linux系统的设计,完成前端信息的采集压缩、云端服务器通信和语音播报的功能。前端采集程序流程图如图3所示。
另一部分是在云端服务器上实现对采集图像的预处理、检测、分割和分类识别功能。云端服务器首先对前端发送的图像解压缩、预处理,利用支持向量机(SVM)算法检测是否含有路牌。检测到路牌之后对路牌区域进行提取,对提取后的路牌进行图像处理,然后利用投影法对文字进行分割,最后进行文字识别。其中文字识别部分采用的是目前流行的深度学习框架——CAFFE框架,主要采用C++/CUDA高级语言来实现对深度学习网络的训练和文字的识别。云端服务器程序流程图如图4所示。
4 基于卷积神经网络的文字识别算法
卷积神经网络(CNN)是深度学习领域的一个重要算法,在很多应用上表现出卓越的效果[2-3]。目前字符识别算法有很多种,但对汉字的识别,特别是自然场景的文字识别都有一定的局限[4-5]。将多种文档字符识别算法与CNN比较,会发现CNN算法比其他算法的效果都好。在本文的智能路牌识别系统中,主要利用CNN对日常生活中常见的3 000个汉字进行训练然后识别。CNN是在BP神经网络的结构上改进得到的,它们都是采用了向前传播计算网络的输出值,通过误差计算公式,向后传播修正权重和偏置的值。与传统的特征提取方法相比,CNN最大的改进就是卷积神经网络是利用卷积核进行特征提取,相邻层之间不是全连接,而只是部分进行连接,从而得到局部特征。在一个特征平面采用权值共享机制,很大程度上减少了权值的数量。
本文设计的网络结构如图5所示,输入的数据为一张40×40像素的图片,第一层为卷积层,由64个3×3卷积核组成,每个卷积核都各自提取不同的一种特征,通过输入与卷积核运算来提取图像的局部特征。然后进入池化层,在2×2的窗口中选取最大值作为一个输出值,从而降低了数据维度。以此类推,计算第二层128个卷积核和第三层256个卷积核的卷积运算。全连接层分别采用4 096和3 000个1×1的卷积核进行全连接来提取图片文字的全局特征进行分类。然后根据误差输出公式进行误差计算,反向进行权值和偏置更新。为了防止过拟合,采用dropout对网络权值和偏置进行部分更新。反复进行计算多次实现对网络参数进行训练的目的。
在智能路牌识别系统中,挑选日常常用的3 000个汉字进行了训练,基于国家标准规定——道路路牌采用方正黑体格式汉字,实验中通过计算机生成了相应图像数据。利用C#语言生成40像素×40像素的汉字图片作为测试集和训练集,如图6所示。
考虑到前端采集模块在实际采集图片时会出现各种干扰,如硬件发热、外界环境干扰、光线的亮暗等因素的影响,使得图像带有噪声点、图片模糊、字迹不清或者产生旋转和扭曲等状况,因此,需将生成的每个汉字图像进行图像处理,分别对其进行各种随机的噪声点生成、腐蚀膨胀以及不同角度的旋转和扭曲。这样对每一个汉字图片产生300张不同的图片,获得了更多的数据量,这样测试集和训练集一共有900 000个数据。通过图5所示的卷积神经网络进行训练。
5 系统的测试与分析
由于现在路牌场景种类繁多,测试实验中采用比较规范、应用比较多、文字方向从左自右的路牌进行实验。如图7(a)所示,对前端发送到服务器的图像,先通过Canny算子边缘检测粗定位和MSER算法细定位,使用SVM算法来判断是否含有路牌,判断出路牌标识后对图像进行路牌区域提取。
路牌区域提取采用基于HSI颜色空间的方法。基于我国以绿底和蓝底作为路牌的背景,采用HSI空间中的H分量将路牌区域提取出来。本实验将H参数设定在[150,190]区间,得出实验结果如图7(b)所示。
在文字检测部分,采用Canny算子进行边缘检测[6],提取汉字的边缘,然后用形态学对汉字进行处理,将文字与文字分开同时将文字的各个部分进行连接,以便于进行文字分割。在文字分割部分,采用投影法,根据像素值的特征进行分割。首先对路牌进行二值化处理,先进行水平投影像素值相加,进行行分割,分割效果如图8所示。
然后竖直方向投影进行像素值相加,进行竖直方向分割,分割效果如图9所示。通过连通区域算法分析得到各个文字区域,最后归一化为40像素×40像素图像,送入深度学习卷积神经网络进行分类识别。
采用本实验设计的网络结构,将数据集的800 000个数据作为训练集,100 000个数据集作为测试集,在云服务器上迭代8 000次,得到99%的准确率,测试的准确率和损失值如图10所示,当迭代次数达到900次左右时,准确率趋于平稳,由此可见CNN在路牌汉字识别上具有优势和潜在的应用价值。
6 结论
本文完成了智能路牌识别系统从硬件到软件的设计,实现了硬件的图像采集压缩和软件的图像处理、区域检测和文字分割,最后通过语音模块播报给使用者的功能。该系统对驾驶者有十分重要的作用,并可运用在无人驾驶领域,对新世纪的智能交通也将做出突出的贡献。本文系统未考虑前端动态拍摄时的模糊图像处理问题,即当车辆行驶太快情况下,前端采集的图像可能会不清晰,这也是下一步将努力的方向。
全部0条评论
快来发表一下你的评论吧 !