搭建自己的目标检测环境,模型配置,数据配置 MMdetection

数据标注

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • w :开始选择区域
  • a:上一张图片
  • d:下一张图片

MMDetection

项目下载

在这里插入图片描述

环境创建

# 创建conda
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab

# pytorch 安装 # 也可以直接迁移一个环境conda create -n New --clone Old

conda install pytorch torchvision -c pytorch # conda install pytorch cudatoolkit=10.1 torchvision -c pytorch

# 环境安装
pip install openmim
mim install mmdet

# 报错处理,安装验证等详见 https://github.com/open-mmlab/mmdetection/blob/master/docs/zh_cn/get_started.md/#Installation

简单示例

在这里插入图片描述

#%%

from mmdet.apis import init_detector, inference_detector, show_result_pyplot
import mmcv

#%% 需要从url中下载pth文件

config_file = '../configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# download the checkpoint from model zoo and put it in `checkpoints/`
# url: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
checkpoint_file = '../checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'

#%%

# build the model from a config file and a checkpoint file
model = init_detector(config_file, checkpoint_file, device='cuda:0')

#%%

# test a single image
img = 'demo.jpg'
result = inference_detector(model, img)

#%%

# show the results
show_result_pyplot(model, img, result)

有关数据准备的说明

在这里插入图片描述

COCO格式数据集

在这里插入图片描述

 {
            "id": 19, #  
            "width": 1280,
            "height": 720,
            "file_name": "013351.jpg", # 文件名称
            "license": "",
            "flickr_url": "",
            "coco_url": "",
            "date_captured": ""
        },

配置文件

  • 超级多的配置文件,config中包含所有,训练时只需要运行train语句即可

在这里插入图片描述

  • 打开fast-rcnn的一个配置文件
    在这里插入图片描述

模型配置

比如:fastrcnn引用了’…/base/models/fast_rcnn_r50_fpn.py’
在这里插入图片描述
…/base/models/fast_rcnn_r50_fpn.py的配置为:

# model settings
model = dict(  
    type='FastRCNN',
    backbone=dict(  # 去model文件夹里的backbone文件夹
        type='ResNet',# __init__文件里登记了type
        depth=50,# 以下就是模型的参数
        num_stages=4,
        out_indices=(0, 1, 2, 3),
        frozen_stages=1,
        norm_cfg=dict(type='BN', requires_grad=True),
        norm_eval=True,
        style='pytorch',
        init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')),
    neck=dict(
        type='FPN',
        in_channels=[256, 512, 1024, 2048],
        out_channels=256,
        num_outs=5),
    roi_head=dict(
        type='StandardRoIHead',
        bbox_roi_extractor=dict(
            type='SingleRoIExtractor',
            roi_layer=dict(type='RoIAlign', output_size=7, sampling_ratio=0),
            out_channels=256,
            featmap_strides=[4, 8, 16, 32]),
        bbox_head=dict(
            type='Shared2FCBBoxHead',
            in_channels=256,
            fc_out_channels=1024,
            roi_feat_size=7,
            num_classes=80,
            bbox_coder=dict(
                type='DeltaXYWHBBoxCoder',
                target_means=[0., 0., 0., 0.],
                target_stds=[0.1, 0.1, 0.2, 0.2]),
            reg_class_agnostic=False,
            loss_cls=dict(
                type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
            loss_bbox=dict(type='L1Loss', loss_weight=1.0))),
    # model training and testing settings
    train_cfg=dict(
        rcnn=dict(
            assigner=dict(
                type='MaxIoUAssigner',
                pos_iou_thr=0.5,
                neg_iou_thr=0.5,
                min_pos_iou=0.5,
                match_low_quality=False,
                ignore_iof_thr=-1),
            sampler=dict(
                type='RandomSampler',
                num=512,
                pos_fraction=0.25,
                neg_pos_ub=-1,
                add_gt_as_proposals=True),
            pos_weight=-1,
            debug=False)),
    test_cfg=dict(
        rcnn=dict(
            score_thr=0.05,
            nms=dict(type='nms', iou_threshold=0.5),
            max_per_img=100)))

在这里插入图片描述
在这里插入图片描述

数据配置

在这里插入图片描述

data = dict(
    samples_per_gpu=2,# 每个gpu上的batch_size 总batch= samples_per_gpu* numbergpu
    workers_per_gpu=2,# 一个GPU几个进程加载数据
    train=dict(
        proposal_file=data_root + 'proposals/rpn_r50_fpn_1x_train2017.pkl',
        pipeline=train_pipeline),
    val=dict(
        proposal_file=data_root + 'proposals/rpn_r50_fpn_1x_val2017.pkl',
        pipeline=test_pipeline),
    test=dict(
        proposal_file=data_root + 'proposals/rpn_r50_fpn_1x_val2017.pkl',
        pipeline=test_pipeline))

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

最基础的coco配置

在这里插入图片描述

# dataset settings
dataset_type = 'CocoDataset'# 那种数据集类型
data_root = 'data/coco/'# 数据路径 
img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
 
 # train的数据处理   
train_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='LoadAnnotations', with_bbox=True),
    dict(type='Resize', img_scale=(1333, 800), keep_ratio=True),# 保持宽高比 1333, 800是大小的限制,不是resize到的目标大小
    dict(type='RandomFlip', flip_ratio=0.5),
    dict(type='Normalize', **img_norm_cfg),
    dict(type='Pad', size_divisor=32),
    dict(type='DefaultFormatBundle'),
    dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),# 训练时需要收集的数据信息
]
 # test的数据处理
test_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(
        type='MultiScaleFlipAug',
        img_scale=(1333, 800),
        flip=False,
        transforms=[
            dict(type='Resize', keep_ratio=True),
            dict(type='RandomFlip'),
            dict(type='Normalize', **img_norm_cfg),
            dict(type='Pad', size_divisor=32),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='Collect', keys=['img']),
        ])
]
data = dict(
    samples_per_gpu=2,
    workers_per_gpu=2,
    train=dict(
        type=dataset_type,
        ann_file=data_root + 'annotations/instances_train2017.json',
        img_prefix=data_root + 'train2017/',
        pipeline=train_pipeline),
    val=dict(
        type=dataset_type, # 这里就用到了dataset_type
        ann_file=data_root + 'annotations/instances_val2017.json',
        img_prefix=data_root + 'val2017/',
        pipeline=test_pipeline),
    test=dict(
        type=dataset_type,
        ann_file=data_root + 'annotations/instances_val2017.json',
        img_prefix=data_root + 'val2017/',
        pipeline=test_pipeline))
evaluation = dict(interval=1, metric='bbox')# 验证的间隔,每训练一个epoch就验证一次 , 评测的标准是 bbox
ann_file

训练设置

 # model training and testing settings
    train_cfg=dict(
        rcnn=dict(
            assigner=dict(
                type='MaxIoUAssigner',
                pos_iou_thr=0.5,
                neg_iou_thr=0.5,
                min_pos_iou=0.5,
                match_low_quality=False,
                ignore_iof_thr=-1),
            sampler=dict(
                type='RandomSampler',
                num=512,
                pos_fraction=0.25,
                neg_pos_ub=-1,
                add_gt_as_proposals=True),
            pos_weight=-1,
            debug=False)),
    test_cfg=dict(
        rcnn=dict(
            score_thr=0.05,
            nms=dict(type='nms', iou_threshold=0.5),
            max_per_img=100)))

参考与更多

在这里插入图片描述
https://www.bilibili.com/video/BV1Hp4y1y788?

MMDetection中文文档—详解
MMDetection中文文档—1.安 装
MMDetection中文文档—2.入门

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
配置mmdetection环境的步骤如下: 1. 首先,从mmdetection的GitHub页面下载2.28.2版本的代码\[1\]。 2. 修改对应文件的依赖,将pycocotools改为pycocotools-windows。 3. 进入mmdetection文件夹,并执行命令python setup.py install来进行安装\[1\]。 4. 检查环境变量设置,确保根据自己的conda/miniconda实际安装位置进行修改。 5. 验证是否安装并配置成功。 6. 可能还需要在命令提示符中初始化conda,使用命令conda init cmd.exe\[2\]。 7. 配置虚拟环境并安装所需的环境\[2\]。 8. 安装mmengine和mmcv依赖,使用命令pip install -U "openmim==0.3.7" mim install "mmengine==0.7.1" mim install "mmcv==2.0.0"。 9. 删除之前的mmdetection文件夹,然后使用git clone命令克隆tutorials分支的mmdetection代码\[3\]。 10. 进入mmdetection文件夹,并执行命令pip install -e .来安装mmdetection。 这样就完成了mmdetection环境配置。请根据具体情况进行操作。 #### 引用[.reference_title] - *1* *2* [MMDetection环境配置(Window)](https://blog.csdn.net/qq_21904447/article/details/129906832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MMDetection环境配置](https://blog.csdn.net/travel_66/article/details/131156546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值