Haochen-Wang409 / U2PL

[CVPR'22] Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels
Apache License 2.0
426 stars 59 forks source link

dataset构建 #98

Closed qdd1234 closed 1 year ago

qdd1234 commented 1 year ago

作者您好,有个问题想请教您一下,就是在数据读取时,一个batchsize里面有标签和无标签的比例是一定的,但是我在我自己项目中为了实现的方便,我把有标签和无标签数据混在一起,也就是说一个batchsize里面有标签数据和无标签数据的比例是变化的,可能这次迭代batchsize里面全是有标签,下一次迭代一个batchsize里面一半是有标签一半是无标签,你看这样的实现行吗,因为我看我训练时候MIOU一会很高一会接近于0,我分析是不是由于我数据采样原因,谢谢

Haochen-Wang409 commented 1 year ago

针对于半监督问题,一个重要的技巧就是有标签数据和无标签数据的采样平衡。如果连续多个 batch 只有无标签数据,很容易导致 confirmation bias 的累积。我猜测可能是由于这个问题导致 mIoU 不稳定。

Haochen-Wang409 commented 1 year ago

具体的实现方式也比较简单,就是针对有标签数据和无标签数据构建不同的 dataset 与 data_loader,然后根据比例调整 sampler 即可

qdd1234 commented 1 year ago

具体的实现方式也比较简单,就是针对有标签数据和无标签数据构建不同的 dataset 与 data_loader,然后根据比例调整 sampler 即可

感谢您这么快的一个回复,那我再来修改一下代码,如果我的数据集中有标签和无标签数据比例大概是1:1,那么采样时候是不是就没有必要说一个batchsize中一定得无标签数据比有标签数据所占比例大?

Haochen-Wang409 commented 1 year ago

保证 1:1 即可。

qdd1234 commented 1 year ago

保证 1:1 即可。

好的,非常感谢

qdd1234 commented 1 year ago

作者您好,我改完代码有个报错不知道咋改, 这边提示我AssertionError: labeled data 203 unlabeled data 106, imbalance! 我怎样调整才能运行,也就是我有标签和无标签数量不一致

Haochen-Wang409 commented 1 year ago

sampler没有设置对,需要把iteration设置成一样的,请对照 这里 修改

Yan1026 commented 1 year ago

@Haochen-Wang409 您好,请问您将有标签图像和无标签图像cat起来当做模型的输入,是否也是出于采样平衡的考虑呢?还是有别的考虑?

Haochen-Wang409 commented 1 year ago

出于计算加速、和BN参数更新的考虑。 两次 forward 一般来说会比一次 forward bs*2 的 forward 慢,同时 BN 的参数由于第一次 forward,会得到更新,而第二次 forward 时参数就变了,没法反传梯度