欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角

发布时间:2023/12/29 113 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言

之前一直在弄车道线的检测和识别,效果都不佳,要么车道线分割太慢了,要么容易出现丢线的情况处理的不是很好,所以索性直接用卷积神经网络做一个线性拟合。

完整文章地址

古月居博客网站

效果

用魔法玩欧卡2,使用国产深度学习框架paddlepaddle部署无人驾驶

传送门:视屏链接

数据采集

读取欧卡2的数据做训练集属实花了我点功夫,步骤如下:

  • 首先安装虚拟摇杆vJoySetup.exe
  • 在欧卡里设置操纵模式为键盘加vJoy
  • 然后用py代码发送虚拟摇杆位置控制方向盘转动
  • 用py代码写一个全局键盘监控的代码,使用‘u’ ‘i’两个按键来控制方向盘。
  • 我为什么不用pygame直接读joy的角度呢?因为真的试了很久读不到,好像是光标的问题,解决不了。

数据集

下载地址:csdn链接

数据集样式:



log文件前面是图片地址,空格后是角度

数据集处理代码

import numpy as np import glob import os# 数据路径 data_path = "../result/" trainList = '../train_data.txt' testList = '../test_data.txt' # 多少比例用作训练集 ratio = 0.8# 只读csv文件 with open(data_path + "log.txt",'r') as logFile:_list = logFile.readlines()# 判断图片数是否匹配ls_imgs = glob.glob(data_path + 'IMG/*.jpg')print(len(ls_imgs))print(len(_list))assert len(ls_imgs) == len(_list),'number of images does not match'if (os.path.exists(trainList)):os.remove(trainList)if (os.path.exists(testList)):os.remove(testList)with open(trainList, 'a') as f_train:with open(testList, 'a') as f_test:for index,_list in enumerate(_list):ang = int(_list.split(" ")[-1])img = _list.split(" ")[0]if index % (int(10*ratio) + 1) == 0:f_test.write(img + " " + str(ang) + "\n")else:f_train.write(img + " " + str(ang) + "\n")print("生成完毕,路径:" + testList + " | " +trainList)

网络结构

def cnn_model(image):conv1 = fluid.layers.conv2d(input=image, num_filters=24, filter_size=5, stride=2, act='relu')conv2 = fluid.layers.conv2d(input=conv1, num_filters=32, filter_size=5, stride=2, act='relu')conv3 = fluid.layers.conv2d(input=conv2, num_filters=64, filter_size=5, stride=2, act='relu')conv4 = fluid.layers.conv2d(input=conv3, num_filters=64, filter_size=3, stride=2, act='relu')conv5 = fluid.layers.conv2d(input=conv4, num_filters=64, filter_size=3, stride=1, act='relu')fc1 = fluid.layers.fc(input=conv5, size=100, act=None)drop_fc1 = fluid.layers.dropout(fc1, dropout_prob=0.1)fc2 = fluid.layers.fc(input=drop_fc1, size=50, act=None)drop_fc2 = fluid.layers.dropout(fc2, dropout_prob=0.1)predict = fluid.layers.fc(input=drop_fc2, size=1, act=None)return predict

优化方向

  • 优化网络结构
  • 优化数据集
  • 对数据进行预处理,提高提取车道线的准确率和完全率以及速度,然后再利用处理的结构传入卷积神经网络训练。

总结

以上是生活随笔为你收集整理的使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。