chenjun2hao / DDRNet.pytorch

This is the unofficial code of Deep Dual-resolution Networks for Real-time and Accurate Semantic Segmentation of Road Scenes. which achieve state-of-the-art trade-off between accuracy and speed on cityscapes and camvid, without using inference acceleration and extra data
Other
157 stars 42 forks source link

MIou差1 #5

Closed GaoFengs closed 3 years ago

GaoFengs commented 3 years ago

非常感谢大佬的代码复现,我用两张2080ti训练之后,MIou为76.64。请问有哪些细节需要注意吗,如何才能达到论文里的精度呢?期待大佬的回复

SHMCU commented 3 years ago

@GaoFengs, 我直接运行了一下训练代码,也得到76.45左右。 另外,你有没有遇到训练的时候,validation报的miou是60多,但是在validation set上做test,同样的模型文件却报76.xx.

SHMCU commented 3 years ago

@GaoFengs 你试过用小学习率finetune一下没,我试过HRnetOCR,那样的话miou会提高一点,不知道这个网络是不是也有这样的特性

GaoFengs commented 3 years ago

@GaoFengs, 我直接运行了一下训练代码,也得到76.45左右。 另外,你有没有遇到训练的时候,validation报的miou是60多,但是在validation set上做test,同样的模型文件却报76.xx.

两张卡,在训练时学习率设置的不一样,其中一张卡的精度可以达到76.XX,看你打印出来的信息是这样子,所以我这么理解

SHMCU commented 3 years ago

@GaoFengs, 我直接运行了一下训练代码,也得到76.45左右。 另外,你有没有遇到训练的时候,validation报的miou是60多,但是在validation set上做test,同样的模型文件却报76.xx.

两张卡,在训练时学习率设置的不一样,其中一张卡的精度可以达到76.XX,看你打印出来的信息是这样子,所以我这么理解

不是两张卡的问题,两个miou不同是因为model输出的是两个不同scale的结果,这个低的miou是来自那个低scale的pred。保存best model的部分是按照这个低scale的pred来选择的,这一点是个小小的bug,应该按照高scale那个来选择best model。

GaoFengs commented 3 years ago

@GaoFengs, 我直接运行了一下训练代码,也得到76.45左右。 另外,你有没有遇到训练的时候,validation报的miou是60多,但是在validation set上做test,同样的模型文件却报76.xx.

两张卡,在训练时学习率设置的不一样,其中一张卡的精度可以达到76.XX,看你打印出来的信息是这样子,所以我这么理解

不是两张卡的问题,两个miou不同是因为model输出的是两个不同scale的结果,这个低的miou是来自那个低scale的pred。保存best model的部分是按照这个低scale的pred来选择的,这一点是个小小的bug,应该按照高scale那个来选择best model。

感谢回复,不过我不明白怎么会有两个不同scale的输出呢?输出应该是同一个scale吧,因为输入的值只有一个。你最近找到提升精度的方法了吗?

GaoFengs commented 3 years ago

@GaoFengs, 我直接运行了一下训练代码,也得到76.45左右。 另外,你有没有遇到训练的时候,validation报的miou是60多,但是在validation set上做test,同样的模型文件却报76.xx.

两张卡,在训练时学习率设置的不一样,其中一张卡的精度可以达到76.XX,看你打印出来的信息是这样子,所以我这么理解

不是两张卡的问题,两个miou不同是因为model输出的是两个不同scale的结果,这个低的miou是来自那个低scale的pred。保存best model的部分是按照这个低scale的pred来选择的,这一点是个小小的bug,应该按照高scale那个来选择best model。

谢谢,我找到了你说的问题。

SHMCU commented 3 years ago

我也还没能复现作者报告的精度。但是我发现一点和原作不一样的地方是,这个代码没有用syncbatchnorm,论文和原作github里面的代码都是使用syncbatchnorm的。我想看看如何能把syncbatchnorm恢复起来。有可能简单地把batchnorm改成syncbatchnorm会运行不了,或者会变差(因为某种pytorch内部的设置问题)

SHMCU commented 3 years ago

你试过align_corner=True没有?能提高一点吗

GaoFengs commented 3 years ago

我也还没能复现作者报告的精度。但是我发现一点和原作不一样的地方是,这个代码没有用syncbatchnorm,论文和原作github里面的代码都是使用syncbatchnorm的。我想看看如何能把syncbatchnorm恢复起来。有可能简单地把batchnorm改成syncbatchnorm会运行不了,或者会变差(因为某种pytorch内部的设置问题)

是吗?我简单的把模型里的改了一下,发现基本没什么影响

GaoFengs commented 3 years ago

你试过align_corner=True没有?能提高一点吗

试过,效果变差了,我还查过原理,理论上说是True效果会好点,结果居然变差了。把输出的结果调换位置就能解决你说的那个小BUG

GaoFengs commented 3 years ago

你试过align_corner=True没有?能提高一点吗

兄弟,我机缘巧合之下训练出了论文中提到的的Miou,但是我觉得挺离谱的,也有可能是碰巧,有没有兴趣一起谈论下 1161042258@qq.com

InvictusRichard commented 3 years ago

你们FPS测试的是多少啊?

SHMCU commented 3 years ago

好的, 回头加你qq On Wednesday, May 19, 2021, 02:31:58 AM PDT, GaoFengs @.***> wrote:

你试过align_corner=True没有?能提高一点吗

兄弟,我机缘巧合之下训练出了论文中提到的的Miou,但是我觉得挺离谱的,也有可能是碰巧,有没有兴趣一起谈论下 @.***

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.