我正在开发一个游戏 AI,它试图掌握赛车模拟。我已经在我玩游戏的游戏画面上训练了一个 CNN (AlexNet),并将按键作为目标。
这个设置有两个主要问题:
从速度计中提取当前速度,以便将其提供给 AI。这个问题已经在这里解决了。
在测试过程中,我注意到AI无法在笔直的道路上进行小幅调整,并且经常偷工减料。
我很确定第二个问题是由游戏处理按键二进制(例如“a”按下 -> 100% 左转)引起的。人工智能无法做出精确的动作。
为了解决这个问题,我想模拟一个精确控制游戏的操纵杆。使用pygame,我已经设法将我的控制器输入捕获为训练数据。
控制器有两个轴,一个用于转动,另一个用于油门/制动。两个轴都可以具有介于 -1 和 1 之间的任何值:
Axis 0: Value -1 -> 100% left
Value +1 -> 100% right
Axis 1: Value -1 -> full break
Value +1 -> full throttle
我的目标是训练 AlexNet 在给定当前速度和捕获的帧的情况下输出模拟原始轴值,并将其预测输入到操纵杆模拟器中。
我在 GitHub 上发现有人尝试了类似的方法,即使在修改后的 AlexNet 上也无法取得好的结果。因此,我想知道是否甚至可以修改 CNN 以输出模拟值,而不是将其用作图像分类器。
我的问题是是否值得花精力编辑 AlexNet,而不是使用完全不同的模型。
我在网上找到了一些模型,比如NVIDIA End-to-End Self Driving 模型,遗憾的是它只控制转向角度,似乎是为低速休闲驾驶而设计的。