Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

训练过程还是出现nan #116

Closed
fayechou opened this issue Dec 10, 2018 · 68 comments
Closed

训练过程还是出现nan #116

fayechou opened this issue Dec 10, 2018 · 68 comments
Labels
help wanted Extra attention is needed

Comments

@fayechou
Copy link

你的做法和我的一樣,我也是把學習率降低之後就可以訓練了,但是當epoch跑到一定次數之後,仍會有nan的情形出現.
而且accuracy只有在0.5~0.6之間,請問你有這樣的情形嗎?
謝謝!!

你好,我遇到的问题和你的一模一样,请问你解决了吗?是怎么解决的啊?

Originally posted by @fayechou in https://github.com/MaybeShewill-CV/lanenet-lane-detection/issue_comments#issuecomment-445708580

@cardwing
Copy link

@fayechou , you can try my repo and check if it can yield better accuracy. Besides, this implementation does not encounter NAN problems.

@MaybeShewill-CV
Copy link
Owner

@fayechou 你可以再贴一些细节在这里:)

@fayechou
Copy link
Author

@MaybeShewill-CV 我也不知道问题出在哪里,还在找,希望能给我指导下。我按原来的learning rate训练会出先NAN,然后减小learning rate接着可以训练,但是accuracy到0.5左右的时候还是会出现NAN(试了几次),learning rate调大调小都没用。我确认了数据集的标签制作没有问题,binary的是0,255; instance的是20,70,120,170,220,而且没有negative的数据。 谢谢!
这是中间出来的图:
image
binary:
binary_seg_img
embedding:
embedding

@fayechou
Copy link
Author

@MaybeShewill-CV 按出现NAN时候的Weight, test一组数据出来的效果也给你看看:
1
12

@MaybeShewill-CV
Copy link
Owner

@fayechou 你使用的tensorflow版本是什么?

@fayechou
Copy link
Author

@MaybeShewill-CV

zh@zh-H81M-DS2:$ source activate tensorflow1.1
(tensorflow1.1) zh@zh-H81M-DS2:
$ python -c 'import tensorflow as tf; print(tf.version)'
1.10.0
(tensorflow1.1) zh@zh-H81M-DS2:~$

@MaybeShewill-CV
Copy link
Owner

@fayechou 使用的是tusimple的数据集?

@fayechou
Copy link
Author

@MaybeShewill-CV 是的, train:val = 4:1

@MaybeShewill-CV
Copy link
Owner

@fayechou 这个问题在我本地得不到复现,我使用这个参数训练过很多次模型都没有出现nan的情况.如果在你的环境中每次都必复现这个问题,首先要排查环境不一致的问题,我的实验环境可以在README上查看,然后你可以调整学习率重新训练看看.由于这个模型训练时使用的batch size并不是很大,所以之后我会使用GN代替原来的BN,这样也有助于模型的快速准确收敛.你也可以再尝试新版本:)

@fayechou
Copy link
Author

@MaybeShewill-CV 我查了下我本地环境的tensorflow版本是1.12,0, 刚才是miniconda里面的版本,因为我一直在miniconda里面跑。 这个会有影响吗?
screenshot from 2018-12-12 11-51-40

@MaybeShewill-CV
Copy link
Owner

@fayechou 你可以尝试下在1.10上是不是会出现这个问题.因为不同版本的bn个optimizer都会有微小差异来影响这个训练过程.之前tensorflow 1.3版本上使用原始论文的adam optimizer就经常会遇到nan的问题经常需要手动调参然后finetune,升级tensorflow到1.10之后使用SGD代替adam之后就没有遇到过这个问题了:)

@fayechou
Copy link
Author

@MaybeShewill-CV, 好的,多谢,我试下!

@MaybeShewill-CV
Copy link
Owner

@fayechou I will leave this issue open:)

@BDMLLang
Copy link

@MaybeShewill-CV 我也不知道问题出在哪里,还在找,希望能给我指导下。我按原来的learning rate训练会出先NAN,然后减小learning rate接着可以训练,但是accuracy到0.5左右的时候还是会出现NAN(试了几次),learning rate调大调小都没用。我确认了数据集的标签制作没有问题,binary的是0,255; instance的是20,70,120,170,220,而且没有negative的数据。 谢谢!
这是中间出来的图:
image
binary:
binary_seg_img
embedding:
embedding

请问您方便提供一下,将json文件转换成.png图片的脚本吗?非常感谢

@MaybeShewill-CV
Copy link
Owner

@BDMLLang 你可以试试这个 https://blog.csdn.net/derteanoo/article/details/82501337 (Ps 我没有验证过哈) 这个json文件的组织形式你可以查看tusimple的README文件

@BDMLLang
Copy link

@BDMLLang 你可以试试这个 https://blog.csdn.net/derteanoo/article/details/82501337 (Ps 我没有验证过哈) 这个json文件的组织形式你可以查看tusimple的README文件

感谢您及时回复!

@MaybeShewill-CV
Copy link
Owner

@BDMLLang 不客气:)

@MaybeShewill-CV
Copy link
Owner

@fayechou 关于nan的问题你也可以看看 #124 这个issue 尝试一下他提供的解决方案 虽然我训练很多次都没有遇到过这个情况,但是你可以尝试一下:)

@MaybeShewill-CV MaybeShewill-CV added the help wanted Extra attention is needed label Dec 13, 2018
@fayechou
Copy link
Author

@MaybeShewill-CV 我把本地的环境也改成tensorflow1.10.0了,已经训练了快17个小时,training accuracy 第一次突破了0.7, learning rate没变,也许真是tensorflow 版本的问题,我继续观察。
screenshot from 2018-12-13 11-17-58

@MaybeShewill-CV
Copy link
Owner

@fayechou 好的,有什么问题可以及时沟通。还有你上次出问题的tensorflow版本是1.12吗:)

@fayechou
Copy link
Author

@MaybeShewill-CV 好的,多谢!
我之前都是在conda virtual environment里面跑的,tf 版本是 1.10.0。本地环境安装tf-gpu的时候没有指定版本,自动安装版本1.12.0。 我现在是把本地环境tf 改成了1.10.0, 并且在本地环境上跑,目前来看,没有出现NAN。

@MaybeShewill-CV
Copy link
Owner

@BDMLLang 我已经上传了生成tusimple训练数据的工具 你可以更新下代码 看看readme生成你需要的tusimple训练数据:)

@sc1234qwer
Copy link

@BDMLLang 我已经上传了生成tusimple训练数据的工具 你可以更新下代码 看看readme生成你需要的tusimple训练数据:)

我已经训练了快一天了,才4000多Epoch,1060,6g显卡,batch size=4,LEARNING_RATE = 0.0005,accuracy 0.5左右 这正常吗,还是我没有用上gpu?

@BDMLLang
Copy link

@BDMLLang 我已经上传了生成tusimple训练数据的工具 你可以更新下代码 看看readme生成你需要的tusimple训练数据:)

非常感谢您的帮助,我使用您提供的权重去eval模型,使用图森提供的评价准则,我在预测特征图上使用各种曲线去拟合车道线,最后menACC比论文低了10几个点。您是只用了图森去Train的模型吗?我猜测这样的结果,原因在于:1.没有h-net,2.模型往往预测的特征车道线会比label的车道线短一段,或者遮挡时效果较差,不知道使用culane数据或者更大的数据集去train您的模型,会不会得到提升,我准备试一下。

@MaybeShewill-CV
Copy link
Owner

@sc1234qwer cpu跑的太慢了 多等等吧:)

@sc1234qwer
Copy link

@sc1234qwer cpu跑的太慢了 多等等吧:)

我看你用的是GTX-1070,你提供的模型大概训练了多久?

@MaybeShewill-CV
Copy link
Owner

@BDMLLang 只使用了tusimple的数据集进行训练 这个mean acc的计算受很多因素的影响,比如车道线的宽度,这个宽度受标注的影响,标注的时候这个宽度又是人工设定的。所以我更多关注的是模型能不能完成描述车道线的问题 比如你说的很远的地方车道线会缺失一段其实在实际使用的时候并没有影响 因为相机是连续拍摄的其实只需要在相机附近的车道线可以准确描述就可以了。至于hnet你可以看看前面的issue,这个模型还是不如使用相机姿态生成ipm靠谱(我的个人意见):)

@MaybeShewill-CV
Copy link
Owner

@sc1234qwer 这个具体时间记不太清楚了

@BDMLLang
Copy link

@BDMLLang 只使用了tusimple的数据集进行训练 这个mean acc的计算受很多因素的影响,比如车道线的宽度,这个宽度受标注的影响,标注的时候这个宽度又是人工设定的。所以我更多关注的是模型能不能完成描述车道线的问题 比如你说的很远的地方车道线会缺失一段其实在实际使用的时候并没有影响 因为相机是连续拍摄的其实只需要在相机附近的车道线可以准确描述就可以了。至于hnet你可以看看前面的issue,这个模型还是不如使用相机姿态生成ipm靠谱(我的个人意见):)

谢谢您的建议,您说的‘’这个模型还是不如使用相机姿态生成ipm靠谱(我的个人意见):)‘’是其他的车道线检测方法吗?有没有什么好的paper可以分享一下吗?真的很感激哦。

@MaybeShewill-CV
Copy link
Owner

@1215363009 自己仔细看下readme吧:)

@MaybeShewill-CV MaybeShewill-CV mentioned this issue Jul 17, 2019
Closed
@LionelLeee
Copy link

@MaybeShewill-CV
ValueError: The passed save_path is not a valid checkpoint: ..\model\tusimple_lanenet_vgg\tusimple_lanenet_vgg.ckpt 请问checkpoint里面需要改成什么吗?

@MaybeShewill-CV
Copy link
Owner

@LionelLeee 不需要

@TGLTommy
Copy link

@BDMLLang
您好,大佬,请问你在跑通LaneNet后,如何计算的test数据集上的accuracy, FP, FN,非常感谢 ~ 如果由源码,可否分享一下哈?我的微信号:tommytang930

@DonaldRR
Copy link

DonaldRR commented Jan 7, 2020

你的做法和我的一樣,我也是把學習率降低之後就可以訓練了,但是當epoch跑到一定次數之後,仍會有nan的情形出現.
而且accuracy只有在0.5~0.6之間,請問你有這樣的情形嗎?
謝謝!!

你好,我遇到的问题和你的一模一样,请问你解决了吗?是怎么解决的啊?

Originally posted by @fayechou in https://github.com/MaybeShewill-CV/lanenet-lane-detection/issue_comments#issuecomment-445708580

我在自己的数据集上训练也出现了一样的问题,然后解决了。
**原因:**模型里有random crop,当crop完之后的图片没有车道线的时候,instance segmentation loss会算成nan,这是与loss的计算方法有关。
**解决办法:**可以认为,当图里没有车道线的时候,不进行back prop,设定loss=0。
(例:tf.cond(tf.is_nan(instance_segmentation), lambda : tf.constant(0.), instance_segmentation)

@ghost
Copy link

ghost commented Jan 13, 2020

@DonaldRR 我认为你发现了根本原因。可否详细解释一下你那行程序,放在那里?

@DonaldRR
Copy link

@DonaldRR 我认为你发现了根本原因。可否详细解释一下你那行程序,放在那里?

lanenetmode/lanenet_back_end.py的compute_loss方法里在返回loss之前处理一下loss就行

@ghost
Copy link

ghost commented Jan 14, 2020

@DonaldRR 还是不行。我的情况是instance_segmentation_loss=inf。当把instance_segmentation_loss从inf设成0后,total_loss仍然是nan。要不要把l2_reg_loss也设成0?

@ghost
Copy link

ghost commented Jan 14, 2020

我的训练数据在这里,http://artlystyles.com/tmp/two_lane_tfrecords.zip. 但是训练的时候总是有

cost is: nan
instance cost is: inf

然后训练推出。如何解决?

@DonaldRR
Copy link

@deeprun NaN跟inf应该是两种情况吧?inf可能是因为除数为0的情况。你最好使用tf的print方法,看看计算loss的每一步的结果,是哪个问题出错。

@phoenares
Copy link

这个可能是num_instances=1的时候造成的,可以把discriminative_loss.py里的 "l_dist = tf.reduce_mean(mu_norm)"这一行换成" l_dist = tf.cond(num_instances<=1, lambda:tf.constant(0, dtype=tf.float32), lambda:tf.reduce_mean(mu_norm))"试试。
参考:hq-jiang/instance-segmentation-with-discriminative-loss-tensorflow#15
https://github.com/Wizaron/instance-segmentation-pytorch/blob/master/code/lib/losses/discriminative.py

@deeeprun
Copy link

@phoenares 我試了,還是沒有解決問題

@longtong-system
Copy link

@MaybeShewill-CV 我把本地的环境也改成tensorflow1.10.0了,已经训练了快17个小时,training accuracy 第一次突破了0.7, learning rate没变,也许真是tensorflow 版本的问题,我继续观察。
![screenshot from 2018-12-13 11-17-58](https://user-images.githubusercontent.com/23359299/49913608-1a6c8000-fec9-11e8-996d-b214c5194f93.png
您好,您可以给我一份您当时下载的代码吗,现在的代码由于被更新过,删除了其中准确度的调用部分,因此我想参考一下当时的代码,谢谢您

@Tomgit1122
Copy link

@deeprun could you share your trained model plz

@hwang12345
Copy link

运行测试脚本有问题,python tools/test_lanenet.py --weights_path model/checkpoint --image_path data/tusimple_test_image/0.jpg
Traceback (most recent call last):
File "tools/test_lanenet.py", line 20, in
from lanenet_model import lanenet
ModuleNotFoundError: No module named 'lanenet_model'
一直报错找不到‘lanenet_model’,求指教,谢谢

@MaybeShewill-CV
Copy link
Owner

@hwang12345 修改你的PYTHONPATH环境变量 把代码根目录添加进去

@12lvxiaofeng12
Copy link

请问用自己的数据集进行训练出现nan,还是没有办法解决吗

@MaybeShewill-CV MaybeShewill-CV pinned this issue Jun 16, 2022
This was referenced Feb 23, 2023
@trra1988
Copy link

trra1988 commented Apr 4, 2023

您好,我使用的是CULane数据集,我的标签改为了[20,70,120,170,210], 训练一直是nan, tensorflow版本使用的是1.15.0,我想问一下binary和instance的数据是[1280, 720, 3]吗?还是[1280, 720]?想跟您确认一下,谢谢

@trra1988
Copy link

trra1988 commented Apr 4, 2023

我找到问题了,是我的"tusimple_lanenet_single_gpu_trainner.py"中的self._train_dataset没有东西,导致训练的时候没有进入(for _ in traindataset_pbar:)这个循环,我是直接用的make_tusimple_tfrecords.py生成的.tfrecord文件,可以这样直接使用么?有什么需要注意的么?谢谢

@MaybeShewill-CV
Copy link
Owner

@trra1988 生成过程没有异常的话就可以直接使用

@trra1988
Copy link

trra1988 commented Apr 5, 2023

@MaybeShewill-CV 非常感谢您的回复,生成过程没有异常的,但是到在这步train()中的 for _ in traindataset_pbar:这步直接就跳出到 train_epoch_losses = np.mean(train_epoch_losses)了,中间从if self._enable_miou and epoch % self._record_miou_epoch == 0:到train_epoch_losses = np.mean(train_epoch_losses)直接跳过了,可以加一下您的微信吗?我的微信号是wywy2008d, 我的邮箱是[email protected],非常感谢

@trra1988
Copy link

trra1988 commented Apr 6, 2023

@MaybeShewill-CV 还想问一下您,
DATASET:
DATA_DIR: '/home/lin/lanenet_lane/lanenet-lane-detection-master/data/training_data_example/'
IMAGE_TYPE: 'rgb' # choice rgb or rgba
NUM_CLASSES: 2
TEST_FILE_LIST: '/home/lin/lanenet_lane/lanenet-lane-detection-master/data/training_data_example/test.txt'
TRAIN_FILE_LIST: '/home/lin/lanenet_lane/lanenet-lane-detection-master/data/training_data_example/train.txt'
VAL_FILE_LIST: '/home/lin/lanenet_lane/lanenet-lane-detection-master/data/training_data_example/val.txt'
IGNORE_INDEX: 255
PADDING_VALUE: [127.5, 127.5, 127.5]
MEAN_VALUE: [0.5, 0.5, 0.5]
STD_VALUE: [0.5, 0.5, 0.5]
CPU_MULTI_PROCESS_NUMS: 8
config中这部分路径用绝对路径没问题吧?还有您用的tensorflow版本是1.15.0吗?

@MaybeShewill-CV
Copy link
Owner

@trra1988 1.绝对路径没问题 2. tf1.15没问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests