xuebinqin / U-2-Net

The code for our newly accepted paper in Pattern Recognition 2020: "U^2-Net: Going Deeper with Nested U-Structure for Salient Object Detection."
Apache License 2.0
8.67k stars 1.5k forks source link

使用过程中遇到的问题和想法 #241

Open zk2ly opened 3 years ago

zk2ly commented 3 years ago

同学你好!

我花了两天时间阅读你的论文和代码,收获巨大。我认为不论是模型还是论文,质量都非常的高。模型的构思太巧妙了,论文的逻辑也非常清晰,而且实验做的很扎实。非常感谢你的分享,同时也向你学习!

我在使用你提供的u2net模型权重进行预测时,出现了下面这种情况

16 16_mask

主要的问题有两个: 1.底座不能完全分割出来 2.边缘有一些模糊的情况

我想把u2net应用在玩偶的分割上,但是我没有自己的数据集,所以我准备按以下几个步骤进行改进,想听下你的意见: 1.我想把你论文中提到的DUST-OMRON,DUTS-TE,HKU-IS和ECSSD结合DUTS-TR一起作为训练集微调u2net.pth中的权重,你认为这样可以一试吗,还是有更好的方法。 2.如果上一步不能取得好的效果,我准备改变Sup1-Sup6的混合方式。你在论文中提到 "(PPM) But fusion of different scale features by direct upsampling and concatenation (or addition) may lead to degradation of high resolution features "。因此我想Sup6直接上采样到Sup1的大小也会有同样的问题。我准备把Sup6上采样到Sup5的大小,然后拼接并进行卷积操作,Sup4到Sup1也依次做同样的操作,最终得到Sup_fuse。这样最终只要计算Sup_fuse的损失,我不知道是否需要更换BCE损失函数,不知道你有没有什么建议。 3.如果上一步也不能取得好的效果,我准备增加RSU的个数和RSU中L的深度,来获得一个更大的模型,同时增加输入分辨率,因为我们的图片是3456x5184的,我想这样至少可以缓解边缘模糊的问题。然后结合前面两个步骤从头训练模型,也许可以分割出底座。

因为我刚接触分割领域不久,对于怎样解决前面提出的两个问题,我的方法可能有很明显的错误,希望你有时间可以给出一点建议,这对我的学习和研究会有非常大的帮助。

再次感谢你做出的贡献!

xuebinqin commented 3 years ago

感谢你的问题。

首先,底座能完全分割可能有两个原因: (1)数据问题: 训练数据中DUTS-TR并没有包含足够的玩偶数据,同时DUTS-TR包含很多人物的图像,这些图像的人体部分与你的玩偶人体部分比较相似,所以在这里玩偶的人体能够被分割出来。然而,那些数据中并不包含类似底座的目标(因为DUTS里面的人是真人的照片),所以这就可能导致底座分割的失败。这里需要强调的是DUTS-TR数据集虽然号称是SOD数据集,但是本质上它还是基于人类先验知识的一个数据集,数据的采集和标注并没有基于可用数学表达的显著性度量,也就是说多数神经网络中并没有显性的定义和表达什么是“显著性”,大家都只是在拟合这个数据集,看谁已较小的代价拟合的更好。 (2)模型问题:这个分析起来就比较复杂,没有人能够给出量化的理论证明和分析。只能说目前模型在分割底座这种不常见(指在DUTS-TR里面不常见)目标是还没有很好的训练。

解决办法有如下几种: (1)尝试Test Time augmentation,看看能不能把底座也分割出来,这种方法优点是不需要重新训; (2)按照你的思路,多数据联合重新训练; (3)你问题中提到的修改结构的思路可以尝试,此外,如果你想得到比较清晰的边缘,可以考虑利用BASNet的BSI损失函数finetune或重新训练; (4)就是基于U2Net+U2Netp(可以是其他任意residual refine结构,例如resnet 的residual block)构建predict-refine 结构,在第一个U2Net上使用320线20,第二个U2Netp结构上使用大分辨率的输入; (5) 将U2Net的结果输入到cascadPSP模型,进行精化; 以及其他方法。

希望以上建议对你有帮助,祝好运!

On Thu, Aug 5, 2021 at 12:23 PM zk2ly @.***> wrote:

同学你好!

我花了两天时间阅读你的论文和代码,收获巨大。我认为不论是模型还是论文,质量都非常的高。模型的构思太巧妙了,论文的逻辑也非常清晰,而且实验做的很扎实。非常感谢你的分享,同时也向你学习!

我在使用你提供的u2net模型权重进行预测时,出现了下面这种情况

[image: 16] https://user-images.githubusercontent.com/56818387/128313536-d1299e36-6407-4dfb-9ae0-698db8c223dc.jpg [image: 16_mask] https://user-images.githubusercontent.com/56818387/128313636-b2e9deba-ea6e-4b8f-aeac-5dba20618cbb.jpg

主要的问题有两个: 1.底座不能完全分割出来 2.边缘有一些模糊的情况

我想把u2net应用在玩偶的分割上,但是我没有自己的数据集,所以我准备按以下几个步骤进行改进,想听下你的意见:

1.我想把你论文中提到的DUST-OMRON,DUTS-TE,HKU-IS和ECSSD结合DUTS-TR一起作为训练集微调u2net.pth中的权重,你认为这样可以一试吗,还是有更好的方法。 2.如果上一步不能取得好的效果,我准备改变Sup1-Sup6的混合方式。你在论文中提到 "(PPM) But fusion of different scale features by direct upsampling and concatenation (or addition) may lead to degradation of high resolution features "。因此我想Sup6直接上采样到Sup1的大小也会有同样的问题。我准备把Sup6上采样到Sup5的大小,然后拼接并进行卷积操作,Sup4到Sup1也依次做同样的操作,最终得到Sup_fuse。这样最终只要计算Sup_fuse的损失,我不知道是否需要更换BCE损失函数,不知道你有没有什么建议。

3.如果上一步也不能取得好的效果,我准备增加RSU的个数和RSU中L的深度,来获得一个更大的模型,同时增加输入分辨率,因为我们的图片是3456x5184的,我想这样至少可以缓解边缘模糊的问题。然后结合前面两个步骤从头训练模型,也许可以分割出底座。

因为我刚接触分割领域不久,对于怎样解决前面提出的两个问题,我的方法可能有很明显的错误,希望你有时间可以给出一点建议,这对我的学习和研究会有非常大的帮助。

再次感谢你做出的贡献!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/xuebinqin/U-2-Net/issues/241, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADSGOROBRHBN6ALC7436ZIDT3JC7HANCNFSM5BTKBHKA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

-- Xuebin Qin PhD Department of Computing Science University of Alberta, Edmonton, AB, Canada Homepage:https://webdocs.cs.ualberta.ca/~xuebin/

zk2ly commented 3 years ago

感谢你的问题。 首先,底座能完全分割可能有两个原因: (1)数据问题: 训练数据中DUTS-TR并没有包含足够的玩偶数据,同时DUTS-TR包含很多人物的图像,这些图像的人体部分与你的玩偶人体部分比较相似,所以在这里玩偶的人体能够被分割出来。然而,那些数据中并不包含类似底座的目标(因为DUTS里面的人是真人的照片),所以这就可能导致底座分割的失败。这里需要强调的是DUTS-TR数据集虽然号称是SOD数据集,但是本质上它还是基于人类先验知识的一个数据集,数据的采集和标注并没有基于可用数学表达的显著性度量,也就是说多数神经网络中并没有显性的定义和表达什么是“显著性”,大家都只是在拟合这个数据集,看谁已较小的代价拟合的更好。 (2)模型问题:这个分析起来就比较复杂,没有人能够给出量化的理论证明和分析。只能说目前模型在分割底座这种不常见(指在DUTS-TR里面不常见)目标是还没有很好的训练。 解决办法有如下几种: (1)尝试Test Time augmentation,看看能不能把底座也分割出来,这种方法优点是不需要重新训; (2)按照你的思路,多数据联合重新训练; (3)你问题中提到的修改结构的思路可以尝试,此外,如果你想得到比较清晰的边缘,可以考虑利用BASNet的BSI损失函数finetune或重新训练; (4)就是基于U2Net+U2Netp(可以是其他任意residual refine结构,例如resnet 的residual block)构建predict-refine 结构,在第一个U2Net上使用320线20,第二个U2Netp结构上使用大分辨率的输入; (5) 将U2Net的结果输入到cascadPSP模型,进行精化; 以及其他方法。 希望以上建议对你有帮助,祝好运! On Thu, Aug 5, 2021 at 12:23 PM zk2ly @.***> wrote: 同学你好! 我花了两天时间阅读你的论文和代码,收获巨大。我认为不论是模型还是论文,质量都非常的高。模型的构思太巧妙了,论文的逻辑也非常清晰,而且实验做的很扎实。非常感谢你的分享,同时也向你学习! 我在使用你提供的u2net模型权重进行预测时,出现了下面这种情况 [image: 16] https://user-images.githubusercontent.com/56818387/128313536-d1299e36-6407-4dfb-9ae0-698db8c223dc.jpg [image: 16_mask] https://user-images.githubusercontent.com/56818387/128313636-b2e9deba-ea6e-4b8f-aeac-5dba20618cbb.jpg 主要的问题有两个: 1.底座不能完全分割出来 2.边缘有一些模糊的情况 我想把u2net应用在玩偶的分割上,但是我没有自己的数据集,所以我准备按以下几个步骤进行改进,想听下你的意见: 1.我想把你论文中提到的DUST-OMRON,DUTS-TE,HKU-IS和ECSSD结合DUTS-TR一起作为训练集微调u2net.pth中的权重,你认为这样可以一试吗,还是有更好的方法。 2.如果上一步不能取得好的效果,我准备改变Sup1-Sup6的混合方式。你在论文中提到 "(PPM) But fusion of different scale features by direct upsampling and concatenation (or addition) may lead to degradation of high resolution features "。因此我想Sup6直接上采样到Sup1的大小也会有同样的问题。我准备把Sup6上采样到Sup5的大小,然后拼接并进行卷积操作,Sup4到Sup1也依次做同样的操作,最终得到Sup_fuse。这样最终只要计算Sup_fuse的损失,我不知道是否需要更换BCE损失函数,不知道你有没有什么建议。 3.如果上一步也不能取得好的效果,我准备增加RSU的个数和RSU中L的深度,来获得一个更大的模型,同时增加输入分辨率,因为我们的图片是3456x5184的,我想这样至少可以缓解边缘模糊的问题。然后结合前面两个步骤从头训练模型,也许可以分割出底座。 因为我刚接触分割领域不久,对于怎样解决前面提出的两个问题,我的方法可能有很明显的错误,希望你有时间可以给出一点建议,这对我的学习和研究会有非常大的帮助。 再次感谢你做出的贡献! — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#241>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADSGOROBRHBN6ALC7436ZIDT3JC7HANCNFSM5BTKBHKA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email . -- Xuebin Qin PhD Department of Computing Science University of Alberta, Edmonton, AB, Canada Homepage:https://webdocs.cs.ualberta.ca/~xuebin/

非常感谢你的回复和建议!

你的分析很深刻,让我从一个新的角度思考神经网络和数据的关系,这对我来说很新奇也很有帮助。

你提出的几个解决方法也是非常全面的,我觉得它们可以解决u2net在应用过程中遇到的大部分问题,这是一个非常棒的总结。

接下来我会尝试使用这些方法解决我遇到的问题。

再次感谢你所作的贡献,祝你在科研上取得更大的成果!