MMDetection

什么是MMDetection

MMDetection实际上是一个用于目标检测的工具包,面向深度学习时代的。

任务支持

目标检测

实例分割

覆盖广泛

440+个预训练模型

60+篇论文复现

常用学术数据集

算法丰富

两阶段检测器

一阶段检测器

级联检测器

无锚框检测器

Transformer

使用方便

训练工具

测试工具

推理API

MMDetection环境搭建

MMDetection_第1张图片

 MMCV是所有这个OpenMMLab系列包括MMDetection,MMClassification等的各种东西的一个基础的组件,就是你用什么你都得装这个。

安装流程

参考:

开始你的第一步 — MMDetection 3.3.0 文档

步骤 0. 使用 MIM 安装 MMEngine 和 MMCV。

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"

 步骤 1. 安装 MMDetection。

方案 b:如果你将 mmdet 作为依赖或第三方 Python 包,使用 MIM 安装:

!mim install mmdet

验证

import mmdet

mmdet.__version__

MMDetection 可以做什么

MMDetection提供400余个性优良的预训练模型,开箱即用,几行Python API即可调用强大的检测能力,几行Python API即可调用强大的检测能力。

MMDetection涵盖 60余个目标检测算法,并提供方便易用的工具,经过简单的配置文件改写和调参就可以训练自己的目标检测工具。

我们想用这些模型就可以从这个地方去点击它的链接就可以直接下载。

https://github.com/open-mmlab/mmdetection/tree/main/configs/mask_rcnn

 MMDetection_第2张图片

AP:检测里面用来衡量指标的东西,满分是100分,最差是0分,越大越好 

 也可以通过这行代码区搜索一下mmdetection里的模型

!mim search mmdet --model maskrcnn
!mim search mmdet --model 'mask r-cnn'

MMDetection_第3张图片

 搜索出来了

MMDetection_第4张图片

!mim download mmdet --config mask-rcnn_r50_fpn_2x_coco --dest .

 运行命令后,当前目录下多了两个文件,一个叫配置文件.py,一个叫参数文件。

怎么用它呢?

from mmdet.apis import init_detector,inference_detector,show_result_pyplot
config_file = ''

 不知道init_detector需要传递哪些参数

MMDetection_第5张图片

设置参数信息

config_file = 'mask-rcnn_r50_fpn_2x_coco.py'
checkpoint_file = 'mask_rcnn_r50_fpn_2x_coco_bbox_mAP-0.392__segm_mAP-0.354_20200505_003907-3e542a40.pth'

了解一下返回的是什么模型

MMDetection_第6张图片

model = init_detector(config_file,checkpoint_file)

result = inference_detector(model,'demo.jpg')
import mmcv
from mmdet.registry import VISUALIZERS
image = mmcv.imread('demo.jpg')
# init the visualizer(execute this block only once)
visualizer = VISUALIZERS.build(model.cfg.visualizer)
# the dataset_meta is loaded from the checkpoint and
# then pass to the model in init_detector
visualizer.dataset_meta = model.dataset_meta

# show the results
visualizer.add_datasample(
    'demo.jpg',
    image,
    data_sample=result,
    draw_gt=False,
    wait_time=0,
    out_file='outputs/result.png' # optionally, write to output file
)
visualizer.show()

MMDetection_第7张图片

参考链接

https://github.com/open-mmlab/mmdetection/issues/10380

https://github.com/open-mmlab/mmdetection/issues/10829

# Note : Show_result_pyplot was removed after mmdet version 2.0. OpenCV imshow is used instead.
# import mmdet.apis module
from mmdet.apis import init_detector, inference_detector
from mmdet.registry import VISUALIZERS
import cv2
import mmcv

# path to model file
config_file = 'rtmdet_tiny_8xb32-300e_coco.py'

# path to weight file
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'

# create model and load weights
model = init_detector(config_file, checkpoint_file, device='cpu')

# init visualizer
visualizer = VISUALIZERS.build(model.cfg.visualizer)

# the dataset_meta is loaded from the checkpoint and
# then pass to the model in init_detector
visualizer.dataset_meta = model.dataset_meta

# path to the image you want to test
img = 'demo/demo.jpg'
img = cv2.imread(img)

# apply the model to the image and get the output
result = inference_detector(model, img)

img = mmcv.imconvert(img, 'bgr', 'rgb')
visualizer.add_datasample(
name='result',
image=img,
data_sample=result,
draw_gt=False,
pred_score_thr=0.3,
show=False)

img = visualizer.get_image()
img = mmcv.imconvert(img, 'bgr', 'rgb')
cv2.imshow('result', img)

cv2.waitKey(0)

配置文件:

深度学习模型的训练涉及几个方面:

  • 模型结构:模型有几层、每层多少通道数等等
  • 数据集:用什么数据训练模型:数据集划分、数据文件路径、数据增强策略等等
  • 训练策略:梯度下降算法、学习率参数、batch_size、训练总轮次、学习率变化策略等等
  • 运行时:GPU、分布式环境配置等等
  • 一些辅助功能:如打印日志、定时保存checkpoint等等

在MMDetection (及其他 OpenMMLab 项目中),所有这些项目都涵盖在一个配置文件中,一个配
置文件定义了一个完整的训练过程

  • model字段定义模型
  • data字段定义数据
  • optimizer、Ir config 等字段定义训练策略
  • load from字段定义与训练模型的参数文件

训练好的模型是什么:

这个pth文件实际上就是一个Pytorch的一个参数文件,它就储存了我们训练好的所有模型的参数。

MMDetection配置文件的运作方式

MMDetection_第8张图片

训练自己的检测模型

通常基于微调训练

使用基于COCO预训练的检测模型作为梯度下降的“起点

使用自己的数据进行“微调训练”通常需要降低学习率 

实际上训练的过程就是相当于基于损失函数去做梯度下降,寻找最小梯度,使得损失函数最小的这样一种参数的过程

具体到MMDetection

MMDetection_第9张图片

新建一个继承文件

base

把原来的配置文件的名字贴过来,意思是基于这个配置文件作为配置文件,然后把它的已有的配置全部给导出来。MMDetection在读取配置文件的时候就会找到这里面的每个项目,然后去读入进来。

MMDetection_第10张图片

 版本不匹配

pip uninstall mmcv

pip install mmcv==1.4.0

from mmcv import Config

config = Config.fromfile('main.py') #从我们刚才定义好的只有一行的配置文件去把配置给它读进来
print(config.pretty_text) # 查看配置文件信息

运行

mim train mmdet main.py

main.py文件时我们继承了官方配置文件后的配置文件

COCO数据集格式

MMDetection_第11张图片

MMDetection_第12张图片

 "images":数据集里全部的图像的信息

"annotations":全部标注的信息

“categories”:全部物体类别的信息

通常使用SGD算法配合不同的学习策略:

MMDetection_第13张图片

你可能感兴趣的:(MMdDetection,MMDetection)