CNN预测车辆方向盘角度和油门

数据来源:

数据来源是unity公司的模拟器,通过自己驾驶录制,会产生图片文件和csv文件
csv文件包括:center、left、right、steering、throttle、brake、speed

我们只需要使用其中的center、left、right三列即可。

csv文件数据格式如下:

图片文件夹如下:

需求分析

通过给定图片和csv文件信息,训练一个model,该model能够通过输入一张图片预测方向盘转角和油门大小。

设计 

  1. 读取csv文件信息,判断csv文件行 == 图片数量 * 3
  2. 将需要的三列数据提取出来,并shuffle,通过train_test_split分割训练集和验证集
  3. 设置输入图片大小,根据输入大小构建CNN模型
  4. ModelCheckpoint保存最优模型、EarlyStopping检测变量、fit_generator训练模型
  5. 保存model
  6. 通过model进行test

编码

读取csv文件信息,判断csv文件行 == 图片数量 * 3。

if __name__ == "__main__":
    # cvs文件路径
    data_path = '/Users/qishi/Documents/car/'
    # 打开csv文件
    with open(data_path + 'driving_log.csv', 'r') as csvfile:
        # 读文件
        file_reader = csv.reader(csvfile, delimiter=',')
        # 把文件信息放在log列表中
        log = []
        for row in file_reader:
            log.append(row)
    # 将列表转化为数组
    log = np.array(log)
    # 去掉文件第一行
    # log = log[0:, :]

    # 判断图像文件数量是否等于csv日志文件中记录的数量
    ls_imgs = glob.glob(data_path + 'IMG/*.jpg')
    assert len(ls_imgs) == len(log) * 3, 'number of images does not match'

将需要的三列数据提取出来,并shuffle,通过train_test_split分割训练集和验证集。

    # 使用20%的数据作为测试数据
    validation_ratio = 0.2
    # 图片大小
    shape = (128, 128, 3)
    # 每训练一次训练几张图片
    batch_size = 32
    # 训练次数,之后改为32
    nb_epoch = 32

    # 图像文件名
    x_ = log[:, 0]
    # 转角
    y_ = log[:, 3].astype(float)
    # 油量
    z_ = log[:, 4].astype(float)
    print(x_.shape)
    print(y_.shape)
    print(z_.shape)
    # 一起洗牌,对应信息不变
    x_, y_, z_ = shuffle(x_, y_, z_)
    # 训练集和验证集,20%验证,80%测试
    # random_state就是为了保证程序每次运行都分割一样的训练集和测试集。否则,同样的算法模型在不同的训练集和测试集上的效果不一样
    # 当你用sklearn分割完测试集和训练集,确定模型和初始参数以后,你会发现程序每运行一次,都会得到不同的准确率,无法调参。这个时候就是因为没有加random_state。加上以后就可以调参了
    X_train, X_val, y_train, y_val, z_train, z_val = train_test_split(x_, y_, z_, test_size=validation_ratio,
                                                                      random_state=SEED)

    print('batch size: {}'.format(batch_size))
    print('Tr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值