自动驾驶中的卷积神经网络(3)|学习笔记

简介: 快速学习自动驾驶中的卷积神经网络(3)

开发者学堂课程【深度学习与自动驾驶:自动驾驶中的卷积神经网络(3)】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/533/detail/7156


自动驾驶中的卷积神经网络(3)

 

内容介绍

一、Visual Odometry

二、Object Detection

、End-to-End Natural Language Generation


一、Visual Odometry

1、6-DOF: freed of movement

(1)Changes in position:

① Forward/backward: surge

② Left/right: sway

③ Up/down: heave

(2)Orientation:

Pitch, Yaw, Roll

2、Source

(1)Monocular: I moved 1 unit

(2)Stereo: I moved 1 meter

(3)Mono = Stereo for far away objects

PS: For tiny robots everything is "far away" relative to inter-camera  distance

但当你进入真实世界会发生各种情况,这些方法是否依然靠谱,回到定位问题,深度学习的作用。视觉测距,它使用视频图像的单目或立体输入,确定你在世界上的方向,也就是车的朝向,然后你只需关注前方道路的视频,你还可以从Stereo中得到每个物体距你多远的信息。

3、SLAM: Simultaneous Localization and Mapping

What works: SIFT and optical flow

image.png

很多人做过这类研究,关于发现外部场景的独特特征,并且根据这些特征的轨迹来定位,当特征维度够多,就变成了一个优化问题,你可以追踪这条线的逐帧变化,然后综合考虑你在维空间的变化,还有其他传感器也有用,比如GPS虽然不很完美但很精确,是帮助你定位的另一个信号,另外还有IWU加速度计,还有陀螺仪告诉你加速度,有六度自由度。

4、Visual Odometry in Parts

(1)(Stereo) Undistortion, Rectification

(2)(Stereo) Disparity Map Computation

(3)Feature Detection (e.g., SIFT, FAST)

(4)Feature Tracking (e.g., KLT: Kanade-Lucas-Tomasi)

(5)Trajectory Estimation

① Use rigid parts of the scene (requires outlier/inlier detection)

② For mono, need more info* like camera orientation and height of off the ground

关于移动物体,也就是车,如何在空间中移动。可以用最优化的方式去做,给定一些特征,比如sift,立体输入纠正,有两张图,为每张图计算深度图,为每个像素,计算对像素深度的最佳估计,相对相机的三维位置,然后计算差异图,也就是距离,然后检测出场景的特有特征,Sift很常见,它是检测独特特征的流行算法,随着时间的推移,可以跟踪这些特征,这样可以从视频中得到三维空间轨迹,对轨迹的估计,有很多假设,比如假设物体是刚体,所以如果一个大的物体从你面前经过,你需要确定它是什么,要找出场景中的移动物体,那些是固定的。

5、End-to-End Visual Odometry

image.png

或者可以作弊,用端到端神经网络,端到端意味着什么?称之为作弊因为省去了很多特征上费的苦功,只需用原始输入,从任何传感器,它从立体视觉摄像机获取立体输入,从而获得两个图像,两个图像的序列输出是空间中的轨迹,做了SLAM的苦功,找到特征,定位,追踪特征,找到轨迹,只用训练神经网络,借助一些基准事实,来自更精准的传感器,比如激光雷达,在立体视觉输入上训练,输出是空间中的轨迹,对于速率有易外的卷积神经网络,不过效果不大好。

 

二、Object Detection

1、Past approaches: cascades classifiers (Haar-like features)

2、Where deep learning can help: :recognition, classification, detection

SLAM是深度学习表现不如传统方法的地方之一,深度学习能帮助的是理解场景,识别其中的物体,它检测场景的不同部分,给它们分类,并用光流确定它们的运动,之前的物体识别方法。

3、Scene Understanding:

Where is everyone else ?

比如识别信号灯 TensorFlow 里的分类和检测,或者用每辆车的特征或者其他人工特征,现在可以利用卷积神经网络来代替这些特征的提取,还有 SegNet 的TensorFlow 实现,这个利用神经网络,优点是利用相似类型的网络来解决不同的问题,并且取决于于问题的复杂性可以得到非常好的效果,对网络进行卷积,意味着输入和输出都是一张图像并且是单目图像,输出是一张分割后的窗片,不同的颜色区域代表着逐像素预测后的物体,这里没有用到空间信息,没有用到时间信息,这里是分别处理每一帧,能够将道路从树木,行人,车辆等其他事物申提取出来,这是基于激光雷达技术所提供的,有关场景的当体视觉维信息。是在场是中填充物体,填充所预测的最可能的物体

image.png

4、Road Texture and Condition from Audio

image.png

可以利用循环卷积网络并利用时闻信息来处理视频和音频,例如,可以处理幻灯片底部所展示的,干燥路面和潮湿路面经过时发出的声的频谱图,可以将频谱图视为一张图片,利用循环卷利神经网络并结合时间信息进行处理,让频谱图持续滑动并输入网络中,这在处理简单任务时表现十分优异尤其是干湿道路的区分上,这是一个小却重要的任务,还有很多类似的任务,为了了解道路的质地质量特性,道路的湿滑程度是其中非常重要的一点,当没有下雨然而道路非常湿滑,这点信息上常重要。

5、Previous approaches: optimization-based control

Where deep learning can help: reinforcement learning

image.png

路线规划边是 Sertec Karaman 的工作课程项目用到的是相同的方法,与CHris Gerdes对高速行驶中的赛车做规划追踪使用的方法类似,沿着复杂的曲线,可以利用优化来解决这个控制问题,或者可以利用强化学习,通过大量的模拟来得到能够顺利曲线转弯,并学习哪些路径不能转弯,这能够同时优化,你转弯时的速度,以及车辆的安全,为课程项目所使用的方法是相同的。

6、Driver state:

What's the driver up to?

image.png

驾驶员的状态,这是驾驶员他在那边坐着,那么在这种特定的情形下,你在做非常简单的任务,检测头部和眼睛的位置,头部和眼睛的姿势。这些能够确定所谓的,驾驶员的视线,也就是驾驶员正在注视的区域,从左到右,左边是一些简单的问题,右边是计算机视觉中一些困难的问题,左边是身体和头部的姿势,物体越大越容易被检测,物体的方向也就越容易被检测,然后是瞳孔直径,检测瞳孔的特性,位置,大小,然后是微扫视,极其微小的振动,眼睛的颤动,都能用来确定驾驶员当前的状态。

7、Gaze Region and Autopilot State

image.png

一些是计算机视觉能解决的,而有些不是,对驾驶员当前注视区域的检测,这里展示了特斯拉摄像头数据,Don 在驾驶这辆特斯拉,要检测他在注视六个区域中的哪一个,将其转化为一个分类问题,即左,右,后视镜,仪表盘,中控面板,以及前方道路,需要确定这六个区域中的哪一个,是驾驶员正在注视的方向,这很重要“不关心驾驶员注视的具体的X,Y,Z坐标信息,关心的是他是否看着道路,他们是在低头看手机还是看着前方道路?可以利用卷积神经网络来有效地回答这一问题。

8、Driver Emotion

image.png

你还可以通过CNN的提取看到驾驶员的情绪,可以将复杂的情绪转化为满意或不满意的二元问题,这是一个驾驶员与车载语音导航系统交互的视频,自我报告,这是最难的部分之一,如果你从事情感计算,一个从计算角度研究情绪的领域,如果你在这个领域工作,你会知道情感的途释是一件非常有挑战性的工作,如果标注基准数据仅仅根据这个男的在笑,因此标记为开心或者他在皱眉就标记为伤心,大多数从事情感计算的人都这样做,在这个例子中让人们自我报告,询问人们不满意的程度从1到10进行打分,图片上方的Dan提交了“1”代表他满意现在的交互,下方图片的司机报告“9“他对交互很沮丧,注意这里Dan的脸显得非常冷且僵硬,这代表他很满意。但下面视频中,虽然不满,但驾驶员在微笑,这提醒不应太信任人的本能反应,关于特征工程,必须相信数据,相信基本事实,最能反映现场发生了什么事情的实际语义。

 

三、End-to-End Natural Language Generation

1Natural language processing to enable  it to communicate successfully

2Knowledge representation to store information provided before or during the interrogation

3Automated reasoning to use the stored information to answer questions and to draw new conclusions

端到端的驾驶项目和教程,如果驾驶像一个谈话,如果驾驶像一个天然的语言交谈,那么可以认为端到端的驾驶,是跳过图灵测试的组成部分

4、Autonomous Driving: End-to-End

image.png

作为一个端到端自然语言生成,将外部传感器数据作为输入,输出车辆的控制。中间过程就是魔术发生的地方。

5、Stairway to Automation

image.png

用一个神经网络来完成,这张图展示自动驾驶汽车路径,这说明有基准事实的大量数据集,如果制定的驾驶任务,简单地输入外部图像,并产生转向命令,加速命令,那么有很多基准事实,有大量的司机在道路上每天驾驶,提供基准事实,因为他们的驾驶操作保证他们活着,所以如果收集这些数据,它们就成为基准事实,所以如果有可能学习,可以收集手动控制车辆的数据,并使用该数据来训练算法来控制无人车。

6、End to End Learning for Self-Driving Cars

首批做这个的有NVDIA他们训练外部图像,前方道路的图像,和神经网络,一个简单的卷积神经网络,取得图像。输幽转向命令,而且一定程度造成功学习到基本的导航转弯,曲线,甚至停止,或急转弯。这个工作很简单,

image.png

底部是输入,顶部是输入,输入是66×200像素图像RGB,显示在左边是原始输入你裁剪一点点调整大小为66×200,这就是的代码所提供的,在浏览器和TensorFlow运行时都是,它有几个卷积层几个完全连接层,和输出,这是一个回归网络,它不产生与猫的分类,它产生转向指令。如何转动方向盘,剩下的就是魔术,在人的输入之上进行训练。

7、End-to-End Driving with ConvnetJS

image.png

这个项目是系统的 ConvNetJS 的实现,在浏览器中运行。这是课程项目,不像DeepTraffic这是现实,这是真正的车辆实况输入。然后在实际游戏中,实际模拟是 DeepTesla.JS页面上方是神经网络损失函数的可视化,它一直在训练,然后是输入限制200x66,有一个卷积层,池化层,输出是回归层,单个神经元,这是一个微缩版 DeepTiny,是 Nvidia 的架构的缩小版,然后你可以想像在实时视频上运行这个网络。

自动驾驶系统和司机的真实数据,输入是蓝色,网络的输出是白色,而绿色表示的是图像的裁剪,然后调整大小以生成66×200的输入,再一次,令人惊讶的是,它在浏览器里运行,在真实世界视频中训练,所以你可以在你的车里也用到它,可以训练神经网络像你一样开车,代码是 ConvNetJS

8、End-to-end Steering

(1)By the end of this lecture, you'll be able to train a model

that can steer a vehicle

(2)Our input to our network will be a single image of the

forward roadway from a Tesla

(3)Our output will be a steering wheel value between -20 and20

和 TensorFlow 中实现,输入是一个单一的图像,这是 DeepTesla.JS. 输出是-20到20之间的方向盘值,是用度来计量的,记录下,上千小时,但向公众提供10段特斯拉公路驾驶的视频剪辑,一半是由自动驾驶仪提供,一半是人类驾驶,车轮的数值从一个完美同步的 CAN 获取,从 CAN 收集所有信息,它包含了方向盘数值并同步到视频中,裁剪选取窗口,刚刚提到的绿色部分。然后将其作为对网络的输入,和DeepTraffic 中的红色小车在假想车流中穿梭不同,这里包括真实世界杂乱的照明情况

image.png

这个简单的转向任务中,大部分的任务是待在车道里,待在车道标线内,用端到端的方式学会做这件事。

8、ConvNetJS Overview

(1)ConvNetJS is a Javascript implementation for using and training neural networks within the browser

(2)lt supports simple networks with several different layer types and training algorithms

(3)Constructing and training a network can be performed

in very few lines of code, great for demonstrations

ConvNetJS 是卷积神经网络 CNIN的JavaScrtpt 实现,它支持真实的任意网络,所有的神经网络都很简单,因为它在 Javascrpt 中运行,所以不能使用 GPU,网络越大,它的计算量就越大,不像 Deepiraffic,它不是一个比赛,但是如果是一个注册这门课的学生,你就必须提交代码

问题所需要的数据量,对于某一特定任务所需的数据量,是否有一般的经验法则?

一般都必须要有神经网络有着很好的记忆,所以你必须让训练中的每一个案例代表,所感兴趣的一个网络,并且尽可能的多一些,也就是说如果你想要一幅图,如果你想区分猫和狗的区别,你想至少有1000只猫和1000只狗,驾驶有两点问题:第一,大部分时间车况看上去都是一样的,你真正关心的是什么时候和平时不同,这些全都是边界案例,神经网络不擅长的是从普通情况到边界情况、到极端值。所以能成功地站在高速公路上数千小时并不意味着,你能避开一个突然跑到你车前的行人,驾驶的另一点是你必须达到一个相当高的精度和区分猫狗不一样,误判意味着会死人,生命悬于你在车道上驾驶汽车的能力,最好有接近100%的精确率,这里还有一个设计网络的框,有一个衡量网络性能的可视化结果。展示了网络在每一个卷积层和全连接层上提取的特征,还有重新开始训练的能力。

可视化该网络在真实视频中的性能,这个输入层,即卷积层。

image.png

图片可视化的右下角有个巧妙设计的条码,这是一种通过视频同步多个数据流的方式这是一种通过视频同步多个数据流的方式,这能简单地处理多个数据流的多模态数据,尤其是当它们非同步,当训练神经网络的一发组成部分是洗牌的数据,必须用巧妙的方式洗牌数据,达到视频没有任何一个小方面过拟合,而保持数据的完全同步,所以他没有做链接方向盘和视频的艰苦工作,而是把方向盘作为条形码放在图片上方

image.png

最后可以看到网络运行,随着时间的推移,它逐渐学会正确驾驶。

这是一种与TensorFlow端到端驾驶相同的过程,GitHub上有可用的代码,这需要一个或任意数量的视频在上面训练,然后产生一个可视化来比较实际方向盘和预测方盘。方向盘在与人类驾驶或自动驾驶系统一致时变为绿色,当它不一致时将变成红色,希望这不要太频繁。

9、Build the Model: Convolutional Layers

image.png

这是在TensorFlow中完成的细节,这是普通卷积神经网络。指定一组层,卷积层,全连接层,训练模型,这样你就可以批量迭代图像。

在一组测试图像上运行这个模型,得到这个结果。

image.png

在 ipython notebook 上有一个关于这个的教程,这可能是开始做卷积神经网络的最好方式,它关注的是,最简单的图像识别的问题,对于交通灯的分类。有这些交通灯的图像,做了大量的找数据的工作,你要做的是,建立一个卷积网络,能区别颜色,并在看到红色黄色绿色时启动。

相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
65 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
11天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
25 3
图卷积网络入门:数学基础与架构设计
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
53 7
|
14天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
18 1
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
21天前
|
机器学习/深度学习 人工智能 网络架构
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
37 1
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
22天前
|
机器学习/深度学习 数据采集 PyTorch
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)

热门文章

最新文章