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

loss变成NaN #48

Open
SunnyXudongShi opened this issue Aug 25, 2021 · 13 comments
Open

loss变成NaN #48

SunnyXudongShi opened this issue Aug 25, 2021 · 13 comments

Comments

@SunnyXudongShi
Copy link

你好,我是一名深度学习爱好者,我对你的工作特别感兴趣,你的工作特别棒让我羡慕不已。但是,我在训练一个数据集的时候出现了问题,loss变成Nan,训练了数次都是如此。首先我检查了我的数据集标注,没有问题,因为用另一个模型deeplabv3+是可以训练的。其次,我用您的模型训练其他数据没有问题。我没有找到该问题的原因,请您指点。

@MichaelFan01
Copy link
Owner

你好,我是一名深度学习爱好者,我对你的工作特别感兴趣,你的工作特别棒让我羡慕不已。但是,我在训练一个数据集的时候出现了问题,loss变成Nan,训练了数次都是如此。首先我检查了我的数据集标注,没有问题,因为用另一个模型deeplabv3+是可以训练的。其次,我用您的模型训练其他数据没有问题。我没有找到该问题的原因,请您指点。

参考这个吧 #20 我估计可能多尺度boundary在其他数据集上有点问题

@SunnyXudongShi
Copy link
Author

@MichaelFan01 你好,修改了我也改成了单尺度之后,就可以检测出来了,谢谢您的指点

@SunnyXudongShi
Copy link
Author

@MichaelFan01 大神你好,我目前又遇到一个问题,我要在512x512的图像中检测1个像素或者2个像素宽,大约15个像素长的缺陷,我尝试如下几种改变:(1)原始给的训练例子,只打开了use_boundary_8,效果不佳;(2)将use_boundary_2、4和8同时打开,效果也不加;(3)在(2)的前提下,对上述缺陷做了旋转、镜像和亮暗登增广,效果仍是不佳。所以想请教一下大神,对于小目标或者细长的目标应该如何去调整呢?

@MichaelFan01
Copy link
Owner

@MichaelFan01 大神你好,我目前又遇到一个问题,我要在512x512的图像中检测1个像素或者2个像素宽,大约15个像素长的缺陷,我尝试如下几种改变:(1)原始给的训练例子,只打开了use_boundary_8,效果不佳;(2)将use_boundary_2、4和8同时打开,效果也不加;(3)在(2)的前提下,对上述缺陷做了旋转、镜像和亮暗登增广,效果仍是不佳。所以想请教一下大神,对于小目标或者细长的目标应该如何去调整呢?

缺陷检测效果不佳跟boundary没啥关系吧,我猜测应该是前背景分布严重不均衡,然后缺陷被淹没了导致全是正例,如果符合你的情况的话,感觉你可以试试在分割loss层面给负例加权重~

@SunnyXudongShi
Copy link
Author

@MichaelFan01 大神你好,我目前又遇到一个问题,我要在512x512的图像中检测1个像素或者2个像素宽,大约15个像素长的缺陷,我尝试如下几种改变:(1)原始给的训练例子,只打开了use_boundary_8,效果不佳;(2)将use_boundary_2、4和8同时打开,效果也不加;(3)在(2)的前提下,对上述缺陷做了旋转、镜像和亮暗登增广,效果仍是不佳。所以想请教一下大神,对于小目标或者细长的目标应该如何去调整呢?

缺陷检测效果不佳跟boundary没啥关系吧,我猜测应该是前背景分布严重不均衡,然后缺陷被淹没了导致全是正例,如果符合你的情况的话,感觉你可以试试在分割loss层面给负例加权重~

我是否可以通过调节OhemCELoss中的阈值或者将OhemCELoss中的交叉熵改成focal_loss?

@MichaelFan01
Copy link
Owner

@MichaelFan01 大神你好,我目前又遇到一个问题,我要在512x512的图像中检测1个像素或者2个像素宽,大约15个像素长的缺陷,我尝试如下几种改变:(1)原始给的训练例子,只打开了use_boundary_8,效果不佳;(2)将use_boundary_2、4和8同时打开,效果也不加;(3)在(2)的前提下,对上述缺陷做了旋转、镜像和亮暗登增广,效果仍是不佳。所以想请教一下大神,对于小目标或者细长的目标应该如何去调整呢?

缺陷检测效果不佳跟boundary没啥关系吧,我猜测应该是前背景分布严重不均衡,然后缺陷被淹没了导致全是正例,如果符合你的情况的话,感觉你可以试试在分割loss层面给负例加权重~

我是否可以通过调节OhemCELoss中的阈值或者将OhemCELoss中的交叉熵改成focal_loss?

没试过,但是我估计效果不明显,不过你可以试试;我这边之前遇到遇到类似的问题是加的权重,负例权重是正例的十倍,也可以考虑用计算mIoU之类的对正负例占比不敏感的loss试试

@MichaelFan01
Copy link
Owner

@MichaelFan01 大神你好,我目前又遇到一个问题,我要在512x512的图像中检测1个像素或者2个像素宽,大约15个像素长的缺陷,我尝试如下几种改变:(1)原始给的训练例子,只打开了use_boundary_8,效果不佳;(2)将use_boundary_2、4和8同时打开,效果也不加;(3)在(2)的前提下,对上述缺陷做了旋转、镜像和亮暗登增广,效果仍是不佳。所以想请教一下大神,对于小目标或者细长的目标应该如何去调整呢?

缺陷检测效果不佳跟boundary没啥关系吧,我猜测应该是前背景分布严重不均衡,然后缺陷被淹没了导致全是正例,如果符合你的情况的话,感觉你可以试试在分割loss层面给负例加权重~

我是否可以通过调节OhemCELoss中的阈值或者将OhemCELoss中的交叉熵改成focal_loss?

没试过,但是我估计效果不明显,不过你可以试试;我这边之前遇到遇到类似的问题是加的权重,负例权重是正例的十倍,也可以考虑用计算mIoU之类的对正负例占比不敏感的loss试试

个人意见,仅供参考哈

@zzzz737
Copy link

zzzz737 commented Sep 2, 2021

@MichaelFan01 你好,修改了我也改成了单尺度之后,就可以检测出来了,谢谢您的指点

你的但尺度设置的多少,我设置但尺度这个loss还是0

@SunnyXudongShi
Copy link
Author

@MichaelFan01 你好,修改了我也改成了单尺度之后,就可以检测出来了,谢谢您的指点

你的但尺度设置的多少,我设置但尺度这个loss还是0

randomscale这个参数

@zzzz737
Copy link

zzzz737 commented Sep 3, 2021

@MichaelFan01 你好,修改了我也改成了单尺度之后,就可以检测出来了,谢谢您的指点

你的但尺度设置的多少,我设置但尺度这个loss还是0

randomscale这个参数

这个参数您设置的多少呢?我设置为0.75这部分的loss还是为0

@SunnyXudongShi
Copy link
Author

@MichaelFan01 你好,修改了我也改成了单尺度之后,就可以检测出来了,谢谢您的指点

你的但尺度设置的多少,我设置但尺度这个loss还是0

randomscale这个参数

这个参数您设置的多少呢?我设置为0.75这部分的loss还是为0

我建议,你首先做成cityscapes的样子,然后再一步步调整参数

@SunnyXudongShi
Copy link
Author

@MichaelFan01 大神你好,我目前又遇到一个问题,我要在512x512的图像中检测1个像素或者2个像素宽,大约15个像素长的缺陷,我尝试如下几种改变:(1)原始给的训练例子,只打开了use_boundary_8,效果不佳;(2)将use_boundary_2、4和8同时打开,效果也不加;(3)在(2)的前提下,对上述缺陷做了旋转、镜像和亮暗登增广,效果仍是不佳。所以想请教一下大神,对于小目标或者细长的目标应该如何去调整呢?

缺陷检测效果不佳跟boundary没啥关系吧,我猜测应该是前背景分布严重不均衡,然后缺陷被淹没了导致全是正例,如果符合你的情况的话,感觉你可以试试在分割loss层面给负例加权重~

我是否可以通过调节OhemCELoss中的阈值或者将OhemCELoss中的交叉熵改成focal_loss?

没试过,但是我估计效果不明显,不过你可以试试;我这边之前遇到遇到类似的问题是加的权重,负例权重是正例的十倍,也可以考虑用计算mIoU之类的对正负例占比不敏感的loss试试

个人意见,仅供参考哈

大神,我调整了前景权重,细长的物体检测出来了,但是过检很严重。然后我调小了前景权重这个模型对细长的检测,仍是会有漏检,我看了一下feature map,发现里面是断断续续的,您在cityscapes中对小目标或者细长的物体检测如何?

@SunnyXudongShi
Copy link
Author

@MichaelFan01 大神你好,我目前又遇到一个问题,我要在512x512的图像中检测1个像素或者2个像素宽,大约15个像素长的缺陷,我尝试如下几种改变:(1)原始给的训练例子,只打开了use_boundary_8,效果不佳;(2)将use_boundary_2、4和8同时打开,效果也不加;(3)在(2)的前提下,对上述缺陷做了旋转、镜像和亮暗登增广,效果仍是不佳。所以想请教一下大神,对于小目标或者细长的目标应该如何去调整呢?

缺陷检测效果不佳跟boundary没啥关系吧,我猜测应该是前背景分布严重不均衡,然后缺陷被淹没了导致全是正例,如果符合你的情况的话,感觉你可以试试在分割loss层面给负例加权重~

我是否可以通过调节OhemCELoss中的阈值或者将OhemCELoss中的交叉熵改成focal_loss?

没试过,但是我估计效果不明显,不过你可以试试;我这边之前遇到遇到类似的问题是加的权重,负例权重是正例的十倍,也可以考虑用计算mIoU之类的对正负例占比不敏感的loss试试

个人意见,仅供参考哈

大神,我调整了前景权重,细长的物体检测出来了,但是过检很严重。然后我调小了前景权重这个模型对细长的检测,仍是会有漏检,我看了一下feature map,发现里面是断断续续的,您在cityscapes中对小目标或者细长的物体检测如何?

因为我拿该模型,与我之前的deeplabv3+模型做对比,我发现deeplabv3+的检出率要高,但是过检会高一些,该模型对细长的物体检出率要低于deeplabv3+,但是精细程度要好一些。接下来我该从哪个方面增强模型的检出率呢?希望大神指点

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants