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

相关文章
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
3月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
428 11
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
3月前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
271 0
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
316 7
|
7月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于PSO(粒子群优化)改进TCN(时间卷积神经网络)的时间序列预测方法。使用Matlab2022a运行,完整程序无水印,附带核心代码中文注释及操作视频。TCN通过因果卷积层与残差连接处理序列数据,PSO优化其卷积核权重等参数以降低预测误差。算法中,粒子根据个体与全局最优位置更新速度和位置,逐步逼近最佳参数组合,提升预测性能。
|
6月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容包含时间序列预测算法的相关资料,涵盖以下几个方面:1. 算法运行效果预览(无水印);2. 运行环境为Matlab 2022a/2024b;3. 提供部分核心程序,完整版含中文注释及操作视频;4. 理论概述:结合时间卷积神经网络(TCN)与鲸鱼优化算法(WOA),优化TCN超参数以提升非线性时间序列预测性能。通过因果卷积层与残差连接构建TCN模型,并用WOA调整卷积核大小、层数等参数,实现精准预测。适用于金融、气象等领域决策支持。
|
6月前
|
机器学习/深度学习 数据采集 并行计算
基于WOA鲸鱼优化的TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于TCN(Temporal Convolutional Network)与WOA(Whale Optimization Algorithm)的时间序列预测算法。TCN通过扩张卷积捕捉时间序列长距离依赖关系,结合批归一化和激活函数提取特征;WOA用于优化TCN网络参数,提高预测精度。算法流程包括数据归一化、种群初始化、适应度计算及参数更新等步骤。程序基于Matlab2022a/2024b开发,完整版含详细中文注释与操作视频,运行效果无水印展示。适用于函数优化、机器学习调参及工程设计等领域复杂任务。
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容涵盖基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测算法。完整程序运行效果无水印,适用于Matlab2022a版本。核心代码配有详细中文注释及操作视频。理论部分阐述了传统方法(如ARIMA)在非线性预测中的局限性,以及TCN结合PSO优化超参数的优势。模型由因果卷积层和残差连接组成,通过迭代训练与评估选择最优超参数,最终实现高精度预测,广泛应用于金融、气象等领域。

热门文章

最新文章