DeepLiDAR
DeepLiDAR copied to clipboard
how to train traind.py seperately?
您好! 非常感谢您开源这个SOTA的代码。在训练过程中有几个问题如下:
- 在我的任务里,需要尽量轻便的深度补全网络,因此打算只从头训练trainD,py,在dataloader里发现有三个fileppath。分别是filepathl、filepathd、filepathgt,前两个分别是KITTI depth数据集的data_depth_velodyne/train和data_depth_annotated/train文件夹,想知道第三个filepathgt在我的任务里应该是什么呢,或者是否可以做修改使得trainD.py进行独立的训练呢。
- 训练完trainD.py后,有不同surface normal,仅在trainD.py上得到的model和结果进一步训练train.py来提高rmse或者其他metrics的可能性吗~?
你好,我也是在学习作者的文章和代码,对于第一个问题,我觉得filepathl 路径是指data_depth_velodyne/train和rawdata( RGB图片的),filepathd是指data_depth_annotated/train,gt文件夹下放的就是data_depth_annotated中所有图片的名字,代码中访问这个文件夹下的东西就是为了遍历数据集图片的名字的,没有用gt下的数据。 即目录结构是: ..data_depth_annotated |--train |-------2011_09_26_drive_0001_sync |---------------------------------------proj_depth |---------------------------------------------------groundtruth |----------------------------------------------------------------image02 |----------------------------------------------------------------image03 |-------2011_09_26_drive_0002_sync |---------------------------------------proj_depth |---------------------------------------------------groundtruth |----------------------------------------------------------------image02 |----------------------------------------------------------------image03 |-------2011_09_26_drive_0003_sync |-------..........
..data_depth_velodyne |--train |-------2011_09_26_drive_0001_sync |---------------------------------------image02 |------------------------------------------------data( RGB ) |---------------------------------------image03 |------------------------------------------------data (RGB) |---------------------------------------proj_depth |---------------------------------------------------velodyne_raw |----------------------------------------------------------------image02 |----------------------------------------------------------------image03 |-------2011_09_26_drive_0002_sync |..... |-------2011_09_26_drive_0003_sync |-------..........
你好,我也是在学习作者的文章和代码,对于第一个问题,我觉得filepathl 路径是指data_depth_velodyne/train和rawdata( RGB图片的),filepathd是指data_depth_annotated/train,gt文件夹下放的就是data_depth_annotated中所有图片的名字,代码中访问这个文件夹下的东西就是为了遍历数据集图片的名字的,没有用gt下的数据。 即目录结构是: ..data_depth_annotated |--train |-------2011_09_26_drive_0001_sync |---------------------------------------proj_depth |---------------------------------------------------groundtruth |----------------------------------------------------------------image02 |----------------------------------------------------------------image03 |-------2011_09_26_drive_0002_sync |---------------------------------------proj_depth |---------------------------------------------------groundtruth |----------------------------------------------------------------image02 |----------------------------------------------------------------image03 |-------2011_09_26_drive_0003_sync |-------..........
..data_depth_velodyne |--train |-------2011_09_26_drive_0001_sync |---------------------------------------image02 |------------------------------------------------data( RGB ) |---------------------------------------image03 |------------------------------------------------data (RGB) |---------------------------------------proj_depth |---------------------------------------------------velodyne_raw |----------------------------------------------------------------image02 |----------------------------------------------------------------image03 |-------2011_09_26_drive_0002_sync |..... |-------2011_09_26_drive_0003_sync |-------..........
您好,是的,我也是这样设置数据目录格式的,但是那GT的文件夹的路径您是放在哪里的。如果不变的话,会提示报错的。
gt文件夹下路径是 gt |--out |------train |-----------2011_09_26_drive_0001_sync |------------------------------------------ 0000000005.png |------------------------------------------ 0000000006.png |------------------------------------------ 0000000007.png |------------------------------------------ ..............................
这个我觉得就是为了遍历图片用的,跟data_depth_annotated同一个根目录
- 第一个@HuiToFei说得对,这个gt其实是我放surface normal的gt的 ,也用来遍历得到文件名; 2.应该是可以的,surface normal只要make sense作为train.py的输入是可以提高指标的。
您好!
- 您的意思是为了提供遍历的文件名,如果光训练trainD.py,我们需要在gt文件夹里放入一样的RGB图片吗~?我感觉可以只用一个文件夹就做到诶只要把temp变成annotated文件夹的名字就可以。
- 我的意思可能表达有误,我的意思是在无surface_normal的条件下,可以跳过trainN.py,依次训练trainD.py和train.py吗,因为观察到这两个都只用了KITTI的数据集而不需要surfacenormal。
1.这个随便你怎么弄,只要能得到正确的并且对应的文件名就行。 2.可以这么做,但是,如果你没有预先载入我们提供的model的话,依然需要surface normal的gt,train.py里也需要加入trainN.py里的surface normal的loss,因为我们这个工作是基于surface normal的。
您好! 对于2.中提出的想法,我尝试了一下。发现在没有surface_normal的条件下,无法训练trainD.py,提示'too many values to unpack‘的错误,应该是本身缺少surface_normal的关系。因为看到您的model中PARTII的部分是需要surface normal的输入的。可能是这个原因。
是的,trainD.py也是需要normal作为输入,你如果不使用normal,可以直接试试train我们的DCU
是的,打算直接trainDCU模块来进行测试,DCU本身就是一个非常优秀的模块,如果能有专门trainDCU的模块开源就好啦hhh。现在的想法是在trainN.py的基础上修改。
好的
@JiaxiongQ 您好,打扰了,我对分开训练存在一些疑惑。 1、如果我想用别的数据集但基于用您提供的模型进行训练,是不是只能跑train.py然后load该模型,进行第三部分的finetuning?有办法可以基于您的模型,但也finetuning前两部分吗,即trainD和trainN。 2、我在别的评论区看到您说训练一个全新的模型有两种方式,一种是一个一个训练,然后load上一个模型,比如先训练好N,再load它的模型训练D,最后跑train.py;那么另一种是直接跑train.py,但是这个训练方式是否没有调整N和D? 感谢
train.py中64到82行有对各个部分的梯度进行屏蔽的操作,如果你要用我们的model的话可以直接用train.py来finetune,但是当你要finetune normal那部分的时候需要把trainN.py中的loss加进去。
您好,如果已经接触normal部分的梯度屏蔽,但是在train.py中的152行中“ loss = 0.5 * loss1 + 0.3 * loss2 + 0.3 * loss3 + 0.1 * loss4”,loss4不就已经是估计normal的loss吗,不过这个loss的ground true不是计算出来的normal,您说的增加trainN部分的loss,是相当于增加一个loss5? 感谢。 @JiaxiongQ
是的,这个loss4是从输出的depth算出的normal的loss,还有既是网络输出也是网络输入的normal的loss,也就是trainN.py里的那个loss。
你好!我从trianN.py中改了一个trainDCU.py出来,目前正在训练,但是在训练时好像评价指标只有loss,也没有在depth dataset的val集上进行验证,无法知道其rmse等其他指标的性能。想问一下在该网络模块中一般loss下降到多少,会有比较好RMSE结果。以及在训练时,应该如何观察其训练的情况。
具体数值不太记得了,我们train的时候是用了3块GPU,batch size是12,train了15个epoch,最后把15个model放在一起test,取在val上RMSE最低的那个。
如果增加了loss5,前面的系数调整是随机尝试的吗,原本是0.5loss1+0.3loss2+0.3loss3+0.1loss4。
可以先给一个小于0.1的值,但是还是要以在validation上的表现来调整。
借楼问个问题哈,训练文件train.py,trainN.py,trainD.py里这句model = s2dN(args.batch_size / args.gpu_nums) ,s2dN函数怎么找不到啊,这个函数从哪里导入的啊,求解答