【OpenMMLab AI实战营第二期】目标检测与MMDetection

news2024/11/25 23:45:53

目标检测

目标检测的基本范式

  • 划窗

  • 使用卷积实现密集预测

  • 锚框

  • 多尺度检测与FPN

单阶段&无锚框检测器选讲

  • RPN

  • YOLO、SSD

  • Focal Loss与RetinaNet

  • FCOS

  • YOLO系列选讲

什么是目标检测

目标检测:给定一张图片,用矩形框框出所有感兴趣物体同时预测物体类别

目标检测与图像分类区别

图像分类通常只有一个物体,位于图像中央,占据主要面积,目标检测中这些都不固定

单阶段目标检测算法

单阶段检测算法概述

单阶段算法直接通过密集预测产生检测框,相比于两阶段算法,模型结构简单、速度快、易于在设备上部署

早期由于主干网络、多尺度技术等相关技术不成熟,单阶段算法在性能上不如两阶段算法,但因为速度和简洁的优势仍受到工业界青睐

随着单阶段算法性能逐渐提升,成为目标检测的主流算法

RPN(Region Proposal Network)

RPN 初步删除图像中包含物体的物质,不预测具体类别

RPN算“半个检测器”,是二阶算法 Faster RCNN的第一阶段

RPN是基于密集预测的

YOLO(You Only Look Once)

是最早的单阶段检测器之一,激发了单阶段算法的研究潮流

主干网络:自行设计的DarkNet结构,产生771024维的特征图

检测头:2层全连接层产生77组预测结果,对应77个空间位置上物体的类别和边界

YOLO的匹配与框编码

将原图切分成SS大小的格子,对应预测图上SS个位置

如果原图上某个物体中心位于某个格子内,则对应位置的预测值应给给出物体类别和边界框位置

其余位置应预测为背景类别,不关心边界框预测结果

优点:

速度快:在Pascal VOC数据集上,使用自己设计的DarkNet结构可以达到实时速度,使用相同的VGG可以达到3倍与Faster R-CNN的速度

缺点:

由于每个格子只能预测一个物体,因此对重叠物体,尤其是大量重叠的小物体容易产生漏检

直接回归边界框(无锚框)有难度,回归误差较大,YOLO V2开始使用锚框

SSD(Single Shot MultiBox Detector)

主干网络:使用VGG+额外卷积层,产生11级特征图

检测头:在6级特征图上进行密集预测,产生所有位置,不同尺度的预测结果

RetinaNet

特征生成:ResNet主管网络+FPN产生P3~P7共五级特征图,对应采样率8-128倍

多尺度锚框:每个特征图上设置3种尺寸*3种长宽比的锚框,覆盖82-813像素尺寸

密集预测头:两分支、5层卷积构成的检测头,针对每个锚框产生K个二类预测以及4个边界框偏移量

损失函数:Focal Loss

性能
在这里插入图片描述

单阶段算法面临的正负样本不均衡问题

单阶段算法共产生尺度数位置数锚框数个预测

而这些预测之中,只有少量锚框的真值为物体(正样本),大部分锚框的真值为背景(负样本)

使用类别不平衡的数据训练处的分类器倾向给出背景预测,导致漏检

朴素的分类损失不能驱动检测器在有限的能力下达到漏检和错检之间的平衡

YOLO V3

自定义的DarkNet-53主干网络和类FPN结构,产生1/8、1/16、1/32降采样率的3级特征图

在每级特征图上设置3个尺寸的锚框,锚框尺寸通过对真值狂聚类得到

两层卷积构成的密集检测头,在每个位置、针对每个锚框产生80个类别预测、4个边界框偏移量、1个objectness预测,每级特征图3*(80+4+1)=255通道的预测值

得益于相对轻巧的主干网络设计、YOLO V3的速度圆冠榆RetinaNet

YOLO V5

模型结构进一步改进、使用CSPNarkNet主干网络、PAFPN多尺度模块

训练时使用更多数据增强,如Mosaic、MixUP

使用自对抗训练技术(SAT)提高检测器的鲁棒性

无锚框目标检测算法

基于锚框

  • Faster R-CNN、YOLO V3/V5、RetinaNet都是基于锚框的检测算法

  • 模型基于特征预测对应位置中是否有物体,以及精确位置相对于锚框的偏移量

  • 实现复杂,需要手动设置锚框相关超参数(如大小、长宽比、数量等),设置不当影响检测精度

无锚框

  • 不依赖锚框,模型基于特征直接预测对应位置是否有物体以及边界框的位置
  • 边界框预测完全基于模型学习,不需要人工调整超参数

FOCS(Fully Convolutional One-Stage)

模型结构与RetinaNet基本相同:主干网络+FPN+两分支、5层卷积构成的密集预测头

预测目标不同:对于每个点位、预测类别、边界框位置和中心度三组数值

FCOS的预测目标&匹配规则

如果某个特征位于某个真值框的内部,且特征的层级与真值框的尺度匹配,则该特征对应正样本,应预测物体的

  • 类别概率

  • 边界框相对于该中心位置的偏移量

  • 中心度,对于衡量预测框的优劣

如果某个特征不位于真值框内部,或与真值框尺度不匹配、对应负样本,只需预测类别为背景

对比:Anchor-Based算法基于IOU匹配,通常Anchor需要预测与之交并比大于阈值的框

FCOS的多尺度匹配

Anchor-based算法根据锚框和真值框的IoU为锚框匹配真值框通常,锚框会匹配到同尺度的真值框,小物体由底层特征预测,大物体由高层特征图预测

问题:Anchor-free 算法没有锚框,真值框如何匹配到不同尺度?

匹配方案:每层特征图只负责预测特定大小的物体,例如右图中512像素以上的物体匹配到P7上

由于重叠的物体尺度通常不同,同一位置重叠的真值框会被分配到不同的特征层,从而避免同一个位置需要预测两个物体的情形

CenterNet

针对2D检测的算法,将传统检测算法中的“以框表示物体”变成“以中心点表示物体”,将2D检测建模为关键点检测和额外的回归任务,一个框架可以同时覆盖2D检测、3D检测、姿态估计等一系列任务。

YOLO X

以YOLO V3为基准模型改进的无锚框检测器

  • Decouple Head结构

  • 更多现代数据增强策略

  • SimOTA分配策略

  • 从小到大的一系列模型

SOTA的精度和速度

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lucene(8):Lucene底层储存结构

1 详细理解lucene存储结构 存储结构 : 索引(Index) : 一个目录一个索引,在Lucene中一个索引是放在一个文件夹中的。 段(Segment) : 一个索引(逻辑索引)由多个段组成, 多个段可以合并, 以减少读取内容时候的磁盘IO。Lucene中的数据写入会先写内存的一个…

公共场所人流数据统计如何实现?解决重识别、漏检等检测难题

https://github.com/PaddlePaddle/paddledetection当前疫情形势严峻,商场、火车站、地铁口等公共场所对人员流量的统计至关重要。“每天进出多少人?” “现在商场中人员数量有多少?”这些关键数据直接影响到相关防疫管控措施。因为人员基数较…

shardingsphere5.x整合springboot分库分表实战

官方文档不同版本配置变更记录&#xff1a;Spring Boot Start 配置 :: ShardingSphere pom.xml配置&#xff1a; <!--shardingsphere分库分表依赖--> <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jd…

分布式锁原理与实战一:分布式锁简介

跨JVM的线程安全问题 在单体的应用开发场景中&#xff0c;在多线程的环境下&#xff0c;涉及并发同步的时候&#xff0c;为了保证一个代码块在同一时间 只能由一个线程访问&#xff0c;我们一般可以使用 synchronized 语法和 ReetrantLock 去保证&#xff0c;这实际上是本地锁…

指针--间接寻址运算符

通常&#xff0c;只要指明要访问的变量的内存地址&#xff0c;即可直接访问变量所在的存储单元中的内容。在前面都是直接通过变量名来访问变量的内容。直接按变量名或者变量的地址存取变量的内容的访问方式&#xff0c; 称为 直接寻址&#xff08;Direct Addressing&#xff09…

STM32读取BH1750光照强度数据打印到串口

【1】BH1750是什么&#xff1f; BH1750是一种数字式环境光强度传感器&#xff08;Digital Light Sensor&#xff09;&#xff0c;也称为其他名称&#xff0c;例如GY-302传感器、BH1750FVI传感器等。它的工作原理是通过收集光线照射到传感器上的量来测量环境亮度。 使用I2C&am…

操作系统 第三章 3.2 错题整理

页面引用串长度是什么意思 合法位存在位 不存在即发生故障 区分好页表项和逻辑地址 是不同的 逻辑地址48bit 偏移量12bit 页号36bit 页表项8B 4KB/8B2^9 一个页面能存放2^9个页表项 页号9bit&#xff0c;36/94 虚拟存储器包括内存和磁盘对换区&#xff0c;工作集要频繁用到&…

深度学习:使用UNet做图像语义分割,训练自己制作的数据集,详细教程

语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支。与分类任务不同&#xff0c;语义分割需要判断图像每个像素点的类别&#xff0c;进行精确分割。语义分割目前在自动驾驶、自动抠图、医疗影像等领域有着比较广泛的应用。我总结了使用UNet网络做图像语义分割的…

我们不一样-康耐视visionpro和apple vision pro

​ 机器视觉Halcon-不同颜色快速识别 康耐视Visionpro是美国cognex visionpro。 康耐视 VisionPro 是领先的计算机式视觉软件。它主要用于设置和部署视觉应用 - 无论是使用相机还是图像采集卡。借助 VisionPro,用户可执行各种功能,包括几何对象定位和检测、识别、测量和对准…

【Web服务应用】LVS负载均衡集群

LVS负载均衡集群 一、企业级集群含义1.1集群的含义1.2LVS一些专业术语 二、企业集群分类2.1负载均衡集群2.2高可用集群2.3高性能运算集群&#xff08;High Performance Computer Cluster&#xff09; 三、负载均衡的架构3.1负载均衡的结构 四、负载均很集群的工作模式4.1NAT模式…

JDBC连接数据库步骤(入门到进阶全)

目录 一、JDBC是什么&#xff1f; 二&#xff0c;JDBC的本质是什么&#xff1f; 为什么要用面向接口编程&#xff1f; 三、JDBC实现原理 四、使用idea开发JDBC代码配置驱动 ​编辑 五、JDBC编程六步概述 六、JDBC编程实现 1.插入实现 2.删除与更新实现 3 .类加载的方式注…

Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch、Tensorrt最全教程

文章目录 一&#xff1a;Anaconda安装二&#xff1a;Cuda、Cudnn安装三&#xff1a;Pytorch安装四&#xff1a;Tensorrt安装 一&#xff1a;Anaconda安装 Jetson系列边缘开发板&#xff0c;其架构都是arm64&#xff0c;而不是传统PC的amd64&#xff0c;深度学习的环境配置方法…

chatgpt赋能python:Python对接技术在SEO中的应用

Python对接技术在SEO中的应用 Python作为一种高性能的编程语言&#xff0c;被广泛应用于各种领域&#xff0c;其中也包括了搜索引擎优化&#xff08;SEO&#xff09;领域。Python对接技术&#xff0c;也称为API对接技术&#xff0c;是指通过调用API接口来获取数据、信息或实现…

AI数字人打造之sadtalker让照片开口说话

1 sadtalker介绍 西安交通大学也开源了人工智能SadTalker模型&#xff0c;通过从音频中学习生成3D运动系数&#xff0c;使用全新的3D面部渲染器来生成头部运动&#xff0c;可以实现图片音频就能生成高质量的视频。 论文地址&#xff1a;Learning Realistic 3D Motion Coefficie…

chatgpt赋能python:Python屏蔽语句的重要性

Python屏蔽语句的重要性 Python是一种高级程序设计语言&#xff0c;被认为是开发Web应用程序、数据科学和人工智能的最佳语言之一。在编写Python程序时&#xff0c;每个人都会遇到需要屏蔽语句的情况。在本文中&#xff0c;我们将详细介绍Python屏蔽语句的重要性和用法。 什么…

chatgpt赋能python:Python建模仿真:优秀的工具与技巧

Python建模仿真&#xff1a;优秀的工具与技巧 在现代科技时代&#xff0c;建模仿真是许多不同行业的核心部分&#xff0c;帮助工程师和科学家研究解决许多问题。Python作为一种简单易学且强大的语言&#xff0c;已经被广泛应用于建模仿真领域。 Python的优点 Python在建模仿…

用Python进行数学建模(一)

一、导入数据 1.直接赋值 2.读取 Excel 文件 3.代码示例 import pandas as pd# 读取数据文件 def readDataFile(readPath): # readPath: 数据文件的地址和文件名try:if (readPath[-4:] ".csv"):dfFile pd.read_csv(readPath, header0, sep",") # 间隔…

chatgpt赋能python:Python嵌入C:一个高效的编程技巧

Python嵌入C&#xff1a;一个高效的编程技巧 作为一名有10年Python编程经验的工程师&#xff0c;我发现在某些情况下&#xff0c;Python嵌入C是一种高效的编程技巧。这种技巧可以使您利用Python的简洁性和高级功能&#xff0c;同时仍然保持程序的执行速度。在本文中&#xff0…

chatgpt赋能python:Python对接硬件:从入门到精通

Python对接硬件&#xff1a;从入门到精通 Python是一门极为强大的编程语言&#xff0c;它不只是用来进行数据分析和Web开发的&#xff0c;也可以用来对接各种硬件设备。这是因为Python具有简单易学&#xff0c;语法简洁&#xff0c;库众多的优点。 什么是Python对接硬件 Pyt…

通过AI工具(ChatGPT接口)生成一字未改的论文,查重率4.2%,可以直接当作论文使用

论文题目&#xff1a;基于AIOT技术的能源控制器的设计以及应用 查重结果&#xff1a;4.2% AI工具国内体验&#xff0c;关注&#xff1a;码视野&#xff0c;回复关键字&#xff1a;1002 一、引言 随着全球经济的快速发展和人口的增长&#xff0c;对能源的需求日益增加。然而&…