使用MMDetection进行目标检测、实例和全景分割

这篇具有很好参考价值的文章主要介绍了使用MMDetection进行目标检测、实例和全景分割。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MMDetection 是一个基于 PyTorch 的目标检测开源工具箱,它是 OpenMMLab 项目的一部分。包含以下主要特性:

  • 支持三个任务
    • 目标检测(Object Detection)是指分类并定位图片中物体的任务
    • 实例分割(Instance Segmentation)是指分类,分割图片物体的任务
    • 全景分割(Panoptic Segmentation)是统一了语义分割(对图像的每个像素进行分类)和实例分割(检测出对象实例并进行分割)的检测任务
  • 模块化设计以灵活支持 6 个数据集,57 种不同算法和丰富的数据增强,提供 450+ 个预训练模型
  • 支持数十个算法模型的部署

安装(目标检测)

使用下面的命令快速生成虚拟环境:

$ python -m venv venv
# Windows 下进入虚拟环境
$ venv/Scripts/activate

提前看下 MMDetection 和 MMCV 版本兼容性 里 PyTorch + MMDetection + MMCV 的匹配版本号,比如我当下看到的版本要求是:

  • PyTorch: 1.3+
  • MMDetection: 2.28.1
  • MMCV: >=1.3.17, <1.8.0

MMDetection 是基于 PyTorch 的检测框架,首先安装 torch 库:

$ pip install torch
$ pip install opencv-python
$ pip install torchvision

MMDetection 包括 MMDetection 和 MMCV,两者是一体的,需要安装 MMCV,按 安装 MMCV - 使用 mim 安装 的说明使用 mim(OpenMMLab项目的包管理工具)安装:

$ pip install openmim
$ mim install mmcv-full==1.7.1

然后再安装 MMDetection,(重要的事说两遍)提前看下 MMDetection 和 MMCV 版本兼容性 里 PyTorch + MMDetection + MMCV 的匹配版本号,选择合适的版本安装,建议直接用 mim 快速安装:

$ mim install mmdet==2.28.1

在 Windows 系统下,如果安装过程中遇到下面的异常:

$       error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
$       [end of output]
$ 
$   note: This error originates from a subprocess, and is likely not a problem with pip.
$   ERROR: Failed building wheel for pycocotools
$ Failed to build pycocotools
$ ERROR: Could not build wheels for pycocotools, which is required to install pyproject.toml-based projects

可以按照 《Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools"的解决办法》 提供的方法解决。

安装完成后,执行下面的 Python 代码(demo.py)验证是否正确安装了 MMDetection 和所需的环境:

import mmcv
from mmdet.apis import init_detector, inference_detector

# 一、指定模型的配置文件和 checkpoint 文件路径
# 下载 https://github.com/open-mmlab/mmdetection 项目并解压
# 把 mmdetection-master/configs/_base_ 文件夹复制到当前项目 configs/ 目录下
# 把 mmdetection-master/configs/faster_rcnn 文件夹复制到当前项目 configs/ 目录下
config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# 从 model zoo 下载 checkpoint 并放在 `checkpoints/faster_rcnn/` 文件下
# 网址为: http://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/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'

# 二、根据配置文件和 checkpoint 文件构建模型
# 有 GPU 时使用 device = 'cuda:0'
device = 'cpu'
# 初始化检测器
model = init_detector(config_file, checkpoint_file, device=device)

# 三、测试单张图片并展示结果
# 图像地址: https://github.com/open-mmlab/mmdetection/blob/master/demo/demo.jpg
img = mmcv.imread('demo/demo.jpg')
# 推理演示图像, 结果是一个 `numpy.ndarray` 列表
result = inference_detector(model, img)
# 将结果可视化
model.show_result(img, result)
# 将可视化结果保存为图片
model.show_result(img, result, out_file='demo/demo_result.jpg')

这个时候的项目目录结构如下:

使用MMDetection进行目标检测、实例和全景分割

如果成功安装 MMDetection,则上面的代码可以完整地运行,并顺利生成下面的 demo/demo_result.jpg 文件:

使用MMDetection进行目标检测、实例和全景分割

实例分割

实例分割(Instance Segmentation)是指分类,分割图片物体的任务。打开 MMDetection - 模型库/MMDetection 并选择 Instance Segmentation 任务类型:

使用MMDetection进行目标检测、实例和全景分割

挑选一个 AP(平均精确度)值 较高,而且年份比较新的算法,比如当下看到的算法名是 SCNet(算法 RF-Next 需要 GPU 才能跑起来),就在前面下载好的 mmdetection-master/configs/ 目录下找到对应的 scnet 文件夹及其依赖的 htc 文件夹,并将它们复制到当前项目 configs/ 目录下。点击 算法名 进入算法详情页面:

使用MMDetection进行目标检测、实例和全景分割

同样的,挑选一个 AP(平均精确度)值 较高的模型,这里先复制 模型名称 的文本,然后在 configs/scnet/metafile.yml 文件中搜索这个文本:

使用MMDetection进行目标检测、实例和全景分割

搜索完成可以获得两个配置及参数:

  • Config: 模型的配置文件路径(config_file = 'xxx.py'
  • Weights: 模型的下载网址,通过这个地址下载模型文件(checkpoint_file = 'xxx.pth'

完成上面的准备工作后,执行下面的 Python 代码(demo.py)验证是否可以对图像进行分类、分割物体目标的任务:

import mmcv
from mmdet.apis import init_detector, inference_detector

print('指定模型的配置文件和checkpoint文件路径')
config_file = 'configs/scnet/scnet_r50_fpn_1x_coco.py'
checkpoint_file = 'checkpoints/scnet/scnet_r50_fpn_1x_coco-c3f09857.pth'
print('根据配置文件和checkpoint文件构建模型')
device = 'cpu'
model = init_detector(config_file, checkpoint_file, device=device)
print('测试单张图片并展示结果')
img = mmcv.imread('demo/demo.jpg')
result = inference_detector(model, img)
model.show_result(img, result)
model.show_result(img, result, out_file='demo/demo_result.jpg')

这个时候的项目目录结构如下:

使用MMDetection进行目标检测、实例和全景分割

如果上面代码中 MMDetection 的实例分割任务可以完整地运行,就会顺利生成下面的 demo/demo_result.jpg 文件:

使用MMDetection进行目标检测、实例和全景分割

全景分割

全景分割(Panoptic Segmentation)是统一了语义分割(对图像的每个像素进行分类)和实例分割(检测出对象实例并进行分割)的检测任务。同前面一样,打开 MMDetection - 模型库/MMDetection 并选择 Panoptic Segmentation 任务类型:

使用MMDetection进行目标检测、实例和全景分割

这里的算法目前就只有一个,只能选择 PanopticFPN 算法,还是在前面下载好的 mmdetection-master/configs/ 目录下找到对应的 panoptic_fpn 文件夹,并将其复制到当前项目 configs/ 目录下。点击 算法名 进入算法详情页面:

使用MMDetection进行目标检测、实例和全景分割

再从中选一个模型,复制 模型名称 的文本,到 configs/panoptic_fpn/metafile.yml 文件中搜索:

使用MMDetection进行目标检测、实例和全景分割

搜索完成可以获得 Config(config_file = 'xxx.py')和 Weights 下载后文件路径(checkpoint_file = 'xxx.pth')配置参数。然后执行下面的 Python 代码(demo.py)验证是否可以对图像进行对每个像素进行分类同时检测出对象实例并进行分割的任务:

import mmcv
from mmdet.apis import init_detector, inference_detector

# 上面代码没有变,就下面两个变量的值改一下
config_file = 'configs/panoptic_fpn/panoptic_fpn_r50_fpn_1x_coco.py'
checkpoint_file = 'checkpoints/panoptic_fpn/panoptic_fpn_r50_fpn_1x_coco_20210821_101153-9668fd13.pth'
# 下面代码也没有变
device = 'cpu'
model = init_detector(config_file, checkpoint_file, device=device)
img = mmcv.imread('demo/demo.jpg')
result = inference_detector(model, img)
model.show_result(img, result)
model.show_result(img, result, out_file='demo/demo_result.jpg')

这时项目的目录结构如下:

使用MMDetection进行目标检测、实例和全景分割

如果上面代码里的全景分割任务可以顺利运行,就会生成下面的 demo/demo_result.jpg 文件:

使用MMDetection进行目标检测、实例和全景分割

实践完成到这里,就会发现,其实调用代码是一样的,就是改一下配置文件和模型文件,就可以实现不同的功能!

接下来还可以看 《Python调用MMDetection实现AI抠图去背景》 进一步了解实际应用。文章来源地址https://www.toymoban.com/news/detail-465021.html

到了这里,关于使用MMDetection进行目标检测、实例和全景分割的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【目标检测】YOLOv5-7.0:加入实例分割

    前段时间,YOLOv5推出7.0版本,主要更新点是在目标检测的同时引入了实例分割。 目前,YOLOv5团队已经转向了YOLOv8的更新,因此,7.0版本大概率是YOLOv5的最终稳定版。 官方公告中给出了YOLOv5-7.0的更新要点: 推出了基于coco-seg的实例分割预训练模型 支持Paddle Paddle模型导出 自动

    2024年02月11日
    浏览(38)
  • yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计

    YOLOv8是一种先进的目标检测算法,结合多种算法实现多目标追踪、实例分割和姿态估计功能。该算法在计算机视觉领域具有广泛的应用。 首先,YOLOv8算法采用了You Only Look Once(YOLO)的思想,通过单次前向传递将目标检测问题转化为回归问题。它使用了深度卷积神经网络,能

    2024年02月20日
    浏览(45)
  • 目标检测、实例分割、旋转框样样精通!详解高性能检测算法 RTMDet

    近几年来,目标检测模型,尤其是单阶段目标检测模型在工业场景中已经得到广泛应用。对于检测算法来说,模型的精度以及运行效率是实际使用时最受关注的指标。因此, 我们对目前的单阶段目标检测器进行了全面的改进:从增强模型的特征提取能力和对各个组件的计算量

    2024年02月15日
    浏览(40)
  • Yolov5同时进行目标检测和分割分割

    基于yolov5(v6.0分支)的多任务检测和分割模型。 之前很早就萌生idea在yolov5基础上添加一个分割头用于语义分割,近期正好也有论文YLOLOP是这么做的. 这里基于yolov5最新分支修改,主要改动如下: 1 . 解耦头:实验在小数据集上有一定效果(map 1%+ ),大数据集上提升不明显; 2.

    2024年02月05日
    浏览(41)
  • CutLER:一种用于无监督目标检测和实例分割的方法

    本文分享自华为云社区《CutLER:一种用于无监督目标检测和实例分割的方法》,作者:Hint。 目标检测是计算机视觉中的一种重要任务,使AI系统感知、推理、理解目标。训练定位模型需要特别的标注,比如目标的框、掩膜、定位点等。本文的工作研究了无监督的目标检测和实

    2024年02月12日
    浏览(41)
  • yolov8的目标检测、实例分割、关节点估计的原理解析

    1 YOLO时间线 这里简单列下yolo的发展时间线,对每个版本的提出有个时间概念。 2 yolov8 的简介 工程链接:https://github.com/ultralytics/ultralytics 2.1 yolov8的特点 采用了anchor free方式,去除了先验设置可能不佳带来的影响 借鉴Generalized Focal Loss,使用任务解耦,分别学习box,class。并将

    2024年01月19日
    浏览(44)
  • 【Jetson目标检测SSD-MobileNet应用实例】(四)在Jetson上使用CSI摄像头进行视频推理并输出检测结果

    【Jetson目标检测SSD-MobileNet应用实例】(一)win11中配置SSD-MobileNet网络训练境搭建 【Jetson目标检测SSD-MobileNet应用实例】(二)制作自己的数据集–数据集的采集、标注、预处理 【Jetson目标检测SSD-MobileNet应用实例】(三)训练自己的检测模型和推理测试 关于Jetson nano或者NX上的

    2023年04月10日
    浏览(40)
  • YOLOv5+BiSeNet——同时进行目标检测和语义分割

    在Gayhub上看到个项目,有人在YOLOv5的基础上,新增了一个分割头,把BiSeNet语义分割算法加入到了目标检测中,使其能够同时进行目标检测和语义分割。 项目地址:https://github.com/TomMao23/multiyolov5 先看我使用原作者提供的模型,复刻出来的效果: (本来想放视频的,不过传了两

    2024年02月07日
    浏览(44)
  • 目标检测实例分割数据集转换:从XML和JSON到YOLOv8(txt)

            如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接,我这边整理了许多其他任务的说明博文,后续也会持续更新,包括yolov8模型优化、sam等等的相关内容。 YOLOv8(附带各种任务详细说明链接) 源码下载地址: XMLJSON 目标检测、实例分割标签转换

    2024年02月03日
    浏览(43)
  • 2023-一种无监督目标检测和实例分割方法【Cut and Learn for Unsupervised Object Detection and Instance Segmentation】

    Facebook 目标检测和分割依赖海量数据的标注,模型训练耗时最大的是数据采集和标注过程,无监督学习在目标检测和分割中的应用较少。 这篇文章提出提出了Cut-and-LEaRn(CutLER),一种用于训练无监督对象检测和分割模型的简单方法。利用自监督模型的特性在没有监督的情况

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包