关于数据集制作相关问题思考

       最近需要在模拟器中搜集自动驾驶的数据(图片和车速),开始使用模拟器手动控制车俩的程序时很恼火,很不容易控制。于是我自己写了一份手动控制代码,方便操控。正是这份控制起来方便的方案坑了我很久,自己挖的坑还得自己爬。下面对这坑进行总结一下。

挖坑过程详解:

学习自动驾驶的同学可能都使用过模拟器,使用模拟器搜集数据集时都会手动控制车俩行驶。简单道路还好,道路弯多一点很容易就跑出去了(条件有限,只能键盘控制),强迫症的我不断重新开始,速度快一点就跑出去了,太慢又受不了(速度和方向都很敏感,模拟的真实车俩)。突然我灵机一动何不自己写一个,速度和方向好控制的方案。下面给出控制策略的代码:

if key == 'w':
	speed += 1.
	if speed >= 40:
		speed = 40
elif key == 's':
	speed -= 1.
	if speed <= -10:
		speed = -10
elif key == 'a':
	angle += 1.
	if angle >= 15:
		angle = 15
elif key == 'd':
	angle -= 1.
	if angle <= -15:
		angle = -15

哈哈哈,就是这么简单!这样在跑弯道时我可以把角度和速度保持在某个位置。测试果然效果不错。就这样我收集了我需要的数据,然后训练网络,最后在模拟器中测试,看上去感觉也还可以。那么问题是什么了?这样的模型鲁棒性非常的差,稍微调整一下车辆的方向位置,或者改变一下环境,效果就非常差。不管我如何修改网络,鲁棒性并没有多少提高。下面我们分析一下问题出在哪儿了?

分析问题:

我们先理解一下DNN模型的本质是什么?我的理解是一种映射关系,这里就是图片与角度、速度的一种映射。我们训练的过程就是寻找这种映射的对应关系。那么上面的问题怎么解释了?由于上面的代码,车俩在某个位置时,我习惯性的做出相同的操作,因为我知道这样可以让车辆更快的通过。这就导致了同一位置的数据相似性很高,也就是定义域和值域比较窄。训练的数据集都很窄,映射出来的关系也可想而知。本质上这个坑很蠢,作为小白爬这样的坑也很正常。

总结问题:

1、不要嫌麻烦,走捷径,人生没有捷径可走;

2、DNN虽然能对高维数据进行一种映射,但终究是没有真正意义上的决策能力;

3、端到端的解决方案任重而道远,寄希望与强化学习。

注:以上为现阶段学习的总结,也许明天观点就变了\leftarrow \leftarrow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值