zkyseu / PPlanedet

Lane detection with PaddlePaddle. PPLanedet contains many SOTA methods, e.g. CondLaneNet, SCNN, RESA, RTFormer,UFLD
MIT License
74 stars 10 forks source link

可以用自制数据集训练吗 #1

Closed hungrybreadyosoro closed 1 year ago

hungrybreadyosoro commented 1 year ago

我想用自己用labelme标注的数据集训练,我看这里只给出了culane和tusimple的格式,请问需要做哪些修改呢?

zkyseu commented 1 year ago

@hungrybreadyosoro 您好,最简单的方式是将您数据集格式转成CULane或者Tusimple。如果您想自己定义数据集格式,我这里给您提供一个修改的方法。 在base_dataset.py文件里的BaseDataset类增加一个类似CULane和Tusimple数据集类中load_annotations()函数,该函数中需要定义self.data_infos这个变量,self.data_infos是一个列表,列表中每个元素是一个字典,字典中需要包括{"img_path","mask_path",''lanes'}三个基本的键。定义好之后,您还需要在类里面定义一下evaluate函数用于验证模型性能。

hungrybreadyosoro commented 1 year ago

感谢您的回答!我按照culane的格式,编写了一个train_gt.txt的文件,指明了每组输入图像和标签图像的路径,应该可以正常训练。现在还有几处疑问想请教一下: ①我想用condlanenet的方法训练,自制数据集尺寸是1920*1080,我注意到resnet50_culane.py中有sample_y=(590, 270, -8),这个该如何设定呢?590是culane数据集的尺寸,270到590是可能出现车道线的范围,这样理解对吗?以及-8是怎么设置的? ②此外,第90行到第104行当中,img_height和img_width是如何计算的? ③crop_bbox是不是起到一个裁切的作用,裁切出画面中可能存在车道线的画面? ④mask_size = (1, 80, 200)是如何设置的? 还请包含一个深度学习小白,一次问了您很多问题,望不吝赐教!

zkyseu commented 1 year ago

@hungrybreadyosoro

  1. CULane在最后进行验证时候是取离散的点进行F1 score的评价,因此需要沿着图片宽的方向也就是y轴进行采用样。[270,520]是车道线出现的范围。-8是采样步长,沿y轴每8个像素点进行采样。这个在实际中可以按照你的标签来设置-8这个值,因为CULane中是每8个像素因此取-8.
  2. img_width是图片宽度,这个值可大可小,依据你的实际数据集情况来设置,320=590-270。也就是车道线所在图片的范围。
  3. 理解是正确的,crop_bbox就是将不包含车道线部分图片裁剪掉。
  4. mask_size =(1, 80, 200)是用来求point的位置的,每个point所在方格大小为4*4,因此80=320/4,200=800/4. 数据增强参数一般默认即可,因为CULane数据集已经足够复杂了
zkyseu commented 1 year ago

如果您还有问题的话欢迎重新打开这个issue,没有的话我就先关闭该issue。