DeepMed-Lab-ECNU / BCP

Bidirectional Copy-Paste for Semi-Supervised Medical Image Segmentation (CVPR 2023)
MIT License
145 stars 13 forks source link

训练的数据量 #18

Closed Hugo-cell111 closed 11 months ago

Hugo-cell111 commented 11 months ago

您好!我看到论文里的框架图,是把两张有标注图像和无标注图像进行混合,得到两张混合图像,然后进行训练。这样的话训练的数据量是不是原始数据集的一半了?想问一下我的理解是正确的吗?

byhwhite commented 11 months ago

你好,这种理解可能不太完全。我们只是将dataloader送进来的一半的数据进行训练,但是训练的总数据量其实要比原始数据集要多。考虑最简单的情况:假设现有N1张标记数据和N2张未标记数据,原始数据集数据量为(N1+N2),我们不做random位置的结合,只把一张图像center copy进另一张图像的话,就有(2N1N2)的数据量。

Hugo-cell111 commented 11 months ago

所以你对“训练的总数据量”的定义,包括了教师模型前向传播所使用的图像吗?那也还是N1+N2数据量诶,不应该是2*(N1+N2)

byhwhite commented 11 months ago

我们先明确一下,你认为 amask + b(1-mask) 与 a(1-mask)+bmask 是一个数据吗?

Hugo-cell111 commented 11 months ago

我认为可以算同一个数量级的数据。另外我看论文的Figure3,labeled images里的x_i^l除去矩形框的区域,x_j^l矩形框区域,这两个区域会参与训练过程吗?

byhwhite commented 11 months ago

1.如果只看单次iteration中,前向数据量和dataloader送进来的数据量,那确实是减少了一半;但是放大到整个训练过程,训练的数据量也确实是要比N1+N2要多的多。 2.这两个区域在这次iteration中不参与训练。

Hugo-cell111 commented 11 months ago

嗯嗯明白了,那只剩下一个问题,就是为什么放大到整个训练过程,训练的数据量会比N1+N2多得多呢?另外您在论文提到实验是在一张NVIDIA 3090 GPU上训练,请问显存够大吗(因为您的batch size是8,而且分辨率也很大),一张3090跑整组实验用了多长时间?

byhwhite commented 11 months ago

1.一张图像与另一张图像,谁在中间谁在外面可以组成两张不同的图像。对于N1张标记图像在外面,N2张图像在里面的情况有N1N2种组合,反过来又有N1N2种组合,就是2N1N2.如果再算上粘贴位置的随机性,数据量就更多了。但是要注意的是,这只是理论上限,并不是说这是一个epoch。每个epoch因为dataloader有shuffle的设置,结合而成的数据都会不一样。 2.显卡的显存是24G,具体占用多少记不清了,跑一整组实验大概几个小时吧,用不到半天。

Hugo-cell111 commented 11 months ago

明白了,感谢!