如何用点云对车辆和行人进行识别分类?这是MIT学生的总结

简介:
本文来自AI新媒体量子位(QbitAI)

57e615afe1bb774802a357ac94b479aa7aef45af

本文作者是MIT的大二学生Michael Gump(阿甘),内容为他在无人车公司Voyage的工作总结。本文还得到Voyage首席执行官Oliver Cameron的推荐。

作为一名计算机专业的学生,我一直对机器学习特别是强化学习很感兴趣,特别喜欢琢磨OpenAI的相关研究。去年冬天,我还参加了一门无人车的课程,从这个时候开始,自动驾驶汽车这个领域一直让我感到特别兴奋。

三个月前,我加入了Voyage的深度学习实习项目。Voyage是一家从Udacity剥离出来的初创公司,致力于研发自动驾驶出租车。

在学校里能学到很多知识,但并不能让你了解真实的世界。在Voyage实习的这段期间,不但帮我弥补了教育中的缺失,而且我真的有机会接触到最酷的产品。在这里,我准备把我这段时间的收获分享给大家。

我的工作

这个夏天的实习中,我一直在研究计算机视觉相关的几个问题,阅读了很多论文并且训练了不少模型。大部分时候,我一直都是用公开数据集,对激光雷达(LiDAR)数据进行分类识别。数据集地址如下:

http://www.cvlibs.net/datasets/kitti/index.php

http://cs.stanford.edu/people/teichman/stc/

当人类观察世界的时候,可以自动的感知深度,并且能够识别出道路上是一辆车还是一个行人。怎么能让无人车也做到这一点?过去几个月我的大部分工作,就是想办法让Voyage的自动驾驶出租车对车辆和行人进行分类。

我使用的工具是三维视图(LiDAR点云)+深度学习。

962444909120748c0687dc7a1df9b0118f144aad

 这个分类器模型正确的把汽车标为绿色,行人标为红色

物体分类识别

对于一辆无人车来说,它需要采集原始的传感器信息(例如点云),然后还得搞清楚到底看到了什么。这其中最重要的是如下两个问题。

  • 距离:离我撞上这个物体还有多远
  • 类别:我看到的究竟是个什么

解决这个问题,既可以设计传感器直接获取相关信息,也可以从现有的传感器中提取所需信息。对于距离这个问题,激光雷达是现在最好的传感器。除非特别“勇敢”,一般搞无人车不会绕过这个关键的设备。

然而对于分类(识别车辆、行人)这个问题,并不能通过传感器直接获知结果,需要我们研发算法来实现,这也就是我这个夏天的主要工作。

88d7527985a82194eab6761401bc28ff421bd557

 黑白图像是LiDAR数据,然后增加分类信息(绿色代表行人,蓝色代表车辆)

从人类的视角来看,这些都是很简单的问题。但请注意,人类已经有数百万年的发展进化历史。怎么才能在短时间内让无人车也具备同样的能力?如果你不是外行就该知道,这个问题的答案是:CNN,卷积神经网络。

在很多难题上CNN都给出了惊人的结果,只需要一些微调,这个神经网络就能很好的用来处理LiDAR数据。

然而,一个深层卷积网络可能不是我们最好的选择。我们系统的一个关键要求,是必须要以很高的帧率运行。也就说我们需要构建一个实时运行的系统,因此必须得选择一个可以快速得到良好效果的解决方案。

虽然CNN可以识别图像中的复杂模式,但通常速度很慢。所以这个夏天我花了大部分时间来寻找一个替代方案。其中一个替代方案是手动挑选与物体类别高度相关的物理特征信息,也就是对我们的模型进行一些特征工程。

在这个过程中,我的导师教会了我一件事:实验、实验、实验。

我的成果

这个夏天我的收获之一,就是学会使用一个很棒的快速可视化工具。在Vispy的帮助下,我对大量的点云进行了有序的可视化,然后在类似真实世界的环境中对模型进行调试。我这次实习的另一个收获是,直接从模型的损失曲线中很难看出问题。

(Vispy地址:http://vispy.org/

我用了PyTorch来训练和验证我的模型。我之前对PyTorch不熟,但现在它成为我最喜欢的深度学习框架。虽然PyTorch没有TensorFlow那么多的特性,但是更容易上手。

(插播一个量子位之前的报道:《PyTorch还是TensorFlow?》)

我搭建的模型之一,是一个编码解码器(Encoder-Decoder)网络,能够对多个通道的输入数据进行分类预测。从这些嘈杂的预测中,我们可以推断出面前物体的真实类别。这种模型非常强大,可以对某些传感器和处理错误免疫。

例如,依靠对象大小和形状进行分类的模型很容易出现检测错误。而编码解码器模型可以通过识别场景中的模式并直接转变为预测来回避这样的问题。

1e1e89d27be7996fd0d0d6e9f14b2c2e737bf4b6

c59b6b3c3cade189770370f20a530c5c7b30c0ed

 工作中的编码器-解码器模型。模型还很粗糙。

我上述工作参考了以下的论文:

《Multi-View 3D Object Detection Network for Autonomous Driving》

https://arxiv.org/abs/1611.07759

《LIDAR-based 3D Object Perception》

https://pdfs.semanticscholar.org/2c45/03c72ba7f53f3385859bd5e6311c58e73905.pdf

本文作者:问耕
原文发布时间:2017-08-25
相关文章
|
2月前
|
机器学习/深度学习 编解码 监控
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
104 1
|
2月前
|
机器学习/深度学习 监控 算法
计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别)
计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别)
50 1
|
1月前
|
机器学习/深度学习 算法 计算机视觉
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A路径规划+单目测距与测速+行人车辆计数等)
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A路径规划+单目测距与测速+行人车辆计数等)
31 2
|
2月前
|
机器学习/深度学习 监控 算法
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-1
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-1
47 0
|
2月前
|
机器学习/深度学习 编解码 算法
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-2
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-2
68 1
|
2月前
|
机器学习/深度学习 算法 安全
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-2
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-2
74 1
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-2
基于YOLOv5的车辆识别系统
基于YOLOv5的车辆识别系统
|
9月前
|
机器学习/深度学习 传感器 安全
【目标检测】基于背景差分实现运动车辆检测附Matlab代码
【目标检测】基于背景差分实现运动车辆检测附Matlab代码
|
11月前
|
机器学习/深度学习 传感器 算法
【图像检测-车辆检测】基于YOLO实现车辆目标检测附matlab代码
【图像检测-车辆检测】基于YOLO实现车辆目标检测附matlab代码
|
11月前
|
机器学习/深度学习 计算机视觉 Python
实时交通标志检测和分类(附代码)
实时交通标志检测和分类(附代码)
136 0