I trained the network for classification using local-based downsampling.
Now I want to test the model and it gives me an unpickling error:
`System environment:
sys.platform: linux
Python: 3.9.19 (main, Apr 27 2024, 21:19:26) [GCC 13.2.0]
CUDA available: True
MUSA available: False
numpy_random_seed: 172362758
GPU 0: Quadro RTX 4000
CUDA_HOME: /usr
NVCC: Cuda compilation tools, release 12.0, V12.0.140
GCC: x86_64-linux-gnu-gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0
PyTorch: 2.0.0+cu117
PyTorch compiling details: PyTorch built with:
-
GCC 9.3
-
C++ Version: 201703
-
Intel(R) oneAPI Math Kernel Library Version 2022.2-Product Build 20220804 for Intel(R) 64 architecture applications
-
Intel(R) MKL-DNN v2.7.3 (Git Hash 6dbeffbae1f23cbbeae17adb7b5b13f1f37c080e)
-
OpenMP 201511 (a.k.a. OpenMP 4.5)
-
LAPACK is enabled (usually provided by MKL)
-
NNPACK is enabled
-
CPU capability usage: AVX2
-
CUDA Runtime 11.7
-
NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86
-
CuDNN 8.5
-
Magma 2.6.1
-
Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.7, CUDNN_VERSION=8.5.0, CXX_COMPILER=/opt/rh/devtoolset-9/root/usr/bin/c++, CXX_FLAGS= -D_GLIBCXX_USE_CXX11_ABI=0 -fabi-version=11 -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -DNDEBUG -DUSE_KINETO -DLIBKINETO_NOROCTRACER -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -Wall -Wextra -Werror=return-type -Werror=non-virtual-dtor -Werror=bool-operation -Wnarrowing -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wunused-local-typedefs -Wno-unused-parameter -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Werror=cast-function-type -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_DISABLE_GPU_ASSERTS=ON, TORCH_VERSION=2.0.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=1, USE_NNPACK=ON, USE_OPENMP=ON, USE_ROCM=OFF,
OpenCV: 4.9.0
MMEngine: 0.10.4
Runtime environment:
cudnn_benchmark: True
mp_cfg: {'mp_start_method': 'fork', 'opencv_num_threads': 0}
dist_cfg: {'backend': 'nccl', 'init_method': 'env://'}
seed: 172362758
diff_rank_seed: False
deterministic: False
Distributed launcher: none
Distributed training: False
GPU number: 1
06/06 14:26:23 - mmengine - INFO - Config:
auto_scale_lr = dict(base_batch_size=8, enable=False)
cfg = dict(compile=True, find_unused_parameters=False, sync_bn='torch')
custom_hooks = None
data_preprocessor = None
default_hooks = dict(
checkpoint=dict(
by_epoch=True,
interval=-1,
max_keep_ckpts=-1,
published_keys=[
'state_dict',
],
rule=[
'greater',
],
save_best=[
'val_acc',
],
save_last=False,
save_optimizer=True,
save_param_scheduler=True,
type='ModifiedCheckpointHook'),
logger=dict(
ignore_last=False,
interval=1,
interval_exp_name=1,
log_metric_by_epoch=True,
type='ModifiedLoggerHook'),
param_scheduler=dict(type='ParamSchedulerHook'),
runtime_info=dict(type='RuntimeInfoHook'),
sampler_seed=dict(type='DistSamplerSeedHook'),
timer=dict(type='IterTimerHook'))
default_scope = 'mmengine'
env_cfg = dict(
cudnn_benchmark=True,
dist_cfg=dict(backend='nccl', init_method='env://'),
mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0))
experiment_name = 'apes_cls_local-modelnet-200epochs'
launcher = 'none'
load_from = '/home/ubuntu/Downloads/APES-main/work_dirs/apes_cls_local-modelnet-200epochs/20240605_175037/best_val_acc_epoch_156/archive/data.pkl'
log_level = 'INFO'
log_processor = dict(
by_epoch=True,
custom_cfg=[
dict(
data_src='loss',
log_name='loss',
method_name='mean',
window_size='epoch'),
dict(
data_src='acc',
log_name='acc',
method_name='mean',
window_size='epoch'),
])
model = dict(
backbone=dict(type='APESClsBackbone', which_ds='local'),
data_preprocessor=None,
head=dict(type='APESClsHead'),
init_cfg=None,
neck=None,
type='APESClassifier')
optim_wrapper = dict(
optimizer=dict(lr=0.0001, type='AdamW', weight_decay=1),
type='AmpOptimWrapper')
param_scheduler = [
dict(
begin=0,
by_epoch=True,
end=10,
end_factor=1,
start_factor=0.0001,
type='LinearLR'),
dict(
T_max=190,
begin=10,
by_epoch=True,
end=200,
eta_min=0,
type='CosineAnnealingLR'),
]
randomness = dict(deterministic=False, diff_rank_seed=False, seed=None)
resume = False
test_cfg = dict(fp16=False, type='TestLoop')
test_dataloader = dict(
batch_size=8,
collate_fn=dict(type='default_collate'),
dataset=dict(
data_prefix=dict(cls_label_path='label/test/', pcd_path='pcd/test/'),
data_root='./data/modelnet',
pipeline=[
dict(type='LoadPCD'),
dict(type='LoadCLSLabel'),
dict(type='ToCLSTensor'),
dict(type='PackCLSInputs'),
],
type='ModelNet'),
drop_last=True,
num_workers=4,
persistent_workers=True,
pin_memory=True,
sampler=dict(shuffle=False, type='DefaultSampler'))
test_evaluator = dict(mode='test', type='Accuracy')
train_cfg = dict(
max_epochs=200, type='EpochBasedTrainLoop', val_begin=1, val_interval=1)
train_dataloader = dict(
batch_size=8,
collate_fn=dict(type='default_collate'),
dataset=dict(
data_prefix=dict(cls_label_path='label/train/', pcd_path='pcd/train/'),
data_root='./data/modelnet',
pipeline=[
dict(type='LoadPCD'),
dict(type='LoadCLSLabel'),
dict(type='ShufflePointsOrder'),
dict(
angle=15,
axis='y',
clip=0.05,
max_scale=1.5,
min_scale=0.66,
shift=0.2,
sigma=0.01,
type='DataAugmentation'),
dict(type='ToCLSTensor'),
dict(type='PackCLSInputs'),
],
type='ModelNet'),
drop_last=True,
num_workers=4,
persistent_workers=True,
pin_memory=True,
sampler=dict(shuffle=True, type='DefaultSampler'))
val_cfg = dict(fp16=False, type='ValLoop')
val_dataloader = dict(
batch_size=8,
collate_fn=dict(type='default_collate'),
dataset=dict(
data_prefix=dict(cls_label_path='label/test/', pcd_path='pcd/test/'),
data_root='./data/modelnet',
pipeline=[
dict(type='LoadPCD'),
dict(type='LoadCLSLabel'),
dict(type='ToCLSTensor'),
dict(type='PackCLSInputs'),
],
type='ModelNet'),
drop_last=True,
num_workers=4,
persistent_workers=True,
pin_memory=True,
sampler=dict(shuffle=False, type='DefaultSampler'))
val_evaluator = dict(mode='val', type='Accuracy')
visualizer = dict(
type='APESVisualizer',
vis_backends=[
dict(type='ModifiedLocalVisBackend'),
])
work_dir = './work_dirs/apes_cls_local-modelnet-200epochs'
06/06 14:26:23 - mmengine - WARNING - The prefix is not set in metric class Accuracy.
06/06 14:26:24 - mmengine - INFO - Distributed training is not used, all SyncBatchNorm (SyncBN) layers in the model will be automatically reverted to BatchNormXd layers if they are used.
06/06 14:26:24 - mmengine - INFO - Hooks will be executed in the following order:
before_run:
(VERY_HIGH ) RuntimeInfoHook
(BELOW_NORMAL) ModifiedLoggerHook
before_train:
(VERY_HIGH ) RuntimeInfoHook
(NORMAL ) IterTimerHook
(VERY_LOW ) ModifiedCheckpointHook
before_train_epoch:
(VERY_HIGH ) RuntimeInfoHook
(NORMAL ) IterTimerHook
(NORMAL ) DistSamplerSeedHook
before_train_iter:
(VERY_HIGH ) RuntimeInfoHook
(NORMAL ) IterTimerHook
after_train_iter:
(VERY_HIGH ) RuntimeInfoHook
(NORMAL ) IterTimerHook
(BELOW_NORMAL) ModifiedLoggerHook
(LOW ) ParamSchedulerHook
(VERY_LOW ) ModifiedCheckpointHook
after_train_epoch:
(NORMAL ) IterTimerHook
(LOW ) ParamSchedulerHook
(VERY_LOW ) ModifiedCheckpointHook
before_val:
(VERY_HIGH ) RuntimeInfoHook
before_val_epoch:
(NORMAL ) IterTimerHook
before_val_iter:
(NORMAL ) IterTimerHook
after_val_iter:
(NORMAL ) IterTimerHook
(BELOW_NORMAL) ModifiedLoggerHook
after_val_epoch:
(VERY_HIGH ) RuntimeInfoHook
(NORMAL ) IterTimerHook
(BELOW_NORMAL) ModifiedLoggerHook
(LOW ) ParamSchedulerHook
(VERY_LOW ) ModifiedCheckpointHook
after_val:
(VERY_HIGH ) RuntimeInfoHook
after_train:
(VERY_HIGH ) RuntimeInfoHook
(VERY_LOW ) ModifiedCheckpointHook
before_test:
(VERY_HIGH ) RuntimeInfoHook
before_test_epoch:
(NORMAL ) IterTimerHook
before_test_iter:
(NORMAL ) IterTimerHook
after_test_iter:
(NORMAL ) IterTimerHook
(BELOW_NORMAL) ModifiedLoggerHook
after_test_epoch:
(VERY_HIGH ) RuntimeInfoHook
(NORMAL ) IterTimerHook
(BELOW_NORMAL) ModifiedLoggerHook
after_test:
(VERY_HIGH ) RuntimeInfoHook
after_run:
(BELOW_NORMAL) ModifiedLoggerHook
Loads checkpoint by local backend from path: /home/ubuntu/Downloads/APES-main/work_dirs/apes_cls_local-modelnet-200epochs/20240605_175037/best_val_acc_epoch_156/archive/data.pkl
Traceback (most recent call last):
File "/home/ubuntu/Downloads/APES-main/utils/test.py", line 36, in
main()
File "/home/ubuntu/Downloads/APES-main/utils/test.py", line 32, in main
runner.test()
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/mmengine/runner/runner.py", line 1821, in test
self.load_or_resume()
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/mmengine/runner/runner.py", line 1699, in load_or_resume
self.load_checkpoint(self._load_from)
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/mmengine/runner/runner.py", line 2127, in load_checkpoint
checkpoint = _load_checkpoint(filename, map_location=map_location)
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/mmengine/runner/checkpoint.py", line 548, in _load_checkpoint
return CheckpointLoader.load_checkpoint(filename, map_location, logger)
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/mmengine/runner/checkpoint.py", line 330, in load_checkpoint
return checkpoint_loader(filename, map_location)
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/mmengine/runner/checkpoint.py", line 347, in load_from_local
checkpoint = torch.load(filename, map_location=map_location)
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/torch/serialization.py", line 815, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "/home/ubuntu/Downloads/APES-main/venv/lib/python3.9/site-packages/torch/serialization.py", line 1033, in _legacy_load
magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: A load persistent id instruction was encountered,
but no persistent_load function was specified.
`