open-mmlab / mmselfsup

OpenMMLab Self-Supervised Learning Toolbox and Benchmark
https://mmselfsup.readthedocs.io/en/latest/
Apache License 2.0
3.18k stars 428 forks source link

[Bug] load VOC07 dataset #673

Open zhaozh10 opened 1 year ago

zhaozh10 commented 1 year ago

Branch

1.x branch (1.x version, such as v1.0.0rc2, or dev-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 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'

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