self-driving car 数据增强

Data preprocessing and balancing to enhance end to end learning in self-driving vehicle 论文笔记

摘要:驾驶车辆一直是一项艰巨的任务,无论是任何车辆,因为机器人和人工智能在过去十年中已经发展了多倍,这给了我们自动化包括驾驶在内的许多过程的技术基础。开发自动驾驶汽车是许多公司目前的研究领域,如谷歌、特斯拉、英伟达和优步。他们提出的几种方法是英伟达的行为克隆、CommaAI的OPENPILOT、特斯拉的自动驾驶仪,所有这些都使用摄像机来处理车辆的周围环境。在本文中,我们讨论了英伟达最近的工作(行为克隆),并将他们的工作与我们自己的一些技术相结合,如过滤重复数据和增加输入数据以减少所需的数据收集量。
英伟达公司论文中的模型行为克隆涉及神经网络的训练,方法是提供一个图像和控制日志数据集,该数据集是在人类驾驶员操作车辆时生成的。这种深度学习方法通过在卷积神经网络(CNN)中处理数据集来进行示例学习,因此被称为行为克隆。这种方法的目的是使用收集的数据训练模拟行为的模型。这降低了模型培训和测试的复杂性,并且模型能够更有效地应对新的驾驶情况

二 、方法

训练代理的过程包括由人类驾驶员生成数据,然后通过过滤(数据增加)处理收集的原始数据,仅从静止数据中提取重要数据,也可能有生成类似数据的情况(数据输入非常大),因此为了避免处理重复数据,我们实现了数据平衡,通常将数据划分为多个容器,并使用来自每个容器的固定数量的帧,这为我们提供了更平衡的数据。
现在把数据输入神经卷积网络网,产生一个训练有素的模型,然后由这个模型来操纵车辆。上述过程可分为三个阶段
1 数据生成
在模拟器中控制汽车在车道上航行,并且
2 训练
2.1 左右摄像机数据
对左右摄像机的图像进行矫正

views = ['left', 'center', 'right'] 
steering_correction = [.25, 0., -.25] 
camera = np.random.randint(len(views)) 
image =mpimg.imread(data[views[camera]].values[i]) 
angle = data.steering.values[i] + steering_correction[camera] 

2.2水平翻转

flip= random.sample(range(x.shape[0]), int(x.shape[0] /2)) 
x[flip] = x[flip, :, ::-1, :] 
y[flip] =-y[flip]

2.3 垂直移动

tp =int(random.uniform(.325, .425) * image.shape[0]) 
bm =int(random.uniform(.075, .175) * image.shape[0]) 
image = image[tp:-bm, :] 

2.4 随机阴影

r, j= image.shape[0], image.shape[1] 
[x1, x2] = np.random.choice(j, 2, replace=False) 
k = r/ (x2 - x1) 
b =- k * x1 
for i inrange(r): 
    c =int((i - b) / k) 
    image[i, :c, :] = (image[i, :c, :] *.5).astype(np.int32) 

3 测试
用几种图像处理手段进行数据增强,再输入到网络中进行训练生成转向预测模型,然后将小车放在未训练过的场景下行驶。

三 结论

车能在未训练过的场景下正常行驶,经过数据增强后,模型的泛化性能得到了提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值