-
Notifications
You must be signed in to change notification settings - Fork 886
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
Comments
@fayechou 你可以再贴一些细节在这里:) |
@MaybeShewill-CV 我也不知道问题出在哪里,还在找,希望能给我指导下。我按原来的learning rate训练会出先NAN,然后减小learning rate接着可以训练,但是accuracy到0.5左右的时候还是会出现NAN(试了几次),learning rate调大调小都没用。我确认了数据集的标签制作没有问题,binary的是0,255; instance的是20,70,120,170,220,而且没有negative的数据。 谢谢! |
@MaybeShewill-CV 按出现NAN时候的Weight, test一组数据出来的效果也给你看看: |
@fayechou 你使用的tensorflow版本是什么? |
zh@zh-H81M-DS2: |
@fayechou 使用的是tusimple的数据集? |
@MaybeShewill-CV 是的, train:val = 4:1 |
@fayechou 这个问题在我本地得不到复现,我使用这个参数训练过很多次模型都没有出现nan的情况.如果在你的环境中每次都必复现这个问题,首先要排查环境不一致的问题,我的实验环境可以在README上查看,然后你可以调整学习率重新训练看看.由于这个模型训练时使用的batch size并不是很大,所以之后我会使用GN代替原来的BN,这样也有助于模型的快速准确收敛.你也可以再尝试新版本:) |
@MaybeShewill-CV 我查了下我本地环境的tensorflow版本是1.12,0, 刚才是miniconda里面的版本,因为我一直在miniconda里面跑。 这个会有影响吗? |
@fayechou 你可以尝试下在1.10上是不是会出现这个问题.因为不同版本的bn个optimizer都会有微小差异来影响这个训练过程.之前tensorflow 1.3版本上使用原始论文的adam optimizer就经常会遇到nan的问题经常需要手动调参然后finetune,升级tensorflow到1.10之后使用SGD代替adam之后就没有遇到过这个问题了:) |
@MaybeShewill-CV, 好的,多谢,我试下! |
@fayechou I will leave this issue open:) |
请问您方便提供一下,将json文件转换成.png图片的脚本吗?非常感谢 |
@BDMLLang 你可以试试这个 https://blog.csdn.net/derteanoo/article/details/82501337 (Ps 我没有验证过哈) 这个json文件的组织形式你可以查看tusimple的README文件 |
感谢您及时回复! |
@BDMLLang 不客气:) |
@MaybeShewill-CV 我把本地的环境也改成tensorflow1.10.0了,已经训练了快17个小时,training accuracy 第一次突破了0.7, learning rate没变,也许真是tensorflow 版本的问题,我继续观察。 |
@fayechou 好的,有什么问题可以及时沟通。还有你上次出问题的tensorflow版本是1.12吗:) |
@MaybeShewill-CV 好的,多谢! |
@BDMLLang 我已经上传了生成tusimple训练数据的工具 你可以更新下代码 看看readme生成你需要的tusimple训练数据:) |
我已经训练了快一天了,才4000多Epoch,1060,6g显卡,batch size=4,LEARNING_RATE = 0.0005,accuracy 0.5左右 这正常吗,还是我没有用上gpu? |
非常感谢您的帮助,我使用您提供的权重去eval模型,使用图森提供的评价准则,我在预测特征图上使用各种曲线去拟合车道线,最后menACC比论文低了10几个点。您是只用了图森去Train的模型吗?我猜测这样的结果,原因在于:1.没有h-net,2.模型往往预测的特征车道线会比label的车道线短一段,或者遮挡时效果较差,不知道使用culane数据或者更大的数据集去train您的模型,会不会得到提升,我准备试一下。 |
@sc1234qwer cpu跑的太慢了 多等等吧:) |
我看你用的是GTX-1070,你提供的模型大概训练了多久? |
@BDMLLang 只使用了tusimple的数据集进行训练 这个mean acc的计算受很多因素的影响,比如车道线的宽度,这个宽度受标注的影响,标注的时候这个宽度又是人工设定的。所以我更多关注的是模型能不能完成描述车道线的问题 比如你说的很远的地方车道线会缺失一段其实在实际使用的时候并没有影响 因为相机是连续拍摄的其实只需要在相机附近的车道线可以准确描述就可以了。至于hnet你可以看看前面的issue,这个模型还是不如使用相机姿态生成ipm靠谱(我的个人意见):) |
@sc1234qwer 这个具体时间记不太清楚了 |
谢谢您的建议,您说的‘’这个模型还是不如使用相机姿态生成ipm靠谱(我的个人意见):)‘’是其他的车道线检测方法吗?有没有什么好的paper可以分享一下吗?真的很感激哦。 |
@1215363009 自己仔细看下readme吧:) |
@MaybeShewill-CV |
@LionelLeee 不需要 |
@BDMLLang |
我在自己的数据集上训练也出现了一样的问题,然后解决了。 |
@DonaldRR 我认为你发现了根本原因。可否详细解释一下你那行程序,放在那里? |
lanenetmode/lanenet_back_end.py的compute_loss方法里在返回loss之前处理一下loss就行 |
@DonaldRR 还是不行。我的情况是instance_segmentation_loss=inf。当把instance_segmentation_loss从inf设成0后,total_loss仍然是nan。要不要把l2_reg_loss也设成0? |
我的训练数据在这里,http://artlystyles.com/tmp/two_lane_tfrecords.zip. 但是训练的时候总是有 cost is: nan 然后训练推出。如何解决? |
@deeprun NaN跟inf应该是两种情况吧?inf可能是因为除数为0的情况。你最好使用tf的print方法,看看计算loss的每一步的结果,是哪个问题出错。 |
这个可能是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))"试试。 |
@phoenares 我試了,還是沒有解決問題 |
|
@deeprun could you share your trained model plz |
运行测试脚本有问题,python tools/test_lanenet.py --weights_path model/checkpoint --image_path data/tusimple_test_image/0.jpg |
@hwang12345 修改你的PYTHONPATH环境变量 把代码根目录添加进去 |
请问用自己的数据集进行训练出现nan,还是没有办法解决吗 |
您好,我使用的是CULane数据集,我的标签改为了[20,70,120,170,210], 训练一直是nan, tensorflow版本使用的是1.15.0,我想问一下binary和instance的数据是[1280, 720, 3]吗?还是[1280, 720]?想跟您确认一下,谢谢 |
我找到问题了,是我的"tusimple_lanenet_single_gpu_trainner.py"中的self._train_dataset没有东西,导致训练的时候没有进入(for _ in traindataset_pbar:)这个循环,我是直接用的make_tusimple_tfrecords.py生成的.tfrecord文件,可以这样直接使用么?有什么需要注意的么?谢谢 |
@trra1988 生成过程没有异常的话就可以直接使用 |
@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],非常感谢 |
@MaybeShewill-CV 还想问一下您, |
@trra1988 1.绝对路径没问题 2. tf1.15没问题 |
你好,我遇到的问题和你的一模一样,请问你解决了吗?是怎么解决的啊?
Originally posted by @fayechou in https://github.com/MaybeShewill-CV/lanenet-lane-detection/issue_comments#issuecomment-445708580
The text was updated successfully, but these errors were encountered: