当前位置: 首页 > >

深度网络中归一化方式结合医学图像的理解

发布时间:


在深度网络中,Batchnorm是最常用的归一化方式,但它严重依赖于设定的batch size。看上图,在训练过程中,它计算的均值方差是所有mini batch的均值方差,在测试过程中均值方差可不是测试样本的均值方差,?而是在之前训练的过程中求所有batch的均值的期望,方差的期望,然后进行测试推理,具体可见https://blog.csdn.net/sinat_30372583/article/details/79943743。但是在实际tensorflow的应用中并没有采取以上方式,而是使用另一种方式,


默认为: 当前mean = 0.1 * 当前mean + 0.9 * 上一次训练的mean


所以Batchnorm的参数其实有4个(minibach的均值方差,滑动*均均值方差)。


但在很多任务如分割,检测中,尤其是3D分割,由于输入图像太大,显存的限制导致batchsize只能设的很小,这个时候如果再用Batchnorm就失去了它固有的意义,而后面提出的LN, IN, GN都是独立于batchsize的,所以训练的时候只需要两个参数就是minibatch的均值方差,测试的时候也不需要滑动*均均值方差了。


在医学图像3D分割中,如果我们使用多中心的数据,由于数据比较少,且多个中心的数据之间本来就存在差异,那么用Batchnorm得不偿失,因为滑动*均均值方差是在训练集上计算的,而测试的数据跟训练集又不一样,所以得到的效果就是在训练集上收敛很快,但在测试集上效果很差。而我使用GN就不会这样,尽管在训练集上收敛慢一些,但在测试集上效果要好多了。


另外如果训练集和测试集的数据分类来自不同的中心,而且数量少,建议不要使用Batchnorm。


?


?



友情链接: