"vllm_flash_attn/models/vit.py" did not exist on "2ec7d3f72ceace2116311084ab406703ac686042"
imvoxelnet_8xb4_kitti-3d-car.py 5.87 KB
Newer Older
1
2
model = dict(
    type='ImVoxelNet',
Tai-Wang's avatar
Tai-Wang committed
3
4
5
6
7
8
    data_preprocessor=dict(
        type='Det3DDataPreprocessor',
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        bgr_to_rgb=True,
        pad_size_divisor=32),
9
    backbone=dict(
Tai-Wang's avatar
Tai-Wang committed
10
        type='mmdet.ResNet',
11
12
13
14
15
16
        depth=50,
        num_stages=4,
        out_indices=(0, 1, 2, 3),
        frozen_stages=1,
        norm_cfg=dict(type='BN', requires_grad=False),
        norm_eval=True,
17
        init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'),
18
19
        style='pytorch'),
    neck=dict(
Tai-Wang's avatar
Tai-Wang committed
20
        type='mmdet.FPN',
21
22
23
24
25
26
27
28
29
30
31
32
33
        in_channels=[256, 512, 1024, 2048],
        out_channels=64,
        num_outs=4),
    neck_3d=dict(type='OutdoorImVoxelNeck', in_channels=64, out_channels=256),
    bbox_head=dict(
        type='Anchor3DHead',
        num_classes=1,
        in_channels=256,
        feat_channels=256,
        use_direction_classifier=True,
        anchor_generator=dict(
            type='AlignedAnchor3DRangeGenerator',
            ranges=[[-0.16, -39.68, -1.78, 68.96, 39.68, -1.78]],
34
            sizes=[[3.9, 1.6, 1.56]],
35
36
37
38
39
            rotations=[0, 1.57],
            reshape_out=True),
        diff_rad_by_sin=True,
        bbox_coder=dict(type='DeltaXYZWLHRBBoxCoder'),
        loss_cls=dict(
Tai-Wang's avatar
Tai-Wang committed
40
            type='mmdet.FocalLoss',
41
42
43
44
            use_sigmoid=True,
            gamma=2.0,
            alpha=0.25,
            loss_weight=1.0),
Tai-Wang's avatar
Tai-Wang committed
45
46
        loss_bbox=dict(
            type='mmdet.SmoothL1Loss', beta=1.0 / 9.0, loss_weight=2.0),
47
        loss_dir=dict(
Tai-Wang's avatar
Tai-Wang committed
48
49
            type='mmdet.CrossEntropyLoss', use_sigmoid=False,
            loss_weight=0.2)),
50
51
52
53
54
55
56
    n_voxels=[216, 248, 12],
    anchor_generator=dict(
        type='AlignedAnchor3DRangeGenerator',
        ranges=[[-0.16, -39.68, -3.08, 68.96, 39.68, 0.76]],
        rotations=[.0]),
    train_cfg=dict(
        assigner=dict(
Tai-Wang's avatar
Tai-Wang committed
57
58
            type='Max3DIoUAssigner',
            iou_calculator=dict(type='mmdet3d.BboxOverlapsNearest3D'),
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
            pos_iou_thr=0.6,
            neg_iou_thr=0.45,
            min_pos_iou=0.45,
            ignore_iof_thr=-1),
        allowed_border=0,
        pos_weight=-1,
        debug=False),
    test_cfg=dict(
        use_rotate_nms=True,
        nms_across_levels=False,
        nms_thr=0.01,
        score_thr=0.1,
        min_bbox_size=0,
        nms_pre=100,
        max_num=50))

dataset_type = 'KittiDataset'
data_root = 'data/kitti/'
class_names = ['Car']
input_modality = dict(use_lidar=False, use_camera=True)
point_cloud_range = [0, -39.68, -3, 69.12, 39.68, 1]
Tai-Wang's avatar
Tai-Wang committed
80
81
82
83
84
85
86
87
88
89
90
91
92
93
metainfo = dict(CLASSES=class_names)

# file_client_args = dict(backend='disk')
# Uncomment the following if use ceph or other file clients.
# See https://mmcv.readthedocs.io/en/latest/api.html#mmcv.fileio.FileClient
# for more details.
file_client_args = dict(
    backend='petrel',
    path_mapping=dict({
        './data/kitti/':
        's3://openmmlab/datasets/detection3d/kitti/',
        'data/kitti/':
        's3://openmmlab/datasets/detection3d/kitti/'
    }))
94
95
96

train_pipeline = [
    dict(type='LoadAnnotations3D'),
97
    dict(type='LoadImageFromFileMono3D'),
98
99
    dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5),
    dict(
Tai-Wang's avatar
Tai-Wang committed
100
101
        type='RandomResize', scale=[(1173, 352), (1387, 416)],
        keep_ratio=True),
102
    dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range),
Tai-Wang's avatar
Tai-Wang committed
103
    dict(type='Pack3DDetInputs', keys=['img', 'gt_bboxes_3d', 'gt_labels_3d'])
104
105
]
test_pipeline = [
106
    dict(type='LoadImageFromFileMono3D'),
Tai-Wang's avatar
Tai-Wang committed
107
108
    dict(type='Resize', scale=(1280, 384), keep_ratio=True),
    dict(type='Pack3DDetInputs', keys=['img'])
109
110
]

Tai-Wang's avatar
Tai-Wang committed
111
112
113
114
115
116
train_dataloader = dict(
    batch_size=4,
    num_workers=4,
    persistent_workers=True,
    sampler=dict(type='DefaultSampler', shuffle=True),
    dataset=dict(
117
118
119
120
121
        type='RepeatDataset',
        times=3,
        dataset=dict(
            type=dataset_type,
            data_root=data_root,
Tai-Wang's avatar
Tai-Wang committed
122
123
            ann_file='kitti_infos_train.pkl',
            data_prefix=dict(img='training/image_2'),
124
125
            pipeline=train_pipeline,
            modality=input_modality,
Tai-Wang's avatar
Tai-Wang committed
126
127
128
129
130
131
132
133
134
            test_mode=False,
            metainfo=metainfo)))
val_dataloader = dict(
    batch_size=1,
    num_workers=1,
    persistent_workers=True,
    drop_last=False,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=dict(
135
136
        type=dataset_type,
        data_root=data_root,
Tai-Wang's avatar
Tai-Wang committed
137
138
        ann_file='kitti_infos_val.pkl',
        data_prefix=dict(img='training/image_2'),
139
140
        pipeline=test_pipeline,
        modality=input_modality,
Tai-Wang's avatar
Tai-Wang committed
141
142
143
144
145
146
147
148
149
        test_mode=True,
        metainfo=metainfo))
test_dataloader = val_dataloader

val_evaluator = dict(
    type='KittiMetric',
    ann_file=data_root + 'kitti_infos_val.pkl',
    metric='bbox')
test_evaluator = val_evaluator
150

Tai-Wang's avatar
Tai-Wang committed
151
152
153
154
# optimizer
optim_wrapper = dict(
    type='OptimWrapper',
    optimizer=dict(type='AdamW', lr=0.0001, weight_decay=0.0001),
155
    paramwise_cfg=dict(
Tai-Wang's avatar
Tai-Wang committed
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
        custom_keys={'backbone': dict(lr_mult=0.1, decay_mult=1.0)}),
    clip_grad=dict(max_norm=35., norm_type=2))
param_scheduler = [
    dict(
        type='MultiStepLR',
        begin=0,
        end=12,
        by_epoch=True,
        milestones=[8, 11],
        gamma=0.1)
]

# hooks
default_hooks = dict(
    timer=dict(type='IterTimerHook'),
    logger=dict(type='LoggerHook', interval=50),
    param_scheduler=dict(type='ParamSchedulerHook'),
    checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=1),
    sampler_seed=dict(type='DistSamplerSeedHook'),
)

# training schedule for 2x
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=12, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')

# runtime
default_scope = 'mmdet3d'

env_cfg = dict(
    cudnn_benchmark=False,
    mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),
    dist_cfg=dict(backend='nccl'),
)
190
191
192

log_level = 'INFO'
load_from = None
Tai-Wang's avatar
Tai-Wang committed
193
194
195
resume = False
dist_params = dict(backend='nccl')
find_unused_parameters = True  # only 1 of 4 FPN outputs is used