josedolz / LiviaNET

This repository contains the code of LiviaNET, a 3D fully convolutional neural network that was employed in our work: "3D fully convolutional networks for subcortical segmentation in MRI: A large-scale study"
MIT License
161 stars 52 forks source link

Deploy the model without ground truth #12

Closed RayJkl closed 6 years ago

RayJkl commented 6 years ago

Hi @josedolz , thanks for the nice work. I don't understand why the ground truth has to also be provided when testing (not validating) a model (in LiviaNET_Segmentation.ini). It looks like that they are used for obtaining coordinates for sampling but is that necessary (in sampling.py)? How can I use the trained model to segment an unseen image without ground truth?

josedolz commented 6 years ago

Hi @RayJkl. I allow to include the GT when testing to automatically report the metrics from the results(in this case DICE). This GT is therefore only used once the segmentation is done, it has nothing to do with sampling during testing. If you want to use a trained model in an image without corresponding GT, a straightforward solution would be to include a fake GT, with all its values to 0, for example,and ignore the metrics.

Jose

RayJkl commented 6 years ago

screenshot 2018-02-11 11 24 09 Hi @josedolz , thanks for the reply! I also keep getting this TypeError issue which prevents me from using GPU for training. Even when I solved one another one shows up. Thanks!

josedolz commented 6 years ago

THEANO_FLAGS='floatX=float32' python ./networkTraining.py ./LiviaNET_Config.ini 0

RayJkl commented 6 years ago

Yes I've also run this script but everything seemed to run on CPU since then (GPU is not used at all).

RayJkl commented 6 years ago

Hi @josedolz , another questions is that the model doesn't seem to generalize well on other similar datasets (even if I have got around 90% on the training set). Do you think that the absence of pooling layers caused such overfitting issue? (since there may be too many parameters involved)

josedolz commented 6 years ago

Hi, sorry for my late answer, I am quite busy these days.

Let's see. For the TypeError problem I experienced it when running on CPU and in some computers, but it never happened to me in GPU. I will investigate it a bit, but I think this has more to do with your local configuration of Theano.

The second question is more difficult to answer without having more details. I think that generalization problem is more a general problem rather than a specific model-related issue, particularly if testing data varies a lot from training data. Adding pooling layers will simply allow you to increase the receptive field, but there will not be more parameters involved, unless you change the conv kernels. With that you simply reduce the dimensionality of the feature maps, not the number of trainable parameters. Can you give me more details about the data used for training and testing? From our experience we see that the model generalizes well and on different applications. In the paper included in this repository we were able to segment images from 17 different hospitals with different MRIs, only training with subjects from few sites. Furthermore, we have made some modifications to this network and successfully participated in some challenges involving other segmentation problems (such as brain tissue segmentation).

Jose.

RayJkl commented 6 years ago

Hi @josedolz , thanks very much for the help! I have sent one image from my testing set and one from the training set to your email address. I very much hope to put this model into practice. Thank you!

RayJkl commented 6 years ago

For running on GPU, did you set something like this? THEANO_FLAGS=device=cuda0 python XXXX.py