CNN与人工特征提取快速识别斑马线的方法
2018-04-02胡彩霞周欣星
熊 平,胡彩霞,周欣星
(1.中南大学生物医学工程系,湖南长沙410083;2.湖南中医药大学第一附属医院,湖南长沙410000)
随着公路交通的发展,交通事故发生的频率不断上升,智能交通和智能车辆视觉辅助导航技术[1]在提高安全行驶的研究中引起了广泛关注。另一方面,设计出对盲人出行有帮助的电子导盲设备是具体社会价值和研究价值的。不管是车载导航辅助系统还是导盲系统,其中斑马线作为重要交通安全标志,研究出准确识别斑马线的算法既能够提醒司机减速慢行,又能帮助视力障碍者安全过马路[2]。
斑马线检测的方法有很多种,其中,Stephen Se,最早提出的消逝点方法来识别斑马线,此方法由于计算量大,导致实用性不强。后来Mohammad等提出,通过分析斑马线的条数、间隔、条数等基本特征等指标,从而判断图像中是否存在斑马线。此种方法只抓住了斑马线的基本简单特征,受干扰性强。此后,又有科学家提出了双极系数法[3],对采取的道路图像进行多个区域分块,利用斑马线的灰度特征,对比其他区域,从而识别出斑马线。这种方法目前世面运用的最多,但由于分块的大小将直接影响目标区域的提取效果,所以存在如何分块才最合适的问题。为了解决斑马线区域分离的精细度和漏识别之间的矛盾,以及提高斑马线识别算法的精确度,减少计算时间等问题,本文提出了一种基于神经卷积网络结合人工特征提取共同检测斑马线区域的新方法,由于神经卷积网络能快速自动识别出斑马线所有可能区域,而且这些区域是根据斑马线的远近大小自动生成的,避免了人为的区域分块,这样,解决了斑马线区域分块矛盾的问题。且利用卷积神经网络运算速度快,平均3 ms内能初步识别出斑马线区域范围。接下来,为了得到精确的斑马线区域范围,需要对卷积神经网络自动识别出的区域进行合并与缩小,并利用梯度极大值比较等方法进一步精确检测范围,排除误检区域,得到准确的斑马线识别图像。
1 基于卷积神经网络初步检测斑马线区域
1.1 卷积神经网络应用背景
随着深度学习的迅速发展,基于卷积神经网络的目标检测方法已得到广泛应用[4]。深度学习是通过模拟人脑自动提取数据的本质特征,避免了复杂的特征提取和数据重建过程。卷积神经网络是深度学习模型中的一种,其利用局部连接的方式,共享权值,这样大大减少了网络参数。通过一系列组合的卷积层和池化层能实现目标特征的自动提取,这也是卷积神经网络在图像处理和识别中的优势所在[5]。目前卷积神经网络主要应用于数字识别[6],大规模图像识别[7],人脸关键点检测[8]等方面,在交通道路检测中,近几年有一些通过深度学习来检测行人[9]、交通标志[10]、车标[11]、车牌[12]等的研究方法,但对斑马线检测研究却是没有的。斑马线本身有较强的纹理特征,且黑白交替的位置具有较大的梯度值,利用卷积神经网络的方法能快速识自动别出斑马线可能区域,再人为利用斑马线的特征进行提取,得到精确检测范围。
1.2 卷积神经网络构建
卷积神经网络(CNN)是一个多层的神经网络,它的基本结构是由输入层,卷积层(conv),子采样层(pooling),全连接层,输出层组成[13]。用于斑马线检测的卷积神经网络,本文采用Alex-net网络的构建,相比于LeNet网络结构,Alex-net的优势在于:网络增大,包括5个卷积层、3个全连接层、1个输出分类层(softmax),同时解决过拟合问题,并且能利用多GPU加速计算,提高计算速度。Alex-net的最后一层输出层具有1 000个输出的类别判定层,针对ImageNet[14]的1 000类图片。AlexNet的倒数第二层能够很好地描述图像的全局特征,所以使用其倒数第二层的输出作为图像的特征,能够很好地描述图像,很适合用于图像分类[15]。文中使用AlexNet网络模型对道路斑马线图像进行特征提取。
1.3 卷积神经网络训练
本次试验的操作系统为windows7,显卡为gtx960系列,显存4G。本文采用的都是车载摄像头拍摄的包含斑马线的街道实景图片,共1 050张。其中1 000张图片作为训练样本,50张为测试样本。其中使用选择性搜索(selective search)算法[16]提取待检测区域。selective search综合了蛮力搜索(exhaustive search)和分割(segmentation)的方法。selective search意在找出可能的目标位置来进行物体的识别。与传统的单一策略相比,选择性搜索提供了多种策略,并且与exhaustive search相比,selective search算法能大幅度降低搜索空间。
本次训练需要样本准备,首先从1 000张拍摄的道路实景图片中手动分割出斑马线区域图片,以及其他几种经常出现在斑马线附近物体的图片:行人,自行车和摩托车,以及汽车,其中自行车摩托车分为同一类。这部分手动分割出的图片是后面进行样本训练时的主要部分。然后使用selective search算法分割50幅车载摄像头拍摄的全景图片,得到3 000幅待分类数据图片,并对其手动分类。大致可分为10类:行人、自行车摩托车、汽车、柏油路面、天空、房屋、红绿灯、电线杆、树木、斑马线。将删选出的图片放入训练集中,作为训练样本的补充。最后使用插值算法将分割出的样本归一化为256*256像素的图片,总共得到3 330幅训练样本图片。将所有样本图片输入到卷积神经网络中进行训练,经过20 000次迭代后,算法收敛,准确率在0.93左右。
1.4 样本测试
用于测试的图片有50张,选取不同路况和角度的斑马线道路图片进行测试。主要测试步骤如下:
1)对输入的图片使用selective search算法进行分割,得到待检测区域候选框;
2)将待检测区域候选框归一变换为256*256大小图片后输入神经网络打分;
3)筛选出属于斑马线类且概率大于0.5的区域,得到初步检测图像;
4)通过非极大值抑制算法,对筛选出的区域进行优选处理,消除多余重复的区域,得到相对简洁的区域。
经过上面4步得到的图片如图1所示。非极大值抑制算法在目标检测中用于提取分数最高的框架区域,斑马线图片在经过前面神经网络打分后,每个斑马线区域候选框都有一个分数,通过非极大值抑制算法选取那些邻域里分数最高(即是斑马线的概率最大),并且抑制那些分数低的候选框区域。主要算法步骤如下:首先选出最大概率候选框区域,再去掉与最大候选框重叠率大于0.4的候选框区域,就能得到相对简洁的斑马线检测区域。
图1 基于卷积神经网络初步识别斑马线区域例图
2 人工精确定位斑马线区域
通过卷积网络检测出的斑马线区域会有明显的缺陷:重叠、误检以及遗漏。图二中(a)和(b)有重叠,(c)有误检,(a)和(c)有遗漏。因此要用阈值以及梯度变换等方法对图片进行处理,精确定位斑马线区域。
2.1 合并斑马线重叠区域
对检测区域有重叠的图片,将重叠率大于0.2的区域统一合并。得到最大的斑马线检测范围。计算二矩形框重叠率的公式如下,图2为重叠矩形框示意图。
其中,overlap为重叠率,averInt为重叠面积。
图2 重叠矩形示意图
2.2 压缩斑马线纵向区域
经过上一步合并的斑马线区域图像纵向范围过大,所以要对其纵向压缩提取。采用的方法是在卷积神经网络初步识别后的斑马线区域中,选取其中纵轴高度最小的两个区域,将选取这两个区域的最大纵坐标和最小纵坐标作为本次提取区域的纵向范围。这样选取的原因是经过selective search算法分割的图片不会出现上下割裂斑马线情况的区域,所以选取纵轴方向上高度最小的两个矩形区域能确保所有纵向上斑马线都在选取的范围内。再选取第一步中合并区域的横向范围作为本次提取区域的横向范围。经过上述步骤进一步缩小斑马线区域,得到结果如图3所示。
图3 纵向压缩提取区域例图
2.3 利用梯度极大值法精确斑马线区域
经过上述两步处理后的图像中检测出来的斑马线区域范围仍不够精确,可以通过图像二值化处理的方法,突出斑马线等有用的信息,消除背景环境的干扰,辅助后面精确定位算法的实现。由于采集到的道路图像均为彩色图像,在彩色图像中,任意像素点都有R,G,B 3个像素值,颜色越是靠近白色或者黑色,3个通道的值越接近,因此可以利用这一特性去掉彩色图像中颜色鲜艳的部分,例如图片中的树,房屋等有颜色部分,仅保留黑白部分,例如斑马线和路面,又因为路面的灰度值要低于斑马线区域,因此可以根据计算得到的阈值去除路面部分图像,得到二值图片。具体处理公式如下:
去除图片中有颜色色部分首先要对彩色图像三通道取平均值K,如下式:
其中,img为彩色图片,下标r,g,b分别为三通道数值。
其中,i表示图像行数,j表示列数。
其中,num和sum初始值为0。
对二值图片求取梯度值,得到斑马线梯度图片,如图4所示。由于梯度反映了相邻象元之间灰度的变化率,在斑马线的边缘处必定有较大的灰度梯度值,同时斑马线区域的梯度值会有较为均匀的起伏变化,利用这一特性可以区分斑马线区域和非斑马线区域。图像在计算机中以数字图像的形式进行存储,即图像是离散的数字信号,对数字图像的梯度使用差分来代替连续信号中的微分。文中采用的是罗伯特(Roberts)梯度算子,其梯度计算公式如下:
上式为其x和y方向偏导数计算模板,可用数学公式表达其每个点的梯度幅值为:
图4 道路梯度图片
分析得到的道路梯度图像,发现斑马线区域梯度值的和要比其它区域要大,同时斑马线区域的行数据中,存在较多的极大值数据,符合斑马线区域黑白交替变换的特性,因此可以根据梯度极大值的数量来确定斑马线区域。如图5表示的是经过分析后得到的梯度极大值直方图。5(a)为斑马线区域直方图,5(b)为非斑马线区域直方图。
图5 梯度极大值直方图
从图5中可以明显看到(a)图中线条覆盖的斑马线的行数据的梯度极大值点(峰值点)要多,且位置较为均匀。(b)图中线条覆盖的非斑马线的行数据的梯度极大值点较少,且位置分散。根据这些数据进一步缩小斑马线检测区域,得到最终精确定位结果,如图6所示。
图6 精确斑马线检测区域例图
2.4 利用梯度极大值法消除误检和补全漏检区域
利用峰值点数据还可以判断是否为斑马线区域,去除误检部分区域,以及增添未检测区域。以图1(c)为例,可以看出图像右侧中有两块误检区域,且斑马线未检测完整。为了除去误检部分,将右侧误检区域图片进行梯度变换,得到其梯度图。根据观察其峰值点个数与分布,判断其为误检区域。接下来,为了补全漏检区域,可以将非误检区域的白色部分延伸到整个图片的宽度,并求梯度,通过梯度图,找到左右两侧峰值点,根据斑马线峰值点的特点,补全斑马线区域,最终的到的精确检测图片如图7所示。
图7 去除误检和补全漏检区域后道路例图
3 实验结果
通过卷积神经网络的初步区域识别,到人工合并与压缩,再到梯度极大值比较精确范围整个过程,基本能比较精确的检测出一幅图片中斑马线区域。本文用了50副图像作为测试,其结果如下表1所示,精确识别率为96%,且平均检测时间在约60 ms内。
表1 识别结果
4 结论
文中提出了一种识别斑马线的新方法,根据测试结果表明,利用卷积神经网络与人工提取斑马线特征相结合的算法具有如下几点优势:
检测速度快,平均检测时间在约60 ms内。由于省去了前期图像预处理过程,卷积神经网络能直接自动生成检测区域,这样大大减少计算量,提高检测速率。
识别准确率高,准确率高达96%。利用人工的特征提取等方法能提高检测区域的精确性,并且能消除误检,补充漏检区域。本文采用的方法相对于其他方法而言识别率高,且范围较为精确。
检测范围大,传统算法只有对道路图片中面积大于整幅图片1/5的斑马线区域才能得到很好地识别,但本文的算法基本可以识别图片中所有存在的斑马线,相对而言检测范围变大了。
当然,本次实验仍存在一些不足之处,此次实验样本较少,对复杂路面环境下的斑马线检测并未作深入的实验分析,可以在以后的实验中着重解决这个问题。
参考文献:
[1]叶蕾,吴青.视觉导航智能小车自主驾驶控制方法研究[J].交通信息与安全,2010,28(5):1-5.
[2]王一丁,徐超.一种基于改良逆投影变换的道路斑马线识别方法[J].北方工业大学学报,2013,25(3):31-35.
[3]Sichelschmidt S,Haselhoff A,Kummert A,et al.Pedestrian crossing detecting as a part of an urban pedestrian safety system[J].IntelligentVehicles Symposium IEEE,2010:840一844.
[4]李旭冬,叶茂,李涛.基于卷积神经网络的目标检测研究综述[J].计算机应用研究,2017,34(10):16-22.
[5]常亮,邓小明,周明全,等.图像理解中的卷积神经网络[J].自动化学报,2016,42(9):1300-1312.
[6]金连文,钟卓耀,杨钊,等.深度学习在手写汉字识别中的应用综述[J]自动化学报,2016,42(8):1125-1141.
[7]张文达,许悦雷,倪嘉成,等.基于多尺度分块卷积神经网络的图像目标识别算法[J].计算机应用,2016,36(4):1033-1038.
[8]杨海燕,蒋新华,聂作先.基于并行卷积神经网络的人脸关键点定位方法研究[J].计算机应用研究,2015,32(8):2517-2519.
[9]张阳.结合纹理特征和深度学习的行人检测算法[J].辽宁工程技术大学学报,2016,35(2):206-210.
[10]黄琳,张尤赛.应用深层卷积神经网络的交通标志识别[J].现代电子技术,2015,38(13):101-106.
[11]彭博,臧笛.基于深度学习的车标识别方法研究[J].计算机科学,2015,42(4):268-273.
[12]赵志宏,杨绍普,马增强.基于卷积神经网络LeNet-5的车牌字符识别研究[J].系统仿真学报,2010,22(3):638-641.
[13]李彦冬,郝宗波,雷航.卷积神经网络研究综述[J].计算机应用,2016,36(9):2508-2515.
[14]Krizhevsky A,Sutskever I,Hinton G E.ImageNet classification with deep convolutional neural networks[C]//In Advances in Neural Information Processing,Systems 25(NIPS'2012),2012:256-259.
[15]张昭旭.CNN深度学习模型用于表情特征提取方法探究[J].现代计算机,2016,22(3):41-44.
[16]Lin D,Lu C,LiaoR,et al.Learning Important spatial pooling regions for scene classification[C]//Computer Vision and Pattern Recognition(CVPR),2014 IEEE Conference on.)EEE,2014:3726-3733.