{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Check existed package versions","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-06-25T04:58:55.658077Z","iopub.execute_input":"2023-06-25T04:58:55.658634Z","iopub.status.idle":"2023-06-25T04:58:59.331774Z","shell.execute_reply.started":"2023-06-25T04:58:55.6586Z","shell.execute_reply":"2023-06-25T04:58:59.330642Z"}}},{"cell_type":"code","source":"# !pip freeze | grep torch\n\n# # pytorch-ignite==0.4.12\n# # pytorch-lightning==2.0.3\n# # torch==2.0.0+cpu\n# # torchaudio==2.0.1+cpu\n# # torchdata==0.6.0\n# # torchinfo==1.8.0\n# # torchmetrics==0.11.4\n# # torchtext==0.15.1+cpu\n# # torchvision==0.15.1+cpu","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:05.715405Z","iopub.execute_input":"2023-07-21T10:20:05.716027Z","iopub.status.idle":"2023-07-21T10:20:05.722106Z","shell.execute_reply.started":"2023-07-21T10:20:05.715985Z","shell.execute_reply":"2023-07-21T10:20:05.721130Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip freeze | grep torch\n# pytorch-ignite==0.4.12\n# pytorch-lightning==2.0.3\n# torch @ file:///tmp/torch/torch-2.0.0-cp310-cp310-linux_x86_64.whl#sha256=3a7abcaa5ae70fd4eb83c2cc43abc8ba94995316c6433e171d7454f107d41b58\n# torchaudio @ file:///tmp/torch/torchaudio-2.0.1-cp310-cp310-linux_x86_64.whl#sha256=83e258b68459f1ff64301c19c2fc791a692fd372271abeef8414854aafd03b06\n# torchdata==0.6.0\n# torchinfo==1.8.0\n# torchmetrics==0.11.4\n# torchtext @ file:///tmp/torch/torchtext-0.15.1-cp310-cp310-linux_x86_64.whl#sha256=110ca71f44e505c040ea2f41dcaf798cd7de1b55cbedaa6687b9e21eec759844\n# torchvision @ file:///tmp/torch/torchvision-0.15.1-cp310-cp310-linux_x86_64.whl#sha256=3b0e4e01ab713c145b7e20684eb79f983e75c8c13034901f21e3e8a36a1b3292","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:05.726484Z","iopub.execute_input":"2023-07-21T10:20:05.727220Z","iopub.status.idle":"2023-07-21T10:20:10.483062Z","shell.execute_reply.started":"2023-07-21T10:20:05.727192Z","shell.execute_reply":"2023-07-21T10:20:10.481594Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!python -V","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:10.485605Z","iopub.execute_input":"2023-07-21T10:20:10.485990Z","iopub.status.idle":"2023-07-21T10:20:11.662526Z","shell.execute_reply.started":"2023-07-21T10:20:10.485953Z","shell.execute_reply":"2023-07-21T10:20:11.661202Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!nvcc -V","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:11.666464Z","iopub.execute_input":"2023-07-21T10:20:11.667477Z","iopub.status.idle":"2023-07-21T10:20:12.855521Z","shell.execute_reply.started":"2023-07-21T10:20:11.667433Z","shell.execute_reply":"2023-07-21T10:20:12.854218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!ls /kaggle/working","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:12.859152Z","iopub.execute_input":"2023-07-21T10:20:12.859554Z","iopub.status.idle":"2023-07-21T10:20:13.926939Z","shell.execute_reply.started":"2023-07-21T10:20:12.859517Z","shell.execute_reply":"2023-07-21T10:20:13.925581Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Install mmdet packages","metadata":{}},{"cell_type":"code","source":"!pip download openmim==0.3.9 -d ./openmim\n!pip download mmengine==0.8.2 -d ./mmengine","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:13.930024Z","iopub.execute_input":"2023-07-21T10:20:13.930727Z","iopub.status.idle":"2023-07-21T10:20:27.707781Z","shell.execute_reply.started":"2023-07-21T10:20:13.930685Z","shell.execute_reply":"2023-07-21T10:20:27.706499Z"},"scrolled":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install ./openmim/openmim-0.3.9-py2.py3-none-any.whl > /dev/null 2>&1\n!pip install ./mmengine/mmengine-0.8.2-py3-none-any.whl > /dev/null 2>&1","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:27.709475Z","iopub.execute_input":"2023-07-21T10:20:27.709796Z","iopub.status.idle":"2023-07-21T10:20:51.770450Z","shell.execute_reply.started":"2023-07-21T10:20:27.709757Z","shell.execute_reply":"2023-07-21T10:20:51.769168Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install ./openmim/openmim-0.3.9-py2.py3-none-any.whl","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:20:51.772361Z","iopub.execute_input":"2023-07-21T10:20:51.773202Z","iopub.status.idle":"2023-07-21T10:21:03.383160Z","shell.execute_reply.started":"2023-07-21T10:20:51.773162Z","shell.execute_reply":"2023-07-21T10:21:03.381971Z"},"scrolled":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip download mmcv==2.0.0rc4 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.0/index.html -d ./mmcv","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:21:03.386173Z","iopub.execute_input":"2023-07-21T10:21:03.386548Z","iopub.status.idle":"2023-07-21T10:21:17.065441Z","shell.execute_reply.started":"2023-07-21T10:21:03.386517Z","shell.execute_reply":"2023-07-21T10:21:17.064282Z"},"scrolled":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip wheel --wheel-dir=./mmcvwheel ./mmcv/mmcv-2.0.0rc4.tar.gz","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-07-21T10:21:17.067253Z","iopub.execute_input":"2023-07-21T10:21:17.067993Z","iopub.status.idle":"2023-07-21T10:51:03.490189Z","shell.execute_reply.started":"2023-07-21T10:21:17.067954Z","shell.execute_reply":"2023-07-21T10:51:03.488979Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# !pip install ./mmcv/mmcv-2.0.0rc4.tar.gz\n!pip install ./mmcvwheel/mmcv-2.0.0rc4-cp310-cp310-linux_x86_64.whl\n# !pip install /kaggle/input/hong-mmdetpkgs/mmcvwheel/mmcv-2.0.0rc4-cp310-cp310-linux_x86_64.whl","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:51:03.494881Z","iopub.execute_input":"2023-07-21T10:51:03.495219Z","iopub.status.idle":"2023-07-21T10:51:15.166958Z","shell.execute_reply.started":"2023-07-21T10:51:03.495190Z","shell.execute_reply":"2023-07-21T10:51:15.165806Z"},"scrolled":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip download pycocotools==2.0.6 -d ./pycocotools","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:51:15.169034Z","iopub.execute_input":"2023-07-21T10:51:15.169450Z","iopub.status.idle":"2023-07-21T10:51:37.278776Z","shell.execute_reply.started":"2023-07-21T10:51:15.169412Z","shell.execute_reply":"2023-07-21T10:51:37.277597Z"},"scrolled":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip wheel --wheel-dir=./pycocotoolswheel ./pycocotools/pycocotools-2.0.6.tar.gz","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:51:37.281156Z","iopub.execute_input":"2023-07-21T10:51:37.281555Z","iopub.status.idle":"2023-07-21T10:52:05.295904Z","shell.execute_reply.started":"2023-07-21T10:51:37.281514Z","shell.execute_reply":"2023-07-21T10:52:05.294785Z"},"scrolled":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install ./pycocotoolswheel/pycocotools-2.0.6-cp310-cp310-linux_x86_64.whl\n# !pip install /kaggle/input/hong-mmdetpkgs/pycocotoolswheel/pycocotools-2.0.6-cp310-cp310-linux_x86_64.whl","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:05.297824Z","iopub.execute_input":"2023-07-21T10:52:05.298201Z","iopub.status.idle":"2023-07-21T10:52:16.400137Z","shell.execute_reply.started":"2023-07-21T10:52:05.298165Z","shell.execute_reply":"2023-07-21T10:52:16.398939Z"},"scrolled":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip download mmdet==3.1.0 -d ./mmdet3.1","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:16.402177Z","iopub.execute_input":"2023-07-21T10:52:16.402584Z","iopub.status.idle":"2023-07-21T10:52:39.465297Z","shell.execute_reply.started":"2023-07-21T10:52:16.402546Z","shell.execute_reply":"2023-07-21T10:52:39.464177Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install ./mmdet3.1/mmdet-3.1.0-py3-none-any.whl","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:39.466897Z","iopub.execute_input":"2023-07-21T10:52:39.467272Z","iopub.status.idle":"2023-07-21T10:52:52.748463Z","shell.execute_reply.started":"2023-07-21T10:52:39.467235Z","shell.execute_reply":"2023-07-21T10:52:52.746620Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Test mmdet","metadata":{}},{"cell_type":"code","source":"import mmdet\nmmdet.__version__","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:52.750478Z","iopub.execute_input":"2023-07-21T10:52:52.750897Z","iopub.status.idle":"2023-07-21T10:52:54.675512Z","shell.execute_reply.started":"2023-07-21T10:52:52.750860Z","shell.execute_reply":"2023-07-21T10:52:54.674606Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%writefile rtmdet_tiny_8xb32-300e_coco.py\ndefault_scope = 'mmdet'\ndefault_hooks = dict(\n    timer=dict(type='IterTimerHook'),\n    logger=dict(type='LoggerHook', interval=50),\n    param_scheduler=dict(type='ParamSchedulerHook'),\n    checkpoint=dict(type='CheckpointHook', interval=10, max_keep_ckpts=3),\n    sampler_seed=dict(type='DistSamplerSeedHook'),\n    visualization=dict(type='DetVisualizationHook'))\nenv_cfg = dict(\n    cudnn_benchmark=False,\n    mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),\n    dist_cfg=dict(backend='nccl'))\nvis_backends = [dict(type='LocalVisBackend')]\nvisualizer = dict(\n    type='DetLocalVisualizer',\n    vis_backends=[dict(type='LocalVisBackend')],\n    name='visualizer')\nlog_processor = dict(type='LogProcessor', window_size=50, by_epoch=True)\nlog_level = 'INFO'\nload_from = None\nresume = False\ntrain_cfg = dict(\n    type='EpochBasedTrainLoop',\n    max_epochs=300,\n    val_interval=10,\n    dynamic_intervals=[(280, 1)])\nval_cfg = dict(type='ValLoop')\ntest_cfg = dict(type='TestLoop')\nparam_scheduler = [\n    dict(\n        type='LinearLR', start_factor=1e-05, by_epoch=False, begin=0,\n        end=1000),\n    dict(\n        type='CosineAnnealingLR',\n        eta_min=0.0002,\n        begin=150,\n        end=300,\n        T_max=150,\n        by_epoch=True,\n        convert_to_iter_based=True)\n]\noptim_wrapper = dict(\n    type='OptimWrapper',\n    optimizer=dict(type='AdamW', lr=0.004, weight_decay=0.05),\n    paramwise_cfg=dict(\n        norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True))\nauto_scale_lr = dict(enable=False, base_batch_size=16)\ndataset_type = 'CocoDataset'\ndata_root = 'data/coco/'\nbackend_args = None\ntrain_pipeline = [\n    dict(type='LoadImageFromFile', backend_args=None),\n    dict(type='LoadAnnotations', with_bbox=True),\n    dict(\n        type='CachedMosaic',\n        img_scale=(640, 640),\n        pad_val=114.0,\n        max_cached_images=20,\n        random_pop=False),\n    dict(\n        type='RandomResize',\n        scale=(1280, 1280),\n        ratio_range=(0.5, 2.0),\n        keep_ratio=True),\n    dict(type='RandomCrop', crop_size=(640, 640)),\n    dict(type='YOLOXHSVRandomAug'),\n    dict(type='RandomFlip', prob=0.5),\n    dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))),\n    dict(\n        type='CachedMixUp',\n        img_scale=(640, 640),\n        ratio_range=(1.0, 1.0),\n        max_cached_images=10,\n        random_pop=False,\n        pad_val=(114, 114, 114),\n        prob=0.5),\n    dict(type='PackDetInputs')\n]\ntest_pipeline = [\n    dict(type='LoadImageFromFile', backend_args=None),\n    dict(type='Resize', scale=(640, 640), keep_ratio=True),\n    dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))),\n    dict(\n        type='PackDetInputs',\n        meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',\n                   'scale_factor'))\n]\ntrain_dataloader = dict(\n    batch_size=32,\n    num_workers=10,\n    persistent_workers=True,\n    sampler=dict(type='DefaultSampler', shuffle=True),\n    batch_sampler=None,\n    dataset=dict(\n        type='CocoDataset',\n        data_root='data/coco/',\n        ann_file='annotations/instances_train2017.json',\n        data_prefix=dict(img='train2017/'),\n        filter_cfg=dict(filter_empty_gt=True, min_size=32),\n        pipeline=[\n            dict(type='LoadImageFromFile', backend_args=None),\n            dict(type='LoadAnnotations', with_bbox=True),\n            dict(\n                type='CachedMosaic',\n                img_scale=(640, 640),\n                pad_val=114.0,\n                max_cached_images=20,\n                random_pop=False),\n            dict(\n                type='RandomResize',\n                scale=(1280, 1280),\n                ratio_range=(0.5, 2.0),\n                keep_ratio=True),\n            dict(type='RandomCrop', crop_size=(640, 640)),\n            dict(type='YOLOXHSVRandomAug'),\n            dict(type='RandomFlip', prob=0.5),\n            dict(\n                type='Pad', size=(640, 640),\n                pad_val=dict(img=(114, 114, 114))),\n            dict(\n                type='CachedMixUp',\n                img_scale=(640, 640),\n                ratio_range=(1.0, 1.0),\n                max_cached_images=10,\n                random_pop=False,\n                pad_val=(114, 114, 114),\n                prob=0.5),\n            dict(type='PackDetInputs')\n        ],\n        backend_args=None),\n    pin_memory=True)\nval_dataloader = dict(\n    batch_size=5,\n    num_workers=10,\n    persistent_workers=True,\n    drop_last=False,\n    sampler=dict(type='DefaultSampler', shuffle=False),\n    dataset=dict(\n        type='CocoDataset',\n        data_root='data/coco/',\n        ann_file='annotations/instances_val2017.json',\n        data_prefix=dict(img='val2017/'),\n        test_mode=True,\n        pipeline=[\n            dict(type='LoadImageFromFile', backend_args=None),\n            dict(type='Resize', scale=(640, 640), keep_ratio=True),\n            dict(\n                type='Pad', size=(640, 640),\n                pad_val=dict(img=(114, 114, 114))),\n            dict(\n                type='PackDetInputs',\n                meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',\n                           'scale_factor'))\n        ],\n        backend_args=None))\ntest_dataloader = dict(\n    batch_size=5,\n    num_workers=10,\n    persistent_workers=True,\n    drop_last=False,\n    sampler=dict(type='DefaultSampler', shuffle=False),\n    dataset=dict(\n        type='CocoDataset',\n        data_root='data/coco/',\n        ann_file='annotations/instances_val2017.json',\n        data_prefix=dict(img='val2017/'),\n        test_mode=True,\n        pipeline=[\n            dict(type='LoadImageFromFile', backend_args=None),\n            dict(type='Resize', scale=(640, 640), keep_ratio=True),\n            dict(\n                type='Pad', size=(640, 640),\n                pad_val=dict(img=(114, 114, 114))),\n            dict(\n                type='PackDetInputs',\n                meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',\n                           'scale_factor'))\n        ],\n        backend_args=None))\nval_evaluator = dict(\n    type='CocoMetric',\n    ann_file='data/coco/annotations/instances_val2017.json',\n    metric='bbox',\n    format_only=False,\n    backend_args=None,\n    proposal_nums=(100, 1, 10))\ntest_evaluator = dict(\n    type='CocoMetric',\n    ann_file='data/coco/annotations/instances_val2017.json',\n    metric='bbox',\n    format_only=False,\n    backend_args=None,\n    proposal_nums=(100, 1, 10))\ntta_model = dict(\n    type='DetTTAModel',\n    tta_cfg=dict(nms=dict(type='nms', iou_threshold=0.6), max_per_img=100))\nimg_scales = [(640, 640), (320, 320), (960, 960)]\ntta_pipeline = [\n    dict(type='LoadImageFromFile', backend_args=None),\n    dict(\n        type='TestTimeAug',\n        transforms=[[{\n            'type': 'Resize',\n            'scale': (640, 640),\n            'keep_ratio': True\n        }, {\n            'type': 'Resize',\n            'scale': (320, 320),\n            'keep_ratio': True\n        }, {\n            'type': 'Resize',\n            'scale': (960, 960),\n            'keep_ratio': True\n        }],\n                    [{\n                        'type': 'RandomFlip',\n                        'prob': 1.0\n                    }, {\n                        'type': 'RandomFlip',\n                        'prob': 0.0\n                    }],\n                    [{\n                        'type': 'Pad',\n                        'size': (960, 960),\n                        'pad_val': {\n                            'img': (114, 114, 114)\n                        }\n                    }],\n                    [{\n                        'type':\n                        'PackDetInputs',\n                        'meta_keys':\n                        ('img_id', 'img_path', 'ori_shape', 'img_shape',\n                         'scale_factor', 'flip', 'flip_direction')\n                    }]])\n]\nmodel = dict(\n    type='RTMDet',\n    data_preprocessor=dict(\n        type='DetDataPreprocessor',\n        mean=[103.53, 116.28, 123.675],\n        std=[57.375, 57.12, 58.395],\n        bgr_to_rgb=False,\n        batch_augments=None),\n    backbone=dict(\n        type='CSPNeXt',\n        arch='P5',\n        expand_ratio=0.5,\n        deepen_factor=0.167,\n        widen_factor=0.375,\n        channel_attention=True,\n        norm_cfg=dict(type='SyncBN'),\n        act_cfg=dict(type='SiLU', inplace=True),\n        init_cfg=dict(\n            type='Pretrained',\n            prefix='backbone.',\n            checkpoint=\n            'https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-tiny_imagenet_600e.pth'\n        )),\n    neck=dict(\n        type='CSPNeXtPAFPN',\n        in_channels=[96, 192, 384],\n        out_channels=96,\n        num_csp_blocks=1,\n        expand_ratio=0.5,\n        norm_cfg=dict(type='SyncBN'),\n        act_cfg=dict(type='SiLU', inplace=True)),\n    bbox_head=dict(\n        type='RTMDetSepBNHead',\n        num_classes=80,\n        in_channels=96,\n        stacked_convs=2,\n        feat_channels=96,\n        anchor_generator=dict(\n            type='MlvlPointGenerator', offset=0, strides=[8, 16, 32]),\n        bbox_coder=dict(type='DistancePointBBoxCoder'),\n        loss_cls=dict(\n            type='QualityFocalLoss',\n            use_sigmoid=True,\n            beta=2.0,\n            loss_weight=1.0),\n        loss_bbox=dict(type='GIoULoss', loss_weight=2.0),\n        with_objectness=False,\n        exp_on_reg=False,\n        share_conv=True,\n        pred_kernel_size=1,\n        norm_cfg=dict(type='SyncBN'),\n        act_cfg=dict(type='SiLU', inplace=True)),\n    train_cfg=dict(\n        assigner=dict(type='DynamicSoftLabelAssigner', topk=13),\n        allowed_border=-1,\n        pos_weight=-1,\n        debug=False),\n    test_cfg=dict(\n        nms_pre=30000,\n        min_bbox_size=0,\n        score_thr=0.001,\n        nms=dict(type='nms', iou_threshold=0.65),\n        max_per_img=300))\ntrain_pipeline_stage2 = [\n    dict(type='LoadImageFromFile', backend_args=None),\n    dict(type='LoadAnnotations', with_bbox=True),\n    dict(\n        type='RandomResize',\n        scale=(640, 640),\n        ratio_range=(0.5, 2.0),\n        keep_ratio=True),\n    dict(type='RandomCrop', crop_size=(640, 640)),\n    dict(type='YOLOXHSVRandomAug'),\n    dict(type='RandomFlip', prob=0.5),\n    dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))),\n    dict(type='PackDetInputs')\n]\nmax_epochs = 300\nstage2_num_epochs = 20\nbase_lr = 0.004\ninterval = 10\ncustom_hooks = [\n    dict(\n        type='EMAHook',\n        ema_type='ExpMomentumEMA',\n        momentum=0.0002,\n        update_buffers=True,\n        priority=49),\n    dict(\n        type='PipelineSwitchHook',\n        switch_epoch=280,\n        switch_pipeline=[\n            dict(type='LoadImageFromFile', backend_args=None),\n            dict(type='LoadAnnotations', with_bbox=True),\n            dict(\n                type='RandomResize',\n                scale=(640, 640),\n                ratio_range=(0.5, 2.0),\n                keep_ratio=True),\n            dict(type='RandomCrop', crop_size=(640, 640)),\n            dict(type='YOLOXHSVRandomAug'),\n            dict(type='RandomFlip', prob=0.5),\n            dict(\n                type='Pad', size=(640, 640),\n                pad_val=dict(img=(114, 114, 114))),\n            dict(type='PackDetInputs')\n        ])\n]\ncheckpoint = 'https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-tiny_imagenet_600e.pth'\n","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:54.677486Z","iopub.execute_input":"2023-07-21T10:52:54.678166Z","iopub.status.idle":"2023-07-21T10:52:54.692570Z","shell.execute_reply.started":"2023-07-21T10:52:54.678126Z","shell.execute_reply":"2023-07-21T10:52:54.691578Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!wget https://download.openmmlab.com/mmdetection/v3.0/rtmdet/rtmdet_tiny_8xb32-300e_coco/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:54.693844Z","iopub.execute_input":"2023-07-21T10:52:54.694476Z","iopub.status.idle":"2023-07-21T10:52:57.273739Z","shell.execute_reply.started":"2023-07-21T10:52:54.694441Z","shell.execute_reply":"2023-07-21T10:52:57.272596Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!wget https://github.com/open-mmlab/mmdetection/blob/ecac3a77becc63f23d9f6980b2a36f86acd00a8a/demo/demo.jpg?raw=true -O ./demo.jpg","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:57.275814Z","iopub.execute_input":"2023-07-21T10:52:57.276281Z","iopub.status.idle":"2023-07-21T10:52:58.896423Z","shell.execute_reply.started":"2023-07-21T10:52:57.276238Z","shell.execute_reply":"2023-07-21T10:52:58.895280Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import mmcv\nfrom mmdet.registry import VISUALIZERS\nfrom mmdet.apis import init_detector, inference_detector\n\nconfig_file = './rtmdet_tiny_8xb32-300e_coco.py'\ncheckpoint_file = './rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'\nmodel = init_detector(config_file, checkpoint_file, device='cuda:0')  # or device='cuda:0'\n\n# inference\nimg = mmcv.imread('./demo.jpg')\nresult = inference_detector(model, img)\n\n# visualize result\nimg = mmcv.imconvert(img, 'bgr', 'rgb')\nvisualizer = VISUALIZERS.build(model.cfg.visualizer)\nvisualizer.dataset_meta = model.dataset_meta\nvisualizer.add_datasample(\n    'result',\n    img,\n    data_sample=result,\n    draw_gt=False,\n    show=False,\n    out_file='./output.jpg'\n)","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:52:58.898406Z","iopub.execute_input":"2023-07-21T10:52:58.898732Z","iopub.status.idle":"2023-07-21T10:53:20.940673Z","shell.execute_reply.started":"2023-07-21T10:52:58.898702Z","shell.execute_reply":"2023-07-21T10:53:20.939713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimg2 = mmcv.imread('./output.jpg')\nplt.figure(figsize=(15, 10))\nplt.imshow(mmcv.bgr2rgb(img2))\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-07-21T10:53:20.942450Z","iopub.execute_input":"2023-07-21T10:53:20.942843Z","iopub.status.idle":"2023-07-21T10:53:21.946809Z","shell.execute_reply.started":"2023-07-21T10:53:20.942807Z","shell.execute_reply":"2023-07-21T10:53:21.944971Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}