0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一份指南,鼓励大家在家训练自动驾驶系统的感知能力

ml8z_IV_Technol 来源:未知 作者:李倩 2018-06-05 10:35 次阅读

自动驾驶汽车依靠摄像头、激光雷达以及雷达等等传感器来感知周围的变化,感知能力对自动驾驶来说非常重要。本文是一份指南,鼓励大家在家训练自动驾驶系统的感知能力。

△神秘的视觉

感知,大概就是感受到周遭正在发生什么的一种能力。这项技能对自动驾驶来说太重要了。

自动驾驶汽车依靠摄像头、激光雷达以及雷达等等传感器来感知周围的变化。

一位名叫凯尔 (Kyle Stewart-Frantz) 的大叔,准备了一份指南,鼓励大家在家训练自动驾驶系统的感知能力。

当然,这个手册并不是他出于爱好写出来的,是随着Lyft和Udacity联合发起的感知挑战赛(Lyft Perception Challenge),而生的。

比赛考验的就是系统能不能准确地感受到,可以行驶的路面在哪里,周围的汽车在哪里。

挑战赛中,能够倚仗的所有数据,都来自车载的前向摄像头。

摄像头不存在?

这里的“摄像头数据”并非真实摄像头记录的影像,而是一个名为CARLA的模拟器生成的图景。

毕竟,自动驾驶汽车的软件开发大多是在模拟器中进行的,那里快速的原型设计和迭代,比在现实世界里使用真实硬件要高效得多。

那么,来看一下CARLA给的数据长什么样——

左边是模拟摄像头捕捉的画面,右边则是与之对应的、标记好的图像。

用这样的数据来训练算法,让AI能够在从未见过的新鲜图像里,判断出哪些像素对应的是道路,哪些部分对应的是其他车辆。

这就是挑战赛的目标。

车前盖太抢镜?

要完成比赛任务,自然会想到语义分割。用这种方式来训练神经网络,成熟后的AI便可以判断每个像素里包含的物体了。

第一步,是对标记好的图像做预处理。比如,因为设定是“车载前向摄像头”拍下的画面,每一幅图像都会出现车前盖,可是如果这样就把所有图像判定为“车”,就不太好了。

所以要把显示车前盖的那些像素的值设为零,或者贴上其他的“非车”标签

第二步,车道标识和道路的值是不一样的,但我们希望这些标识,可以被识别为路面的一部分。

△这不是给汽车的指示,但也太随性了

所以,要把车道标识和路面,贴上一样的标签。

Python写出来,预处理功能就长这样——

1def preprocess_labels(label_image): 2 labels_new = np.zeros_like(label_image) 3 # Identify lane marking pixels (label is 6) 4 lane_marking_pixels = (label_image[:,:,0] == 6).nonzero() 5 # Set lane marking pixels to road (label is 7) 6 labels_new[lane_marking_pixels] = 7 7 8 # Identify all vehicle pixels 9 vehicle_pixels = (label_image[:,:,0] == 10).nonzero()10 # Isolate vehicle pixels associated with the hood (y-position > 496)11 hood_indices = (vehicle_pixels[0] >= 496).nonzero()[0]12 hood_pixels = (vehicle_pixels[0][hood_indices], 13 vehicle_pixels[1][hood_indices])14 # Set hood pixel labels to 015 labels_new[hood_pixels] = 016 # Return the preprocessed label image 17 return labels_new

预处理过后的结果,就是标记和之前的不太一样了。

准备活动做好了,神经网络的正式训练也就可以开始了。

谁是分类小公主?

那么,大叔选的是怎样的神经网络?

定制一个FCN-Alexnet或许是个不错的选项,它擅长把每个像素分到不同的类别里。

循着以下链接,可以找到这个模型的详细信息——

代码:

https://github.com/shelhamer/fcn.berkeleyvision.org/tree/master/voc-fcn-alexnet

论文:

https://arxiv.org/pdf/1605.06211.pdf

大叔用一个随机梯度下降solver,把全部训练数据跑了10次(10 epochs) ,基础学习率设的是0.0001。

评估训练成果

拿训练好的神经网络去跑验证数据,凯尔得到了0.6685的F2值,以及0.9574的F0.5值 (前者更重视召回率,后者更重视准确率) 。系统每秒处理6.06幅图像。

当然,视频会比这些数字更加生动

然后还想怎样?

大叔说,要让神经网络表现更好,将来会搜集更多数据,涉及更加丰富的路况。

另外,要进行一系列的数据增强,让数据和数据之间的差异更加明显。

关于神经网络的结构,也还有其他选择,比如为细粒度预测而生的FCN-8,值得尝试。

还有,可以引入时态数据(光流) ,来减少推断需要的帧数,同时保持比较高的准确度。

模拟器不够真?

当然,只有模拟器也是不够的,自动驾驶系统终究要接受现实的考验。

面对真实摄像头传出的画面,系统的辨识结果并没有非常理想。不过在许多帧里面,神经网络都能够在一定程度上,辨认出道路和车辆。

真实世界和模拟器里的驾驶场景,还是不一样的。

如果模拟器生成的图像和现实更加接近的话,可能结果就会好一些了。

不难看到,在和模拟器设定更为接近的路况下,系统的表现还是很不错的。

如此看来,这只AI还是很有前途。只要把模拟器造得更贴近真实,神经网络应该就能得到更有效的训练。

这里提供一段代码,可以用来查看,算法跑出的结果到底怎么样——

1from moviepy.editor import VideoFileClip, ImageSequenceClip 2import numpy as np 3import scipy, argparse, sys, cv2, os 4 5file = sys.argv[-1] 6 7if file == 'demo.py': 8 print ("Error loading video") 9 quit1011def your_pipeline(rgb_frame):1213 ## Your algorithm here to take rgb_frame and produce binary array outputs!1415 out = your_function(rgb_frame)1617 # Grab cars18 car_binary_result = np.where(out==10,1,0).astype('uint8')19 car_binary_result[496:,:] = 020 car_binary_result = car_binary_result * 2552122 # Grab road23 road_lines = np.where((out==6),1,0).astype('uint8')24 roads = np.where((out==7),1,0).astype('uint8')25 road_binary_result = (road_lines | roads) * 2552627 overlay = np.zeros_like(rgb_frame)28 overlay[:,:,0] = car_binary_result29 overlay[:,:,1] = road_binary_result3031 final_frame = cv2.addWeighted(rgb_frame, 1, overlay, 0.3, 0, rgb_frame)3233 return final_frame3435# Define pathname to save the output video36output = 'segmentation_output_test.mp4'37clip1 = VideoFileClip(file)38clip = clip1.fl_image(your_pipeline)39clip.write_videofile(output, audio=False)

用到的可视化数据在这里:https://s3-us-west-1.amazonaws.com/udacity-selfdrivingcar/Lyft_Challenge/videos/Videos.tar.gz

你也一起来吧?

当然,作为Lyft感知挑战赛的研发负责人,凯尔大叔这番苦口婆心的目的,还是吸引更多的小伙伴掺和进来。

道路安全,人人有责。大概就是这个意思,吧。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48092

    浏览量

    740016
  • 激光雷达
    +关注

    关注

    961

    文章

    3654

    浏览量

    186693
  • 自动驾驶
    +关注

    关注

    773

    文章

    13032

    浏览量

    163206

原文标题:自动驾驶感知训练指南:不许你歧视车道线,那也是路面的一部分

文章出处:【微信号:IV_Technology,微信公众号:智车科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    未来已来,多传感器融合感知自动驾驶破局的关键

    驾驶的关键的是具备人类的感知能力,多传感器融合感知正是自动驾驶破局的关键。昱感微的雷视体多传感器融合方案就好像
    发表于 04-11 10:26

    LabVIEW开发自动驾驶的双目测距系统

    精确的距离信息,从而提高车辆的主动安全性能。这一系统的开发和应用有望在自动驾驶领域取得更多突破性进展。 ​ 这是LabVIEW的个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。有需要LabVIEW项目合作开发
    发表于 12-19 18:02

    自动驾驶路径跟踪控制的种类

    Automobile,IARA)为例,提出了自动驾驶汽车的自动驾驶系统的典型架构。 自动驾驶系统主要由
    的头像 发表于 11-10 17:30 327次阅读

    自动驾驶中的多感知源/单感知源提升方案

    自动驾驶中的视觉感知是车辆在不同交通条件下安全、可持续地行驶的关键部分。然而,在大雨和雾霾等恶劣天气下,视觉感知性能受到多种降级效应的极大影响。
    发表于 10-23 10:26 181次阅读
    <b class='flag-5'>自动驾驶</b>中的多<b class='flag-5'>感知</b>源/单<b class='flag-5'>感知</b>源提升方案

    农机自动驾驶显示系统组成部分以及配置

    随着科技的发展,传统的农机行业正趋于饱和,新生事物层出不穷,无论是传统农机还是从业者都面临如何转型升级的问题。农机自动驾驶系统就是当下最热的概念之。身为新时代农机人,作业的提质增效是无论如何也绕
    发表于 10-17 17:52

    【KV260视觉入门套件试用体验】八、VITis AI自动驾驶多任务执行MultiTask V3

    种模型,旨在同时执行自动驾驶场景中的不同任务,同时实现优异的性能和效率。这些任务包括对象检测、分割、车道检测、可行驶区域分割和深度估算,这些都是自动驾驶感知模块的重要组成部分。
    发表于 09-26 16:43

    CVPR上的新顶流:BEV自动驾驶感知新范式

    BEV自动驾驶感知好比一个从高处统观全局的“上帝视角”,将三维环境信息投影到二维平面,以俯视视角展示环境中的物体和地形。在路径规划、障碍物检测、自动驾驶决策等方面,BEV感知都展现出了
    的头像 发表于 08-23 14:51 730次阅读
    CVPR上的新顶流:BEV<b class='flag-5'>自动驾驶</b><b class='flag-5'>感知</b>新范式

    浅析自动驾驶视觉感知算法

    环境感知自动驾驶的第一环,是车辆和环境交互的纽带。一个自动驾驶系统整体表现的好坏,很大程度上都取决于感知
    发表于 07-25 10:36 384次阅读
    浅析<b class='flag-5'>自动驾驶</b>视觉<b class='flag-5'>感知</b>算法

    自动驾驶是否能离开高精地图

    作为从事过高精定位和静态BEV感知算法研发人员可以很负责任的讲,高精地图有百般好,可以说是谁用谁知道,高精地图极大的简化了自动驾驶功能的研发,可以弥补感知能力的上限。
    发表于 07-11 09:55 209次阅读

    自动驾驶感知系统与关键技术介绍

    百度百科定义:自动驾驶汽车,又称无人驾驶车、电脑驾驶车、无人车、自驾车,为一种需要驾驶员辅助或者完全不需操控的车辆。作为自动化载具,
    发表于 06-01 15:24 1次下载
    <b class='flag-5'>自动驾驶</b><b class='flag-5'>感知</b><b class='flag-5'>系统</b>与关键技术介绍

    自动驾驶基础架构

    ”的核心价值,是为自动驾驶提供恰到好 处的、全方位的技术保障。在自动驾驶系统中,如果说感知是眼睛,规划是大脑,那么基础架构就是神经系统,将
    发表于 06-01 14:46 0次下载
    <b class='flag-5'>自动驾驶</b>基础架构

    探讨自动驾驶系统感知系统

    随着汽车行业不断发展,技术开发人员、科研人员等对自动驾驶的研究越来越火爆。自动驾驶并不是一项单一的技术,而是汽车电子、智能控制以及互联网等技术发展融合的产物,其原理为自动驾驶系统通过
    的头像 发表于 05-17 11:10 921次阅读
    探讨<b class='flag-5'>自动驾驶</b><b class='flag-5'>系统</b><b class='flag-5'>感知</b><b class='flag-5'>系统</b>

    自动驾驶感知系统常用方案

    自动驾驶汽车首先应有一套完整的感知系统,代替驾驶人的感知,提供周围环境信息;其次应有一套集智能算法、高性能硬件于一体的控制
    的头像 发表于 05-17 11:07 1349次阅读
    <b class='flag-5'>自动驾驶</b><b class='flag-5'>感知</b><b class='flag-5'>系统</b>常用方案

    聊聊自动驾驶感知系统

    自动驾驶赛道中,感知的目的是为了模仿人眼采集相关信息,为后续做决策提供必要的信息。根据所做决策的任务不同,感知可以包括很多子任务:如车道线检测、3D目标检测、障碍物检测、红绿灯检测等等;再根据
    的头像 发表于 05-17 10:58 822次阅读
    聊聊<b class='flag-5'>自动驾驶</b><b class='flag-5'>感知</b><b class='flag-5'>系统</b>

    智能驾驶感知系统测试技术详解

    随着人工智能、边缘计算、无线通信和车载传感器等关键技术的进步和突破,自动驾驶系统迎来了新一轮的发展。交通应用的安全攸关场景给自动驾驶系统提出了更高的质量保障要求。
    的头像 发表于 05-17 10:56 703次阅读
    智能<b class='flag-5'>驾驶</b><b class='flag-5'>感知</b><b class='flag-5'>系统</b>测试技术详解