姓名:王梦妮 学号:20021210873 学院:电子工程学院 【嵌牛导读】本文主要介绍了无人驾驶中所需的行人检测算法 【嵌牛鼻子】无人驾驶 环境感知 计算机视觉 SVM Adaboost算法 【嵌牛提问】无人驾驶中所用到的行人检测算法有哪些 【嵌牛正文】 在同样的交通路况下,无人车通过对自身运动状态及行驶环境信息进行分析,决策出最佳行驶策略和行驶方案代替驾驶员完成一系列驾驶行为,从而降低道路交通事故的发生率。而在无人驾驶中最为重要的技术便是环境感知,而在城市道路上有大量的行人出行,只有准确快速地检测出行人与对其进行跟踪,才能避免车撞人。 计算机视觉是研究赋予机器“人眼”功能的科学,通过多个传感器来获取一定范围内的色彩数据,用算法分析得到的数据从而理解周围环境,这个过程模拟了人眼以及大脑的处理过程,从而赋予机器视觉感知能力。现有的行人检测技术大多都是检测照片中的行人目标,这种照片的拍摄大多是拍摄的静止目标,图像的分辨率和像素点包含的语义信息都及其丰富,对应的算法在这样的图片上往往能取得理想的效果,但是用于无人车的“眼睛”,算法的鲁棒性就表现的非常差。这是因为在实际的道路环境中,摄像头需要搭载的车身上,在行进过程中跟随车以一定的速度移动,并且在实际道路中,行人目标往往是在运动的,由此提取出拍摄视频中的一帧就会出现背景虚化,造成像素点包含的语义信息大量减少,增加了行人检测的难度。 行人检测是计算机视觉领域的一个重要研究课题。在实际生活中,行人大多处于人口密集、背景复杂的城市环境中,并且行人的姿态各不相同,如何将行人从色彩丰富、形状相似的环境中快速准确地提取出来,是行人检测算法的难点。 行人检测算法分为两大类,一类是基于传统图像处理,另一类是基于深度学习的方法。近年来随着计算机计算速度的大幅提升,基于深度学习的方法有着越来越高的检测速度与检测精度,在行人检测领域应用越加广泛。 (一)基于传统图像处理的行人检测算法 使用传统的图像处理方法来做行人检测一般都是由两个步骤组成,第一就是需要手工设计一个合理的特征,第二就是需要设计一个合理的分类器。手工设计特征就是找到一种方法对图像内容进行数学描述,用于后续计算机能够区分该图像区域是什么物体,分类器即是通过提取的特征判断该图像区域属于行人目标还是属于背景。在传统的图像处理领域,手工特征有许多种,比如颜色特征、边缘特征(canny算子和sobel算子)以及基于特征点的描述子(方向梯度直方图)等。 学者们一致认为方向梯度直方图是最适合行人检测的人工特征,其主要原理是对图像的梯度方向直方图进行统计来表征图像。该特征是由Dalal于2005提出的,并与SVM分类器相结合,在行人检测领域取得了前所未有的成功。 传统的行人检测方法首先需要通过提取手工设计特征,再使用提取好的特征来训练分类器,得到一个鲁棒性良好的模型。在行人检测中应用最广泛的分类器就是SVM和Adaboost。SVM分类器就是要找到一个超平面用来分割正负样本,这个超平面的满足条件就是超平面两侧的样本到超平面的距离要最大,即最大化正负样本边界。下图即为线性SVM的示意图。Adaboost分类算法的主要原理不难理解,就是采用不同的方法训练得到一系列的弱分类器,通过级联所有的弱分类器来组成一个具有更高分类精度的强分类器,属于一种迭代算法。原理简单易于理解且有着良好的分类效果,唯一不足就是练多个弱分类器非常耗时。下图为面对一个二分类问题,Adaboost算法实现的细节。 (二)基于深度学习的行人检测算法 近年来,随着硬件计算能力的不断增强,基于卷积神经网络的深度学习飞速发展,在目标检测领域取得了更好的成绩。卷积神经网络不再需要去手动设计特征,只需要将图片输入进网络中,通过多个卷积层的卷积操作,提取出图像的深层语义特征。要想通过深度学习的方法得到一个性能良好的模型,需要大量的样本数据,如果样本过少,就很难学习到泛化能力好的特征,同时在训练时,由于涉及到大量的卷积操作,需要进行大量计算,要求硬件设备具有极高的算力,同时训练起来也很耗时。随着深度学习的飞速发展,越来越多基于深度学习的模型和方法不断被提出,深度学习在目标检测领域会有更加宽广的发展空间。 Ross Girshick团队提出了系列行人检测算法,其中Faster R—CNN 算法通过一个区域提议网络来生成行人候选框,在最后的特征图上滑动来确定候选框。Faster RCNN是首个实现端到端训练的网络,通过一个网络实现了特征提取、候选框生成、边界框回归和分类,这样的框架大大提高了整个网络的检测速度。 He Kaiming等人在2017年提出Mask R—CNN算法,该算法改进了Faster·R—CNN, 在原有的网络结构上增加了一个分支进行语义分割,并用ROI Align替代了ROI Pooling,取得了COCO数据集比赛的冠军。