WuLabMDA / Synthetic-PET-from-CT

6 stars 1 forks source link

Wrong with loading pre-trained model weights #1

Open PiPiNam opened 6 months ago

PiPiNam commented 6 months ago

Hi, I wanna test the pre-trained model performance, but I meet some problems. I would appreciated if you can help me!

The First problem is, ModuleNotFoundError: No module named 'data.single_dataset'

Traceback (most recent call last): File "testNifty.py", line 86, in opt = TestOptions().parse() # get test options File "C:\Users\Nam\Documents\Code\Synthetic-PET-from-CT\options\base_options.py", line 119, in parse opt = self.gather_options() File "C:\Users\Nam\Documents\Code\Synthetic-PET-from-CT\options\base_options.py", line 85, in gather_options dataset_option_setter = data.get_option_setter(dataset_name) File "C:\Users\Nam\Documents\Code\Synthetic-PET-from-CT\data__init.py", line 43, in get_option_setter dataset_class = find_dataset_using_name(dataset_name) File "C:\Users\Nam\Documents\Code\Synthetic-PET-from-CT\data__init__.py", line 26, in find_dataset_using_name datasetlib = importlib.import_module(dataset_filename) File "C:\Users\Nam\anaconda3\envs\pytorch-CycleGAN-and-pix2pix\lib\importlib\init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 994, in _gcd_import File "", line 971, in _find_and_load File "", line 953, in _find_and_load_unlocked

when I copy the cttopet_dataset.py and rename it to single_dataset.py and rename, it seems can load the weight of Generator.

However, the second problem come as below:

Traceback (most recent call last): File "testNifty.py", line 94, in model.setup(opt) # regular setup: load and print networks; create schedulers File "/data/Code/Synthetic-PET-from-CT/models/base_model.py", line 88, in setup self.load_networks(load_suffix) File "/data/Code/Synthetic-PET-from-CT/models/base_model.py", line 199, in load_networks net.load_state_dict(state_dict) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 1052, in load_state_dict self.class.name, "\n\t".join(error_msgs))) RuntimeError: Error(s) in loading state_dict for ResUnetPlusPlus: Unexpected key(s) in state_dict: "input_layer.1.weight", "input_layer.1.bias", "residual_conv1.conv_block.0.weight", "residual_conv1.conv_block.0.bias", "residual_conv1.conv_block.3.weight", "residual_conv1.conv_block.3.bias", "residual_conv1.conv_skip.1.weight", "residual_conv1.conv_skip.1.bias", "residual_conv2.conv_block.0.weight", "residual_conv2.conv_block.0.bias", "residual_conv2.conv_block.3.weight", "residual_conv2.conv_block.3.bias", "residual_conv2.conv_skip.1.weight", "residual_conv2.conv_skip.1.bias", "residual_conv3.conv_block.0.weight", "residual_conv3.conv_block.0.bias", "residual_conv3.conv_block.3.weight", "residual_conv3.conv_block.3.bias", "residual_conv3.conv_skip.1.weight", "residual_conv3.conv_skip.1.bias", "aspp_bridge.aspp_block1.2.weight", "aspp_bridge.aspp_block1.2.bias", "aspp_bridge.aspp_block2.2.weight", "aspp_bridge.aspp_block2.2.bias", "aspp_bridge.aspp_block3.2.weight", "aspp_bridge.aspp_block3.2.bias", "attn1.conv_encoder.0.weight", "attn1.conv_encoder.0.bias", "attn1.conv_decoder.0.weight", "attn1.conv_decoder.0.bias", "attn1.conv_attn.0.weight", "attn1.conv_attn.0.bias", "up_residual_conv1.conv_block.0.weight", "up_residual_conv1.conv_block.0.bias", "up_residual_conv1.conv_block.3.weight", "up_residual_conv1.conv_block.3.bias", "up_residual_conv1.conv_skip.1.weight", "up_residual_conv1.conv_skip.1.bias", "attn2.conv_encoder.0.weight", "attn2.conv_encoder.0.bias", "attn2.conv_decoder.0.weight", "attn2.conv_decoder.0.bias", "attn2.conv_attn.0.weight", "attn2.conv_attn.0.bias", "up_residual_conv2.conv_block.0.weight", "up_residual_conv2.conv_block.0.bias", "up_residual_conv2.conv_block.3.weight", "up_residual_conv2.conv_block.3.bias", "up_residual_conv2.conv_skip.1.weight", "up_residual_conv2.conv_skip.1.bias", "attn3.conv_encoder.0.weight", "attn3.conv_encoder.0.bias", "attn3.conv_decoder.0.weight", "attn3.conv_decoder.0.bias", "attn3.conv_attn.0.weight", "attn3.conv_attn.0.bias", "up_residual_conv3.conv_block.0.weight", "up_residual_conv3.conv_block.0.bias", "up_residual_conv3.conv_block.3.weight", "up_residual_conv3.conv_block.3.bias", "up_residual_conv3.conv_skip.1.weight", "up_residual_conv3.conv_skip.1.bias", "aspp_out.aspp_block1.2.weight", "aspp_out.aspp_block1.2.bias", "aspp_out.aspp_block2.2.weight", "aspp_out.aspp_block2.2.bias", "aspp_out.aspp_block3.2.weight", "aspp_out.aspp_block3.2.bias".

It seems the weight cannot match the network architecture. I wanna know how to solve it.

teacher-tony12138 commented 3 weeks ago

You should add --model pix2pix into test command since we set model to 'pix2pix' when training, please go to checkpoints/train_opt.txt to find more details Example command: python testNifty.py --dataroot './input' --name './checkpoints' --mode 'test' --preprocess_gamma 1 --results_dir './Result_folder' --dataset_mode cttopet --batch_size 1 --model pix2pix