voxelmorph / voxelmorph

Unsupervised Learning for Image Registration
Apache License 2.0
2.27k stars 580 forks source link

LNCC Training: Unable to learn (very unstable) #527

Open JannikLa opened 1 year ago

JannikLa commented 1 year ago

Task (what are you trying to do/register?)

I am registering two T1 3D images from the OASIS data set (L2Reg challenge). The scans are preprocessed (skull-stripped, aligned, normalized). I am taking a fixed image from one subject and randomly select another subject as moving image (examples below).

I invested a lot if time in figuring out what is wrong. Maybe someone can give hints on what I could try or what might be wrong in my setup. Any help is appreciated!

What have you tried

I am using the pytroch implemention of voxelmorph. A dataloader loads the inputs to the network.

Details of experiments

Image of training loss with maxed out smoothing in visualization ("baseline" setup from above)

image

Image of training loss (LNCC) when overfitting on a pair of images with large initialization weights (Normal(0, 10))

image

Image of input data

image

image

adalca commented 1 year ago

I haven't worked with the pytorch version that much especially recently, but just so I know -- when you say the MSE version worked, what were the hyperparameters that you used?

What do you mean by this line -- what does 'overfit' mean here?

If I set the initialization of the flow layer a lot higher (to 1 or 10) the network is able to overfit