decisionforce / TPN

[CVPR 2020] Temporal Pyramid Network for Action Recognition
https://decisionforce.github.io/TPN/
Apache License 2.0
394 stars 55 forks source link

How to install mmaction correctly? #3

Closed chenyihang1993 closed 4 years ago

chenyihang1993 commented 4 years ago

I have installed mmaction from source, but when I run the code, the error raised:

*****************************************
Setting OMP_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as nee
ded. 
*****************************************
Traceback (most recent call last):
  File "./tools/train_recognizer.py", line 90, in <module>
    main()
  File "./tools/train_recognizer.py", line 77, in main
    cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 59, in build_recognizer
    dict(train_cfg=train_cfg, test_cfg=test_cfg))
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 34, in build
    return _build_module(cfg, registry, default_args)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 26, in _build_module
    return obj_type(**args)
TypeError: __init__() got an unexpected keyword argument 'necks'
Traceback (most recent call last):                                                                                                                                                                  [0/1834]
  File "./tools/train_recognizer.py", line 90, in <module>
    main()
  File "./tools/train_recognizer.py", line 77, in main
    cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 59, in build_recognizer
    dict(train_cfg=train_cfg, test_cfg=test_cfg))
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 34, in build
    return _build_module(cfg, registry, default_args)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 26, in _build_module
    return obj_type(**args)
TypeError: __init__() got an unexpected keyword argument 'necks'
Traceback (most recent call last):
  File "./tools/train_recognizer.py", line 90, in <module>
    main()
  File "./tools/train_recognizer.py", line 77, in main
    cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 59, in build_recognizer
    dict(train_cfg=train_cfg, test_cfg=test_cfg))
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 34, in build
    return _build_module(cfg, registry, default_args)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 26, in _build_module
    return obj_type(**args)
TypeError: __init__() got an unexpected keyword argument 'necks'
Traceback (most recent call last):
  File "./tools/train_recognizer.py", line 90, in <module>
    main()
  File "./tools/train_recognizer.py", line 77, in main
    cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 59, in build_recognizer
    dict(train_cfg=train_cfg, test_cfg=test_cfg))
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 34, in build
    return _build_module(cfg, registry, default_args)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 26, in _build_module
    return obj_type(**args)
TypeError: __init__() got an unexpected keyword argument 'necks'
2020-04-30 15:38:53,772 - INFO - Distributed training: True
Traceback (most recent call last):
  File "./tools/train_recognizer.py", line 90, in <module>
    main()
  File "./tools/train_recognizer.py", line 77, in main
    cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 59, in build_recognizer
    dict(train_cfg=train_cfg, test_cfg=test_cfg))
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 34, in build
    return _build_module(cfg, registry, default_args)
  File "/mnt/shared_40t/cyh/data/action_recognization/mmaction/mmaction/models/builder.py", line 26, in _build_module
    return obj_type(**args)
TypeError: __init__() got an unexpected keyword argument 'necks'
Traceback (most recent call last):
  File "/DATA/disk1/cyh/miniconda3/envs/py36-pytorch/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/DATA/disk1/cyh/miniconda3/envs/py36-pytorch/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/DATA/disk1/cyh/miniconda3/envs/py36-pytorch/lib/python3.6/site-packages/torch/distributed/launch.py", line 246, in <module>
    main()
  File "/DATA/disk1/cyh/miniconda3/envs/py36-pytorch/lib/python3.6/site-packages/torch/distributed/launch.py", line 242, in main
    cmd=cmd)
subprocess.CalledProcessError: Command '['/DATA/disk1/cyh/miniconda3/envs/py36-pytorch/bin/python', '-u', './tools/train_recognizer.py', '--local_rank=3', 'config_files/sthv1/tsm_tpn_ntu.py', '--launcher'
, 'pytorch', '--validate', '--work_dir', 'model']' returned non-zero exit status 1.

It seems to submodules "neck" not be installed. Please tell me how to solve it. Looking forward to your reply.

limbo0000 commented 4 years ago

@chenyihang1993 Thanks for using our codebase. Could you please share the config file you use and I could check it for you.

chenyihang1993 commented 4 years ago

The config file is

model = dict(
    type='TSN2D',
    backbone=dict(
        type='ResNet',
        pretrained='modelzoo://resnet50',
        depth=50,
        nsegments=8,
        out_indices=(2, 3),
        tsm=True,
        bn_eval=False,
        partial_bn=False),
    necks=dict(
        type='TPN',
        in_channels=[1024, 2048],
        out_channels=1024,
        spatial_modulation_config=dict(
            inplanes=[1024, 2048],
            planes=2048,
        ),
        temporal_modulation_config=dict(
            scales=(8, 8),
            param=dict(
                inplanes=-1,
                planes=-1,
                downsample_scale=-1,
            )),
        upsampling_config=dict(
            scale=(1, 1, 1),
        ),
        downsampling_config=dict(
            scales=(1, 1, 1),
            param=dict(
                inplanes=-1,
                planes=-1,
                downsample_scale=-1,
            )),
        level_fusion_config=dict(
            in_channels=[1024, 1024],
            mid_channels=[1024, 1024],
            out_channels=2048,
            ds_scales=[(1, 1, 1), (1, 1, 1)],
        ),
        aux_head_config=dict(
            inplanes=-1,
            planes=174,
            loss_weight=0.5
        ),
    ),
    spatial_temporal_module=dict(
        type='SimpleSpatialModule',
        spatial_type='avg',
        spatial_size=7),
    segmental_consensus=dict(
        type='SimpleConsensus',
        consensus_type='avg'),
    cls_head=dict(
        type='ClsHead',
        with_avg_pool=False,
        temporal_feature_size=1,
        spatial_feature_size=1,
        dropout_ratio=0.5,
        in_channels=2048,
        num_classes=174))
train_cfg = None
test_cfg = None
# dataset settings
dataset_type = 'RawFramesDataset'
data_root = ''
data_root_val = ''

img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)

data = dict(
    videos_per_gpu=8,
    workers_per_gpu=8,
    train=dict(
        type=dataset_type,
        ann_file='/DATA/disk1/cyh/data/action_recognization/NTU/labels/train_subjects_videofolder.txt',
        img_prefix=data_root,
        img_norm_cfg=img_norm_cfg,
        num_segments=8,
        new_length=1,
        new_step=1,
        random_shift=True,
        modality='RGB',
        image_tmpl='{:05d}.jpg',
        img_scale=256,
        input_size=224,
        flip_ratio=0.5,
        resize_keep_ratio=True,
        resize_crop=True,
        color_jitter=True,
        color_space_aug=True,
        oversample=None,
        max_distort=1,
        test_mode=False),
    val=dict(
        type=dataset_type,
        ann_file='/DATA/disk1/cyh/data/action_recognization/NTU/labels/val_subjects_videofolder.txt',
        img_prefix=data_root_val,
        img_norm_cfg=img_norm_cfg,
        num_segments=8,
        new_length=1,
        new_step=1,
        random_shift=False,
        modality='RGB',
        image_tmpl='{:05d}.jpg',
        img_scale=256,
        input_size=224,
        flip_ratio=0,
        resize_keep_ratio=True,
        oversample=None,
        test_mode=False),
    test=dict(
        type=dataset_type,
        ann_file='/DATA/disk1/cyh/data/action_recognization/NTU/labels/train_subjects_videofolder.txt',
        img_prefix=data_root_val,
        img_norm_cfg=img_norm_cfg,
        num_segments=16,
        new_length=1,
        new_step=1,
        random_shift=False,
        modality='RGB',
        image_tmpl='{:05d}.jpg',
        img_scale=256,
        input_size=256,
        flip_ratio=0,
        resize_keep_ratio=True,
        oversample="three_crop",
        test_mode=True))
# optimizer
optimizer = dict(type='SGD', lr=0.001, momentum=0.9, weight_decay=0.0005, nesterov=True)
optimizer_config = dict(grad_clip=dict(max_norm=20, norm_type=2))
# learning policy
lr_config = dict(
    policy='step',
    step=[10,20,30,40,50])
checkpoint_config = dict(interval=1)
workflow = [('train', 1)]
# yapf:disable
log_config = dict(
    interval=20,
    hooks=[
        dict(type='TextLoggerHook'),
        # dict(type='TensorboardLoggerHook')
    ])
# yapf:enable
# runtime settings
total_epochs = 50
dist_params = dict(backend='nccl')
log_level = 'INFO'
load_from = 'ckpt/sthv1_tpn.pth'
resume_from = None

It is kind of you! THX!

limbo0000 commented 4 years ago

Hi @chenyihang1993 BTW, could you successfully run the code of the quick demo?

limbo0000 commented 4 years ago

Hi @chenyihang1993 I have re-created a conda env and re-installed our codebase following INSTALL. The codebase is ok and quick demo runs well. Note that I specified the required version of mmcv. FYI, the version of my pytorch and torchvision is 1.1.0 and 0.3.0 respectively. I recommend you could use anaconda to manage your env, re-install our codebase following the doc and try the demo first.

I would close this issue since my testing is ok. You could reopen it and let me know if you still get the problem.