I tried to implement downstream task on VOC07 dataset, but there's something wrong with PackSelfSup.
I ran the command
sbatch --gpus=8 tools/benchmarks/classification/svm_voc07/slurm_test_svm_pretrain.sh gpu voc configs/selfsup/orl/stage3/orl_resnet50_8xb64-coslr-800e_coco.py ./orl_r50_coco_ep800.pth feat5
on the slurm cluster.
However, the PackSelfSup mistakenly output with type List[Tuple[Tensor, Tensor, Tensor]], which contradicts the needed List[Tensor]. Actually, Tuple[Tensor, Tensor,Tensor] corresponds to the loaded image's three channels respectively and I don't know why this weird bug happended. As a result, an error raised due to type mismatching
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
"configs/selfsup/orl/stage3/orl_resnet50_8xb64-coslr-800e_coco.py" corresponds to ${SELFSUP_CONFIG},
"./orl_r50_coco_ep800.pth" is the pretrained model, and "feat5" means that ${FEATURE_LIST}
Reproduces the problem - error message
Traceback (most recent call last):
File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 204, in
Traceback (most recent call last):
File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 204, in
main()
File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 181, in main
main()
File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 181, in main
outputs = extractor(model)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 104, in call
outputs = extractor(model)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 104, in call
feats = dist_forward_collect(func, self.data_loader,
File "/data/run01/scz5891/mmselfsup/mmselfsup/utils/collect.py", line 60, in dist_forward_collect
feats = dist_forward_collect(func, self.data_loader,
File "/data/run01/scz5891/mmselfsup/mmselfsup/utils/collect.py", line 60, in dist_forward_collect
batch_result = func(data) # dict{key: tensor}
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 101, in func
batch_result = func(data) # dict{key: tensor}
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 101, in func
return self._forward_func(model, packed_data)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 74, in _forward_func
return self._forward_func(model, packed_data)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 74, in _forward_func
batch_inputs, batch_data_samples = model.data_preprocessor(packed_data)
File "/HOME/scz5891/.conda/envs/idea/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
batch_inputs, batch_data_samples = model.data_preprocessor(packed_data)
File "/HOME/scz5891/.conda/envs/idea/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
return forward_call(*input, *kwargs)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in forward
return forward_call(input, **kwargs)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in forward
batchinputs = [input.float() for input_ in batch_inputs]
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in
batchinputs = [input.float() for input_ in batch_inputs]
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
Branch
1.x branch (1.x version, such as
v1.0.0rc2
, ordev-1.x
branch)Prerequisite
Environment
sys.platform: linux Python: 3.10.8 (main, Nov 24 2022, 14:13:03) [GCC 11.2.0] CUDA available: True numpy_random_seed: 2147483648 GPU 0: NVIDIA GeForce RTX 3090 CUDA_HOME: /data/apps/cuda/11.6 NVCC: Cuda compilation tools, release 11.6, V11.6.112 GCC: gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) PyTorch: 1.13.0 PyTorch compiling details: PyTorch built with:
TorchVision: 0.14.0 OpenCV: 4.6.0 MMEngine: 0.4.0 MMCV: 2.0.0rc3 MMCV Compiler: GCC 9.3 MMCV CUDA Compiler: 11.6 MMSelfSup: 1.0.0rc5+1e4135a
Describe the bug
I tried to implement downstream task on VOC07 dataset, but there's something wrong with PackSelfSup. I ran the command
sbatch --gpus=8 tools/benchmarks/classification/svm_voc07/slurm_test_svm_pretrain.sh gpu voc configs/selfsup/orl/stage3/orl_resnet50_8xb64-coslr-800e_coco.py ./orl_r50_coco_ep800.pth feat5
on the slurm cluster. However, the PackSelfSup mistakenly output with type List[Tuple[Tensor, Tensor, Tensor]], which contradicts the needed List[Tensor]. Actually, Tuple[Tensor, Tensor,Tensor] corresponds to the loaded image's three channels respectively and I don't know why this weird bug happended. As a result, an error raised due to type mismatchingFile "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
Reproduces the problem - code sample
No response
Reproduces the problem - command or script
sbatch --gpus=1 tools/benchmarks/classification/svm_voc07/slurm_test_svm_pretrain.sh ${PARTITION} ${JOBNAME} \ configs/selfsup/orl/stage3/orl_resnet50_8xb64-coslr-800e_coco.py ./orl_r50_coco_ep800.pth feat5
"configs/selfsup/orl/stage3/orl_resnet50_8xb64-coslr-800e_coco.py" corresponds to ${SELFSUP_CONFIG}, "./orl_r50_coco_ep800.pth" is the pretrained model, and "feat5" means that ${FEATURE_LIST}
Reproduces the problem - error message
Traceback (most recent call last): File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 204, in
Traceback (most recent call last):
File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 204, in
main()
File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 181, in main
main()
File "/data/run01/scz5891/mmselfsup/tools/benchmarks/classification/svm_voc07/extract.py", line 181, in main
outputs = extractor(model)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 104, in call
outputs = extractor(model)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 104, in call
feats = dist_forward_collect(func, self.data_loader,
File "/data/run01/scz5891/mmselfsup/mmselfsup/utils/collect.py", line 60, in dist_forward_collect
feats = dist_forward_collect(func, self.data_loader,
File "/data/run01/scz5891/mmselfsup/mmselfsup/utils/collect.py", line 60, in dist_forward_collect
batch_result = func(data) # dict{key: tensor}
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 101, in func
batch_result = func(data) # dict{key: tensor}
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 101, in func
return self._forward_func(model, packed_data)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 74, in _forward_func
return self._forward_func(model, packed_data)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/extractor.py", line 74, in _forward_func
batch_inputs, batch_data_samples = model.data_preprocessor(packed_data)
File "/HOME/scz5891/.conda/envs/idea/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
batch_inputs, batch_data_samples = model.data_preprocessor(packed_data)
File "/HOME/scz5891/.conda/envs/idea/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
return forward_call(*input, *kwargs)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in forward
return forward_call(input, **kwargs)
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in forward
batchinputs = [input.float() for input_ in batch_inputs]
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in
batchinputs = [input.float() for input_ in batch_inputs]
File "/data/run01/scz5891/mmselfsup/mmselfsup/models/utils/data_preprocessor.py", line 60, in
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
batchinputs = [input.float() for input_ in batch_inputs]
AttributeError: 'tuple' object has no attribute 'float'
Additional information
No response