MMDetection框架下的常见目标检测与分割模型综述与实践指南

目录

综述与实践指南

SSD (Single Shot MultiBox Detector)

基本配置和使用代码

RetinaNet

基本配置和使用代码

Faster R-CNN 

基本配置和使用代码

Mask R-CNN

基本配置和使用代码

Cascade R-CNN

基本配置和使用代码

总结


综述与实践指南

MMDetection是一个基于PyTorch的开源框架,是一个目标检测工具箱,包含了丰富的目标检测、实例分割、全景分割算法以及相关的组件和模块,支持多种经典和现代模型,如ResNet、VGG、EfficientNet等。它还集成了单阶段和两阶段检测器,如YOLO、SSD、Faster R-CNN等,并提供了模块化设计,简化了模型组合、调整和优化的流程。框架还包括数据处理、模型训练、验证和测试的集成解决方案,并附有详细的文档和示例。MMDetection 由 7 个主要部分组成,apis、structures、datasets、models、engine、evaluation 和 visualization。

MMDetection广泛应用于自动驾驶、安防监控等领域,为研究者和开发者提供了一个强大的工具,以促进深度学习目标检测的实践和创新。

图片

模型算法下载 

Coovally AI Hub公众号后台回复模型算法」,即可获取下载链接!


SSD (Single Shot MultiBox Detector)

SSD,是一种单阶段目标检测器。其优点是原始的YOLO和Faster R-CNN在推理速度和精度之间取得了更好的平衡。SSD模型是由Wei Liu等人在使用卷积神经网络(CNN)进行目标检测的研究中,提出的一种改进思路。

SSD用于图像分类、物体检测和语义分割等各种深度学习任务。相对于其他目标检测算法,SSD模型有更高的精度,而且速度也是非常快的。其主要思路是通过在CNN的最后几层添加多个预测层实现多尺度的目标检测,然后通过一个过滤策略对每个检测框进行筛选,最后输出最终的检测结果。

SSD模型结构分为两个部分,一个是特征提取网络,另一个是多尺度检测网络。SSD模型可以被应用在各种目标检测任务中,比如人脸检测、车辆检测等。

图片

基本配置和使用代码


# 配置文件路径
config_file = 'configs/ssd/ssd300_coco.py'# 模型权重路径
checkpoint_file = 'ssd300_coco_20200307-b3c19318.pth'# 创建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 测试单张图片
img = 'test.jpg'  # 测试图片路径
result = inference_detector(model, img)
# 可视化结果
show_result_pyplot(model, img, result)
  • 参考论文:SSD: Single Shot MultiBox Detector

  • 论文链接:https://arxiv.org/pdf/1512.02325


RetinaNet

RetinaNet来自FAIR 论文:Focal Loss for Dense Object Detection,其简要概述为:深入分析了极度不平衡的正负(前景背景)样本比例导致 one-stage 检测器精度低于 two-stage 检测器,基于上述分析,提出了一种简单但是非常实用的 Focal Loss 焦点损失函数,并且 Loss 设计思想可以推广到其他领域,同时针对目标检测领域特定问题,设计了 RetinaNet 网络,结合 Focal Loss 使得 one-stage 检测器在精度上能够达到乃至超过 two-stage 检测器。

总的来说,RetinaNet 有两个大创新:1.Focal Loss,2.RetinaNet网络。Focal Loss 几乎已经成为 one-stage 算法的标配,而 RetinaNet 网络结构也是目前主流的目标检测网络结构,其变体不计其数。

RetinaNet网络主要由ResNet作为主干网络、FPN(特征金字塔网络)作为 neck、以及分类和边框回归子网络作为head组成。RetinaNet模型的特点是它是一种单阶段目标检测器,与传统的两阶段检测器(如Faster R-CNN)相比,它更为简洁和高效。RetinaNet的结构主要包括三个部分:Backbone、Neck和Head。Backbone通常采用深度卷积神经网络来提取特征,Neck部分用于收集不同尺度的特征图,而Head则负责生成最终的检测结果。

图片

标准的 RetinaNet 骨架网络采用的是 ResNet 系列。由于骨架本身没有限制,MMDetection 中目前提供的预训练权重所涉及的骨架网络包括:ResNet50-Caffe、ResNet50-Pytorch、ResNet101-Caffe、ResNet101-Pytorch、ResNeXt101,非常丰富。

MMDetection RetinaNet包括了详细的配置和参数设置,这使得用户可以根据自己的需求灵活地调整模型。例如,用户可以自定义Backbone网络、调整锚点生成策略、选择不同的损失函数等。

基本配置和使用代码


# 配置文件路径
config_file = 'configs/retinanet/retinanet_r50_fpn_1x_coco.py'
# 模型权重路径
checkpoint_file = 'retinanet_r50_fpn_1x_coco_20200130-c2398f9e.pth'# 创建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 测试单张图片
img = 'test.jpg'  # 测试图片路径
result = inference_detector(model, img)
# 可视化结果
show_result_pyplot(model, img, result)
  • 参考论文:Focal Loss for Dense Object Detection

  • 论文链接:https://arxiv.org/abs/1708.02002


Faster R-CNN 

Faster R-CNN是目标检测领域最为经典的方法之一,通过 RPN(Region Proposal Networks) 区域提取网络和 R-CNN 网络联合训练实现高效目标检测。其简要发展历程为:R-CNN➡Fast R-CNN➡Faster R-CNN。

Faster R-CNN是在Fast R-CNN基础上引入了RPN,Faster R-CNN 的出现改变了整个目标检测算法的发展历程。之所以叫做 two-stage 检测器,原因是其包括一个区域提取网络 RPN 和 RoI Refine 网络 R-CNN,同时为了将 RPN 提取的不同大小的 RoI 特征图组成 batch 输入到后面的 R-CNN 中,在两者中间还插入了一个 RoI Pooling 层,可以保证任意大小特征图输入都可以变成指定大小输出。简要结构图如下所示:

图片

由于 Faster R-CNN 是后续各个算法的 baseline 且用途非常广泛,OpenMMLab 提供了非常多的模型配置供研究或者不同任务 fintune 用,几乎覆盖了所有常用配置,如下所示:

  • 1x、2x 和 3x 的模型配置和权重;

  • 多尺度训练配置和权重;

  • 不同骨架的配置和权重;

  • PyTorch 和 Caffe style 的配置和权重;

  • 各种 loss 对比配置和权重;

  • 不包含 FPN 的 Faster R-CNN 配置和权重;

  • 常用类别例如 person 的配置和权重,可作为下游任务例如行人检测的预训练权重,性能极佳。

图片

基本配置和使用代码

# 测试单张图片
img = 'path/to/test/image.jpg'  # 图片路径
result = inference_detector(model, img)# 可视化结果
show_result_pyplot(model, img, result)# 如果你需要批量处理图片,可以使用以下代码
# images = ['path/to/image1.jpg', 'path/to/image2.jpg', ...]
# for img in images:
#     result = inference_detector(model, img)
#     show_result_pyplot(model, img, result)
  • 参考论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

  • 论文链接:https://arxiv.org/pdf/1506.01497


Mask R-CNN

在 FPN 提出后,Kaiming He 等进一步对其进行任务扩展,提出了 Mask R-CNN,通过新增 mask 掩码分支实现实例分割任务,其最大特点是任务扩展性强,通过新增不同分支就可以实现不同的扩展任务。例如可以将 mask 分支替换为关键点分支即可实现多人姿态估计。除此之外,为解决特征图与原始图像上的 RoI 不对准的问题,提出了 ROIAlign 模块。

Mask R-CNN 和 Faster R-CNN 的区别主要包括两个方面:

  • R-CNN 中额外引入 Mask Head,从而可以实现实例分割任务;

  • 针对特征图与原始图像上的 RoI 不对准问题,提出了 RoIPool 的改进版本 RoIAlign 。

图片

Mask R-CNN 易于推广到其他任务例如,我们可以在同一框架内实现多人姿态估计。我们在 COCO 整套挑战赛的所有三个赛道上都取得了优异成绩,包括实例分割、边界框对象检测和人物关键点检测。在没有任何附加功能的情况下,Mask R-CNN 在每项任务中的表现都优于所有现有的单一模型参赛者,包括 COCO 2016 挑战赛的获奖者。我们希望我们简单有效的方法能成为一个坚实的基线,并为未来的实例级识别研究提供帮助。

图片

基本配置和使用代码


# 配置文件路径
config_file = 'configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py'
# 模型权重路径
checkpoint_file = 'mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth'# 创建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 测试单张图片
img = 'test.jpg'  # 测试图片路径
result = inference_detector(model, img)
# 可视化结果
show_result_pyplot(model, img, result)
  • 参考论文:Mask R-CNN

  • 论文链接:https://arxiv.org/pdf/1703.06870


Cascade R-CNN

Cascade R-CNN,即级联区域卷积神经网络,是一种高效的目标检测算法。它的出现解决了传统R-CNN系列算法在处理小目标、重叠目标和背景混杂等复杂场景时的困扰。Cascade R-CNN通过多阶段精细化的检测过程,克服了单阶段处理器在处理复杂场景时的不足,显著提升了目标检测的性能。

在目标检测中,需要使用IoU阈值来区分正负样本。一个使用低IoU阈值(比如0.5)训练的目标检测器,往往会产生噪声检测结果。但是,增加IoU阈值往往又会导致检测性能下降。这主要是由于两个原因:①在训练过程中,正样本数目呈指数级减少而导致过拟合;②推理过程中,训练检测器时的IoU和预测结果时的IoU不匹配(mismatch,这一点后面会具体解释)。针对这些问题,论文中提出了一种多阶段目标检测结构Cascade R-CNN。它由一系列随着IoU阈值增加训练而成的检测器组成,对close false positives具有更高的选择性。这个算法是分阶段训练的,每个阶段的检测器的输出都会获得一个更好的分布,从而以该输出作为新的输入来训练下一个更高质量的检测器。通过逐步改进预测输出结果的重采样可以保证所有检测器在训练时都有一个大小相当的正样本集,从而减少了过拟合问题。在推理阶段会采用相同的级联过程,使得每个阶段的hypotheses和detector quality更加匹配。Cascade R-CNN在COCO数据集上的表现超过了所有单阶段目标检测模型。实验表明,Cascade R-CNN适用于不同的检测器结构,并且取得了一致性的提升。

Cascade R-CNN与Faster R-CNN流程对比图,如下图所示。

图片

论文中提出了多阶段/多阈值的cascade rcnn网络,主要目的就是通过级联的、逐渐提升iou阈值的head,有选择性的抑制很相近的假阳样本(close false positives), 尤其是“close but not correct” bounding boxes,从而提升整体检测效果。该网络结构清晰,效果显著,并且能简单移植到其它detector中,带来2-4%的性能提升。

图片

基本配置和使用代码


# 配置文件路径
config_file = 'configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py'
# 模型权重路径
checkpoint_file = 'cascade_rcnn_r50_fpn_1x_coco_20200316-3dc56deb.pth'# 创建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 测试单张图片
img = 'test.jpg'  # 测试图片路径
result = inference_detector(model, img)
# 可视化结果
show_result_pyplot(model, img, result)
  • 参考论文:Cascade R-CNN: High Quality Object Detection and Instance Segmentation

  • 论文链接:https://arxiv.org/pdf/1906.09756


总结

MMDetection计算机视觉系列模型在目标检测领域不断刷新纪录,从精度到效率均取得了显著成就,推动了多个领域的AI发展。

值得一提的是,Coovally模型训练平台涵盖了国内外开源社区1000+模型算法,本期文章中的SSD、Faster R-CNN等热门算法全部包含,用户可一键进行下载。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/1577.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复—EMC存储POOL中数据卷被删除的数据恢复案例

服务器数据恢复环境&故障: EMC Unity 400存储连接了2台硬盘柜。2台硬盘柜上一共有21块硬盘(520字节)。21块盘组建了2组RAID6:一组有11块硬盘,一组有10块硬盘。 在存储运行过程中,管理员误操作删除了 2组…

Leetcode 377. 组合总和 Ⅳ 动态规划

原题链接&#xff1a;Leetcode 377. 组合总和 Ⅳ 可参考官解 class Solution { public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target 1);dp[0] 1;// 总和为 i 的元素组合的个数for (int i 1; i < target; i) {// 每次都…

Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速

本文使用 Ubuntu 环境。Ubuntu 直接使用 APT 安装的就支持 CUDA 加速。本文使用这样下载的版本进行演示&#xff0c;你自己编译或者其他源的版本可能会不同。 ffmpeg 的一些介绍&#xff0c;以及 macOS 版本的 ffmpeg 硬件加速请见《macOS上如何安装&#xff08;不需要编译安装…

【端云一体化】云函数的使用

前言 为丰富HarmonyOS对云端开发的支持、实现端云联动&#xff0c;DevEco Studio以Cloud Foundation Kit&#xff08;云开发服务&#xff09;为底座、在传统的“端开发”基础上新增“云开发”能力&#xff0c;开发者在创建工程时选择合适的云开发工程模板&#xff0c;即可在De…

vLLM私有化部署大语言模型LLM

目录 一、vLLM介绍 二、安装vLLM 1、安装环境 2、安装步骤 三、运行vLLM 1、运行方式 2、切换模型下载源 3、运行本地已下载模型 四、通过http访问vLLM 一、vLLM介绍 vLLM&#xff08;官方网址&#xff1a;https://www.vllm.ai&#xff09;是一种用于大规模语言模型&#x…

【Linux 之一 】Linux常用命令汇总

Linux常用命令 ./catcd 命令chmodclearcphistoryhtoplnmkdirmvpwdrmtailunamewcwhoami 我从2021年4月份开始才开始真正意义上接触Linux&#xff0c;最初学习时是一脸蒙圈&#xff0c;啥也不会&#xff0c;啥也不懂&#xff0c;做了很多乱七八糟&#xff0c;没有条理的笔记。不知…

蓝牙BT04-A的使用与相关AT指令

一、AT指令没有返回的问题及解决方案 检查指令格式&#xff1a; 确认指令格式是否正确&#xff0c;包括特定的命令和结尾的回车换行符&#xff08;n&#xff09;。 检查TX/RX连接&#xff1a; 确认TX&#xff08;发送&#xff09;和RX&#xff08;接收&#xff09;线是否连接正…

国产Docker可视化面板Dpanel的安装与功能解析

国产Docker可视化面板Dpanel的安装及功能介绍 Docker 可视化面板系统&#xff0c;提供完善的 docker 管理功能。 支持查看基本信息、运行状态统计、网络统计、磁盘统计、用量统计等功能 ​​ ​​ 容器管理&#xff1a; ​​ 创建/修改容器 ​​ 支持基本配置、环境变量、…

金融项目实战 06|Python实现接口自动化——日志、认证开户接口

一、日志封装及应用&#xff08;理解&#xff09; &#x1f534;日志的作用&#xff1a; 记录程序运行的步骤和错误。 &#x1f534;日志的场景&#xff1a; 1、调试bug2、查看程序运行轨迹 &#x1f534;日志基本应用&#xff1a; # 1、导包 import logging # 2、调用日…

第423场周赛:检测相邻递增子数组 Ⅰ、检测相邻递增子数组 Ⅱ、好子序列的元素之和、统计小于 N 的 K 可约简整数

Q1、检测相邻递增子数组 Ⅰ 1、题目描述 给你一个由 n 个整数组成的数组 nums 和一个整数 k&#xff0c;请你确定是否存在 两个 相邻 且长度为 k 的 严格递增 子数组。具体来说&#xff0c;需要检查是否存在从下标 a 和 b (a < b) 开始的 两个 子数组&#xff0c;并满足下…

vue 与 vue-json-viewer 实现 JSON 数据可视化

前言 接口的调试和测试是确保系统稳定性的重要步骤。为了让开发人员和测试人员能够直观地查看接口返回的 JSON 数据&#xff0c;使用合适的工具至关重要。vue-json-viewer 插件为 vue 开发者提供了一个简单而强大的解决方案。本文将详细介绍如何在 vue 项目中使用该插件&#x…

开源项目stable-diffusion-webui部署及生成照片

参考链接 https://www.freedidi.com/13133.html 基础环境部署 python 官网链接 Python Release Python 3.10.6 | Python.org 下载 Python 3.10.6 版本安装包 下载好后双击 点击安装&#xff0c;这里需要选择一下&#xff0c;把环境变量加上。&#xff08;这里是默认安装到C盘…

宝塔面板 申请证书后 仍然提示不安全

证书显示有效&#xff0c;但是网站显示不安全 导致的原因是引入静态文件使用的是HTTP&#xff0c;查看方法为F12打开console控制台 可以看到静态文件全部都是HTTP 网站采用wordpress搭建&#xff0c;基于问题解决&#xff0c;其他方式搭建也是一样&#xff0c;处理掉所有的H…

14X505-1《火灾自动报警系统设计规范图示》中相关数据和总线制的个人理解

目录 内容简介一、设计容量1.1 设备总数or地址总数1.2 报警与联动合用总线怎么办1.3 10%余量 二、总线短路隔离器2.1 设备总数or地址总数2.2 短路隔离器计入设备数吗2.3 电源要隔离吗2.4 穿越没有设备的防火分区要加短路隔离吗2.5 思考&#xff1a;一个回路可以带几个短路隔离器…

PCB印刷电路板快速上手04电容元件

1.电容元件 电容&#xff1a;又叫电容器&#xff0c;是指容纳电荷本领的物理量。 电容元件是表征电路元件储存电荷特性的理想元件&#xff0c;在电路分析学科中是除电阻元件、电感元件以外的基本电路元件。 电容一般用通常用“C”表示&#xff08;Capacitance&#xff09; 电…

风水算命系统架构与功能分析

系统架构 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&#xff0c;支持myb…

HarmonyOS NEXT开发进阶(六):HarmonyOS NEXT实现嵌套 H5 及双向通信

文章目录 一、前言二、鸿蒙应用加载Web页面2.1 加载网络地址页面2.2 加载本地H5页面 三、实现Web组件 H5 层与鸿蒙应用层进行相互通讯3.1 鸿蒙应用向 H5 页面发送数据3.2 H5页面向鸿蒙应用发送数据 四、拓展阅读 一、前言 随着HarmonyOS NEXT的快速发展&#xff0c;越来越多的…

OPT: Open Pre-trained Transformer语言模型

摘要 大规模语言模型通常需要数十万计算日的训练时间&#xff0c;展现了在零样本和小样本学习中的显著能力。鉴于其计算成本之高&#xff0c;这些模型在没有大量资本投入的情况下难以复现。对于那些通过API提供的少数模型&#xff0c;研究者无法获取完整的模型权重&#xff0c…

探索图像编辑的无限可能——Adobe Photoshop全解析

文章目录 前言一、PS的历史二、PS的应用场景三、PS的功能及工具用法四、图层的概念五、调整与滤镜六、创建蒙版七、绘制形状与路径八、实战练习结语 前言 在当今数字化的世界里&#xff0c;视觉内容无处不在&#xff0c;而创建和编辑这些内容的能力已经成为许多行业的核心技能…

ffmpeg 编译遇到的坑

makeinfo: error parsing ./doc/t2h.pm: Undefined subroutine &Texinfo::Config::set_from_init_file called at ./doc/t2h.pm line 24. 编译选项添加&#xff1a; --disable-htmlpages