Closed lokeycookie closed 2 years ago
Hi @lokeycookie , unet_3d_upconv is an architecture used for image / scan segmentation. So it doesn't work with self-supervised algorithms, it requires segmentation masks/labels. This also applies to 'simple_multiclass' and 'unet_3d_upconv_patches'. However, the 'big_fully' architecture is just a fully connected (MLP) network, which can of course work with all self-supervised methods.
Hello! I am new to self-supervised learning and I am trying to understand some theory. While I am trying to run the rpl algorithm by using this command: train.py rpl_3d.json, when I set the parameter top architecture to "unet_3d_upconv" , I got the following error.
Traceback (most recent call last): File "train.py", line 4, in
main()
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/train.py", line 78, in main
init(train_model)
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/utils/model_utils.py", line 67, in init
f(**args)
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/train.py", line 57, in train_model
model = algorithm_def.get_training_model()
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/algorithms/jigsaw.py", line 68, in get_training_model
model = self.apply_model()
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/algorithms/jigsaw.py", line 46, in apply_model
return self.apply_prediction_model_to_encoder(self.enc_model)
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/algorithms/jigsaw.py", line 60, in apply_prediction_model_to_encoder
include_top=False)
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/utils/model_utils.py", line 193, in apply_prediction_model
kwargs)
File "/home/svu/e0310071/self-supervised-3d-tasks/self_supervised_3d_tasks/utils/model_utils.py", line 99, in get_prediction_model
assert algorithm_instance is not None, "no algorithm instance for 3d skip connections found"
AssertionError: no algorithm instance for 3d skip connections found
When I set the top architecture to "big_fully", there doesn't seem to be an error and the code is able to run. Thus, my question is what is the difference between all the top level architecture ('big_fully', 'simple_multiclass', 'unet_3d_upconv', 'unet_3d_upconv_patches' )? And why "unet_3d_upconv" can't be used for rpl algorithm?