目标检测是自动驾驶中的重要一环,在自动驾驶汽车上路的时候,道路上的环境非常复杂,有机动车、行人、交通信号灯等等不同的物体,自动驾驶汽车必须能准确识别图像中的这些目标,才能做出加减速和转向等操作来保证自身和目标的安全。本案例模拟了自动驾驶的场景,实现deepcar对交通标志牌的识别。
目标识别有传统图像识别和深度学习两种方式,传统图像识别主要靠提取目标物体的特征来做识别,准确率和抗干扰能力都不够。基于深度学习的方式利用计算机的计算优势,通过训练大量的数据从而自动学习目标的特征,可以在复杂的现实环境条件下使目标检测与识别的性能大大提升。
目前常用深度学习目标检测算法分为两个大类。一类是two-stage,物体的识别和物体的定位分开进行,这一类的代表算法是R-CNN, fast R-CNN, faster-RCNN等。two-stage的目标识别算法识别精度较高,但是由于分为识别和定位两步,算法的速度较慢,在一些追求实时性的场景中较受限制。另一类算法是one-stage, 目标检测一步到位,这一类的代表算法是Yolo, SSD, YoloV2等。与two-stage相比,这类算法速度较快,准确率虽然没有 two-stage类的高,但是准确率也不低,因此应用也很广泛。
本案例使用的算法是Mobilenet-SSD,这个算法的速度较快,因此在手机等移动设备下使用广泛,虽然Mobilenet-SSD的速度很快,可以做实时目标识别任务,但是由于树莓派的计算资源实在有限,就算是和手机相比,也不在一个等级,所以直接用树莓派做运行Mobilenet-SSD的模型是不现实的。Intel NCS是intel专门推出的低功耗移动端神经网络加速器,体积只有U盘大小,如图所32示,适合于在计算资源有限的移动端开发和部署深度神经网络(DNN)应用。