timmeinhardt / trackformer

Implementation of "TrackFormer: Multi-Object Tracking with Transformers”. [Conference on Computer Vision and Pattern Recognition (CVPR), 2022]
https://arxiv.org/abs/2101.02702
Apache License 2.0
512 stars 116 forks source link

AttributeError: 'ReadOnlyList' object has no attribute 'message' #3

Closed AzeroGYH closed 2 years ago

AzeroGYH commented 3 years ago

Hi, when I load the trained checkpoint, I got this error: AttributeError: 'ReadOnlyList' object has no attribute 'message'

I think this mistake is related to Sacred.

when reading config.yaml , i got this message: message: The configuration is read-only in a captured function!

the config.yaml :

lr_linear_proj_names:  !!python/object/new:sacred.config.custom_containers.ReadOnlyList
  listitems:
  - reference_points
  - sampling_offsets
  state:
    message: The configuration is read-only in a captured function!

I'm just following the training instructions. And I don't know much about Sacred. Can anyone help me? Thanks firstly.

timmeinhardt commented 3 years ago

Can you provide the command you are executing?

AzeroGYH commented 3 years ago

@timmeinhardt here is the command, it is for mot17 and no change, when i test with my trained checkpoint, i got this error:

python src/train.py with \
    deformable \
    tracking \
    mot17 \
    resume=models/crowdhuman_train_val_deformable/checkpoint.pth \
    output_dir=models/mot17_train_deformable_private_reproduce \
    no_vis=True

Furthermore, i change some codes for training my own dataset, i also got this error.

timmeinhardt commented 3 years ago

The command works for me. What version of Python, PyTorch, CUDA and Sacred are you using?

AzeroGYH commented 3 years ago

Thank you for your reply. The versions of Python, PyTorch, CUDA and Sacred are the same as the install instructions. I will try to create a new environment.

LiuShuaiyr commented 3 years ago

I met the same error, when I run" python src/trcak.py ......" Traceback (most recent calls WITHOUT Sacred internals): File "/home/ls/code/Tracking/trackformer/src/track.py", line 71, in main obj_detect_args = nested_dict_to_namespace(yaml.unsafe_load(open(obj_detect_config_path))) ................ sacred.utils.SacredError: The configuration is read-only in a captured function!

LiuShuaiyr commented 3 years ago

Hi, when I load the trained checkpoint, I got this error: AttributeError: 'ReadOnlyList' object has no attribute 'message'

I think this mistake is related to Sacred.

when reading config.yaml , i got this message: message: The configuration is read-only in a captured function!

the config.yaml :

lr_linear_proj_names:  !!python/object/new:sacred.config.custom_containers.ReadOnlyList
  listitems:
  - reference_points
  - sampling_offsets
  state:
    message: The configuration is read-only in a captured function!

I'm just following the training instructions. And I don't know much about Sacred. Can anyone help me? Thanks firstly.

I met the same error. How did you solve it ?

AzeroGYH commented 3 years ago

Hi, when I load the trained checkpoint, I got this error: AttributeError: 'ReadOnlyList' object has no attribute 'message' I think this mistake is related to Sacred. when reading config.yaml , i got this message: message: The configuration is read-only in a captured function! the config.yaml :

lr_linear_proj_names:  !!python/object/new:sacred.config.custom_containers.ReadOnlyList
  listitems:
  - reference_points
  - sampling_offsets
  state:
    message: The configuration is read-only in a captured function!

I'm just following the training instructions. And I don't know much about Sacred. Can anyone help me? Thanks firstly.

I met the same error. How did you solve it ?

I'm sorry, I don't solve it yet.

timmeinhardt commented 3 years ago

Can you guys confirm that you are using Sacred version 0.8.1? They made some changes to the framework regarding read-only config files. See for example (https://github.com/IDSIA/sacred/issues/492 and https://github.com/IDSIA/sacred/issues/509)

evendrow commented 3 years ago

I'm encountering the same issue. pip show sacred and sacred.__version__ both show I'm using version 0.8.1.

timmeinhardt commented 3 years ago

I did some debugging and have a theory on why you are encountering this issue. Running a training without submitit saves the config file in a different format and this is something you might have done during the installation process. I fixed this problem. In addition, the default output directories of the example training code overwrite the default directory of pretrained models. I fxed this as well.

Please redownload the pretrained model files and try running the evaluation code again.

lsabrinax commented 3 years ago

I have the same error above when I run 'python src/track.py ...', and I tried the code from sacred import SETTINGS SETTINGS.CONFIG.READ_ONLY_CONFIG = False ant it did not work, can anyone solve this problem?

timmeinhardt commented 3 years ago

The config.yaml corresponding to the model you are trying to evaluate should NOT include entries like this:

lr_linear_proj_names:  !!python/object/new:sacred.config.custom_containers.ReadOnlyList
  listitems:
  - reference_points
  - sampling_offsets
  state:
    message: The configuration is read-only in a captured function!

It should look like this

lr_linear_proj_names:
- reference_points
- sampling_offsets

Please redownload the model files if this is not the case.

lsabrinax commented 3 years ago

The config.yaml corresponding to the model you are trying to evaluate should NOT include entries like this:

lr_linear_proj_names:  !!python/object/new:sacred.config.custom_containers.ReadOnlyList
  listitems:
  - reference_points
  - sampling_offsets
  state:
    message: The configuration is read-only in a captured function!

It should look like this

lr_linear_proj_names:
- reference_points
- sampling_offsets

Please redownload the model files if this is not the case.

The config.yaml corresponding to the model you are trying to evaluate should NOT include entries like this:

lr_linear_proj_names:  !!python/object/new:sacred.config.custom_containers.ReadOnlyList
  listitems:
  - reference_points
  - sampling_offsets
  state:
    message: The configuration is read-only in a captured function!

It should look like this

lr_linear_proj_names:
- reference_points
- sampling_offsets

Please redownload the model files if this is not the case.

Thank you for your reply. I modified config.yaml as your instruction and now it brings out new error AttributeError: 'ReadOnlyList' object has no attribute 'message',the origin is sacred.utils.SacredError: The configuration is read-only in a captured function!. And I evaluated the model trained by myself, is it mean that I need to retrain my model ? If so, what I need to modify before I retrain.

timmeinhardt commented 3 years ago

Does your config file still contain any entry with something like !python/object/new:sacred.config.custom_containers.ReadOnlyList? Please redownload the model files with their corresponding config file and do not change them manually. Then try to run them and check if everything is working.

For models you trained on your own please use the latest version of the repository. I introduced some changes that should prevent config files to be generated with the problematic Python statements.

timmeinhardt commented 2 years ago

Can we close this issue?