Pointcept / Pointcept

Pointcept: a codebase for point cloud perception research. Latest works: PTv3 (CVPR'24 Oral), PPT (CVPR'24), OA-CNNs (CVPR'24), MSC (CVPR'23)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

training s3dis error: ValueError: Trainer: num_samples should be a positive integer value, but got num_samples=0

Yatoronto opened this issue · comments

detail error imformation:

sh scripts/train.sh -p python -g 1 -d s3dis -c semseg-pt-v3m1-0-base -n semseg-pt-v3m1-0-base
Experiment name: semseg-pt-v3m1-0-base
Python interpreter dir: python
Dataset: s3dis
Config: semseg-pt-v3m1-0-base
GPU Num: 1
 =========> CREATE EXP DIR <=========
Experiment dir: /media/wsc/16B68EBDB68E9CBD/PTv3/Pointcept/exp/s3dis/semseg-pt-v3m1-0-base
Loading config in: configs/s3dis/semseg-pt-v3m1-0-base.py
Running code in: exp/s3dis/semseg-pt-v3m1-0-base/code
 =========> RUN TASK <=========
[2024-06-13 16:03:02,124 INFO train.py line 128 9903] => Loading config ...
[2024-06-13 16:03:02,124 INFO train.py line 130 9903] Save path: exp/s3dis/semseg-pt-v3m1-0-base
[2024-06-13 16:03:02,670 INFO train.py line 131 9903] Config:
weight = None
resume = False
evaluate = True
test_only = False
seed = 1595974
save_path = 'exp/s3dis/semseg-pt-v3m1-0-base'
num_worker = 24
batch_size = 12
batch_size_val = None
batch_size_test = None
epoch = 3000
eval_epoch = 100
sync_bn = False
enable_amp = True
empty_cache = False
empty_cache_per_epoch = False
find_unused_parameters = False
mix_prob = 0.8
param_dicts = [dict(keyword='block', lr=0.0006)]
hooks = [
    dict(type='CheckpointLoader'),
    dict(type='IterationTimer', warmup_iter=2),
    dict(type='InformationWriter'),
    dict(type='SemSegEvaluator'),
    dict(type='CheckpointSaver', save_freq=None),
    dict(type='PreciseEvaluator', test_last=False)
]
train = dict(type='DefaultTrainer')
test = dict(type='SemSegTester', verbose=True)
model = dict(
    type='DefaultSegmentorV2',
    num_classes=13,
    backbone_out_channels=64,
    backbone=dict(
        type='PT-v3m1',
        in_channels=6,
        order=('z', 'z-trans', 'hilbert', 'hilbert-trans'),
        stride=(2, 2, 2, 2),
        enc_depths=(2, 2, 2, 6, 2),
        enc_channels=(32, 64, 128, 256, 512),
        enc_num_head=(2, 4, 8, 16, 32),
        enc_patch_size=(1024, 1024, 1024, 1024, 1024),
        dec_depths=(2, 2, 2, 2),
        dec_channels=(64, 64, 128, 256),
        dec_num_head=(4, 4, 8, 16),
        dec_patch_size=(1024, 1024, 1024, 1024),
        mlp_ratio=4,
        qkv_bias=True,
        qk_scale=None,
        attn_drop=0.0,
        proj_drop=0.0,
        drop_path=0.3,
        shuffle_orders=True,
        pre_norm=True,
        enable_rpe=False,
        enable_flash=True,
        upcast_attention=False,
        upcast_softmax=False,
        cls_mode=False,
        pdnorm_bn=False,
        pdnorm_ln=False,
        pdnorm_decouple=True,
        pdnorm_adaptive=False,
        pdnorm_affine=True,
        pdnorm_conditions=('ScanNet', 'S3DIS', 'Structured3D')),
    criteria=[
        dict(type='CrossEntropyLoss', loss_weight=1.0, ignore_index=-1),
        dict(
            type='LovaszLoss',
            mode='multiclass',
            loss_weight=1.0,
            ignore_index=-1)
    ])
optimizer = dict(type='AdamW', lr=0.006, weight_decay=0.05)
scheduler = dict(
    type='OneCycleLR',
    max_lr=[0.006, 0.0006],
    pct_start=0.05,
    anneal_strategy='cos',
    div_factor=10.0,
    final_div_factor=1000.0)
dataset_type = 'S3DISDataset'
data_root = 'data/s3dis'
data = dict(
    num_classes=13,
    ignore_index=-1,
    names=[
        'ceiling', 'floor', 'wall', 'beam', 'column', 'window', 'door',
        'table', 'chair', 'sofa', 'bookcase', 'board', 'clutter'
    ],
    train=dict(
        type='S3DISDataset',
        split=('Area_1', 'Area_2', 'Area_3', 'Area_4', 'Area_6'),
        data_root='data/s3dis',
        transform=[
            dict(type='CenterShift', apply_z=True),
            dict(
                type='RandomDropout',
                dropout_ratio=0.2,
                dropout_application_ratio=0.2),
            dict(
                type='RandomRotate',
                angle=[-1, 1],
                axis='z',
                center=[0, 0, 0],
                p=0.5),
            dict(
                type='RandomRotate',
                angle=[-0.015625, 0.015625],
                axis='x',
                p=0.5),
            dict(
                type='RandomRotate',
                angle=[-0.015625, 0.015625],
                axis='y',
                p=0.5),
            dict(type='RandomScale', scale=[0.9, 1.1]),
            dict(type='RandomFlip', p=0.5),
            dict(type='RandomJitter', sigma=0.005, clip=0.02),
            dict(type='ChromaticAutoContrast', p=0.2, blend_factor=None),
            dict(type='ChromaticTranslation', p=0.95, ratio=0.05),
            dict(type='ChromaticJitter', p=0.95, std=0.05),
            dict(
                type='GridSample',
                grid_size=0.02,
                hash_type='fnv',
                mode='train',
                return_grid_coord=True),
            dict(type='SphereCrop', sample_rate=0.6, mode='random'),
            dict(type='SphereCrop', point_max=204800, mode='random'),
            dict(type='CenterShift', apply_z=False),
            dict(type='NormalizeColor'),
            dict(type='ToTensor'),
            dict(
                type='Collect',
                keys=('coord', 'grid_coord', 'segment'),
                feat_keys=('color', 'normal'))
        ],
        test_mode=False,
        loop=30),
    val=dict(
        type='S3DISDataset',
        split='Area_5',
        data_root='data/s3dis',
        transform=[
            dict(type='CenterShift', apply_z=True),
            dict(
                type='Copy',
                keys_dict=dict(coord='origin_coord',
                               segment='origin_segment')),
            dict(
                type='GridSample',
                grid_size=0.02,
                hash_type='fnv',
                mode='train',
                return_grid_coord=True),
            dict(type='CenterShift', apply_z=False),
            dict(type='NormalizeColor'),
            dict(type='ToTensor'),
            dict(
                type='Collect',
                keys=('coord', 'grid_coord', 'origin_coord', 'segment',
                      'origin_segment'),
                offset_keys_dict=dict(
                    offset='coord', origin_offset='origin_coord'),
                feat_keys=('color', 'normal'))
        ],
        test_mode=False),
    test=dict(
        type='S3DISDataset',
        split='Area_5',
        data_root='data/s3dis',
        transform=[
            dict(type='CenterShift', apply_z=True),
            dict(type='NormalizeColor')
        ],
        test_mode=True,
        test_cfg=dict(
            voxelize=dict(
                type='GridSample',
                grid_size=0.02,
                hash_type='fnv',
                mode='test',
                keys=('coord', 'color', 'normal'),
                return_grid_coord=True),
            crop=None,
            post_transform=[
                dict(type='CenterShift', apply_z=False),
                dict(type='ToTensor'),
                dict(
                    type='Collect',
                    keys=('coord', 'grid_coord', 'index'),
                    feat_keys=('color', 'normal'))
            ],
            aug_transform=[[{
                'type': 'RandomScale',
                'scale': [0.9, 0.9]
            }], [{
                'type': 'RandomScale',
                'scale': [0.95, 0.95]
            }], [{
                'type': 'RandomScale',
                'scale': [1, 1]
            }], [{
                'type': 'RandomScale',
                'scale': [1.05, 1.05]
            }], [{
                'type': 'RandomScale',
                'scale': [1.1, 1.1]
            }],
                           [{
                               'type': 'RandomScale',
                               'scale': [0.9, 0.9]
                           }, {
                               'type': 'RandomFlip',
                               'p': 1
                           }],
                           [{
                               'type': 'RandomScale',
                               'scale': [0.95, 0.95]
                           }, {
                               'type': 'RandomFlip',
                               'p': 1
                           }],
                           [{
                               'type': 'RandomScale',
                               'scale': [1, 1]
                           }, {
                               'type': 'RandomFlip',
                               'p': 1
                           }],
                           [{
                               'type': 'RandomScale',
                               'scale': [1.05, 1.05]
                           }, {
                               'type': 'RandomFlip',
                               'p': 1
                           }],
                           [{
                               'type': 'RandomScale',
                               'scale': [1.1, 1.1]
                           }, {
                               'type': 'RandomFlip',
                               'p': 1
                           }]])))
num_worker_per_gpu = 24
batch_size_per_gpu = 12
batch_size_val_per_gpu = 1
batch_size_test_per_gpu = 1

[2024-06-13 16:03:02,671 INFO train.py line 132 9903] => Building model ...
[2024-06-13 16:03:02,916 INFO train.py line 216 9903] Num params: 46167117
[2024-06-13 16:03:03,640 INFO train.py line 134 9903] => Building writer ...
[2024-06-13 16:03:03,641 INFO train.py line 226 9903] Tensorboard writer logging dir: exp/s3dis/semseg-pt-v3m1-0-base
[2024-06-13 16:03:03,641 INFO train.py line 136 9903] => Building train dataset & dataloader ...
[2024-06-13 16:03:03,642 INFO defaults.py line 68 9903] Totally 0 x 30 samples in ('Area_1', 'Area_2', 'Area_3', 'Area_4', 'Area_6') set.
Traceback (most recent call last):
  File "/media/wsc/16B68EBDB68E9CBD/PTv3/Pointcept/exp/s3dis/semseg-pt-v3m1-0-base/code/pointcept/utils/registry.py", line 53, in build_from_cfg
    return obj_cls(**args)
  File "/media/wsc/16B68EBDB68E9CBD/PTv3/Pointcept/exp/s3dis/semseg-pt-v3m1-0-base/code/pointcept/engines/train.py", line 137, in __init__
    self.train_loader = self.build_train_loader()
  File "/media/wsc/16B68EBDB68E9CBD/PTv3/Pointcept/exp/s3dis/semseg-pt-v3m1-0-base/code/pointcept/engines/train.py", line 248, in build_train_loader
    train_loader = torch.utils.data.DataLoader(
  File "/home/wsc/anaconda3/envs/ptv3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 351, in __init__
    sampler = RandomSampler(dataset, generator=generator)  # type: ignore[arg-type]
  File "/home/wsc/anaconda3/envs/ptv3/lib/python3.8/site-packages/torch/utils/data/sampler.py", line 107, in __init__
    raise ValueError("num_samples should be a positive integer "
ValueError: num_samples should be a positive integer value, but got num_samples=0

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "exp/s3dis/semseg-pt-v3m1-0-base/code/tools/train.py", line 38, in <module>
    main()
  File "exp/s3dis/semseg-pt-v3m1-0-base/code/tools/train.py", line 27, in main
    launch(
  File "/media/wsc/16B68EBDB68E9CBD/PTv3/Pointcept/exp/s3dis/semseg-pt-v3m1-0-base/code/pointcept/engines/launch.py", line 89, in launch
    main_func(*cfg)
  File "exp/s3dis/semseg-pt-v3m1-0-base/code/tools/train.py", line 19, in main_worker
    trainer = TRAINERS.build(dict(type=cfg.train.type, cfg=cfg))
  File "/media/wsc/16B68EBDB68E9CBD/PTv3/Pointcept/exp/s3dis/semseg-pt-v3m1-0-base/code/pointcept/utils/registry.py", line 214, in build
    return self.build_func(*args, **kwargs, registry=self)
  File "/media/wsc/16B68EBDB68E9CBD/PTv3/Pointcept/exp/s3dis/semseg-pt-v3m1-0-base/code/pointcept/utils/registry.py", line 56, in build_from_cfg
    raise type(e)(f"{obj_cls.__name__}: {e}")
ValueError: Trainer: num_samples should be a positive integer value, but got num_samples=0