百度Apollo车道线分割比赛一(数据处理)
百度Apollo车道线分割比赛二(模型搭建)
百度Apollo车道线分割比赛三(模型训练)
完整代码:Github
百度Apollo车道线检测比赛用的数据集是百度自己制作的数据集,数据集是像素级的标注,比tusimple的数据集要更加精准,下图为原图和标签,数据集下载地址
百度比赛要求采用百度自己的深度学习框架飞浆(paddlepadle)实现,比赛前35名方案
本方案采用pytorch实现,且采用复赛的数据集,标签为灰度值图像。
本实现数据集处理为实时预处理的形式,这样可以节省内存空间,特别使用服务器去训练时会场方便,首先下载复赛的数据集,包含样本和灰度值的标签。
实时预处理的思路很简单,将数据集的样本和标签映射到csv文件中,训练时按照csv的顺序去读取样本,并且处理好送到训练的模型。
***第一步***将下载的数据集映射到csv文件。处理文件utils.make_list.py,代码如下:
#coding=utf-8
#@author : Jiangnan He
#@date : 2019.12.25 15:47
"""
img_process 生成的文件结构如下:
--train_set :D:\Dataset\Apollolaneline\train_set - gt_image
- src_image
-- test_set :D:\Dataset\Apollolaneline\test_set - src_image
"""
import pandas as pd
import os
from sklearn.utils import shuffle
import glob
# train_set 共有21914 个样本 我们按照 train:val:test=3:1:1 的比例划分 训练集和 验证集 测试集
datasetpath1=datasetpath='D:/Dataset/Apollolaneline/'
#================================================
# make train & validation & test lists
#================================================
def get_train_val_test():
img_list=[]
lab_list=[]
for file in glob.glob(str(datasetpath1)+"/Road*/"):
if file.find("zip")!=-1:
continue
for i in glob.glob(str(file)+"/ColorImage_road*"):
file1=os.path.join(datasetpath1,i,"ColorImage")
for j in os.listdir(file1):
path=os.path.join(file1,j)
for k in os.listdir(path):
path1=os.path.join(path,k)
print(path1,len(os.listdir(path1)))
for z in os.listdir(path1):
image_path=os.path.join(path1,z)
#样本D:\Dataset\Apollolaneline\Road02\ColorImage_road02\ColorImage\Record001\Camera 5\170927_063811892_Camera_5.jpg
#标签D:\Dataset\Apollolaneline\Gray_Label\Gray_Label\Label_road02\Label\Record001\Camera 5\170927_063811892_Camera_5_bin.png
print(image_path,"image_path")
image_name=str(image_path.split()[1]).split('\\')[1].split(".")[0]+'_bin.png'
print("image_name",image_name)
#获取src_img 文件地址
src_path=os.path.join(path1,z)
# 获取gt_img 文件地址
gt_path=os.path.join("D:/Dataset/Apollolaneline/Gray_Label/Gray_Label/","Label_"+str(image_path.split("\\")[2]).split("_")[1],"Label","/".join(image_path.split("\\")[4