ShenhanQian / Lane_Detection-An_Instance_Segmentation_Approach

An unofficial implementation of the paper "Towards End-to-End Lane Detection: an Instance Segmentation Approach".
MIT License
56 stars 22 forks source link

evaluate #1

Closed hellosher closed 5 years ago

hellosher commented 5 years ago

请问您有评估过您训练好的模型吗,用tusimple数据集的指标或者其他的比如F1分数之类的指标?或者使用其他的数据集如CULanes来训练?

ShenhanQian commented 5 years ago

在TuSimple Benchmark测试集上的Accuracy为约0.94,FCN、ENet、ICNet的性能差别不大,没有做数据增强。

hellosher commented 5 years ago

想问一下您在训练过程中每个batch的训练时间是多久啊,不知道我哪里出问题了,一个batch要好久

ShenhanQian commented 5 years ago

刚刚又测试了一下

python train_lanenet.py --data_dir /root/Projects/lane_detection/dataset/tusimple/train_set --arch enet --dual_decoder

batch size设为16,在一张Titan V上运行每个Batch大约0.6秒。

代码Clone下来直接运行就很卡吗,可以通过输出每个iteration中各个环节耗费的时间来定位问题。

hellosher commented 5 years ago

我修改了输入,想直接读取原始图片和两个标签进去,然后就出了问题,应该是我哪里改错了☹

hellosher commented 5 years ago

还想问一下你定义的超参数和一些其他参数我看和论文里的不太一样,这是实验后的结果吗

ShenhanQian commented 5 years ago

dataset.py原本就是直接读图片和标注啊,我没有沿用Maybeshewill的数据读取方式。

是的,做了比较多实验,选取了效果较好的参数。

hellosher commented 5 years ago

对,但是考虑要扩充一些数据集没有用json文件标注的话,当前输入方法不太适用

hellosher commented 5 years ago

还有一个问题想问,这个输入图片大小的设置是有什么要求吗,我看好多人的复现用的是512*256

ShenhanQian commented 5 years ago

我选用512x288是为了和TuSimple数据集中原始图片(1280x720)的比例一致,没有其他理由。

hellosher commented 5 years ago

大佬,想请问你训练了多少epoch或者说多少step能得到0.94的结果,我在训练过程中batch_size=8,仅使用tusimple数据集训练100个epoch后,在训练集上的recall最多也只能达到0.8,precision连0.5都达不到,在测试集表现更差,请问你有遇到这个问题吗?

ShenhanQian commented 5 years ago

ENet-1E1D

下图为训练曲线,大约10K step是100个epoch

F1-score

image

Precision

image

Recall

image

不是大佬是小白,共同进步 :D

ShenhanQian commented 5 years ago

基于我在 https://github.com/ShenhanQian/Lane_Detection-Instance_Segmentation-Tensorflow/issues/1#issuecomment-508143184 中提到的对于性能指标的思考,可以先拿当前的结果在TuSimple Benchmark的Test脚本上跑一下,看一下结果。

hellosher commented 5 years ago

👍

hellosher commented 5 years ago

抱歉打扰您,请问您用训练好的模型测试时,聚类过程有出现问题吗,我将bandwidth调整到1.5还是会在中途中断,提示找不到点之类的,本来想用您公布的模型测试一下的,结果模型导入的时候报错了😥

ShenhanQian commented 5 years ago

如果embedding分支训练得不够好,确实会存在聚类报错的问题。但代码中的参数是我调整过之后可以稳定运行的。有以下几个解决思路供参考:

  1. 聚类算法的参数要和discriminative loss的参数匹配;
  2. 用if条件语句先判断一下聚类算法返回的是不是空列表,如果是,就舍弃当前帧。