【OpenMMLab AI实战营第二期】目标检测笔记

news2024/11/20 12:24:58

目标检测

目标检测的基本范式

  • 划窗

  • 使用卷积实现密集预测

  • 锚框

  • 多尺度检测与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/633071.html

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

相关文章

【系统迁移:笔记本更换硬盘,不重装系统方法】

本人在使用笔记本的时候,C盘空间经常不够用。每次空间满了,就要清理磁盘,卸载一些软件。后来网上搜索一些C盘扩容的办法,列在下面了。去官方下载 diskgenius 软件,点击 here 跳转官网。 电脑型号:联想小新…

操作系统(3.5)--死锁概述

目录 资源问题 可重用性资源和消耗性资源 可抢占性资源和不可抢占性资源 计算机系统中的死锁 1.竞争不可抢占性资源 2.竞争可消耗资源产生死锁 3.进程推进顺序不当引发死锁 死锁的定义、必要条件和处理方法 死锁的定义 产生死锁的必要条件 处理死锁的基本方法 资源…

华为OD机试真题(JavaScript),挑选字符串(100%通过+复盘思路)

一、题目描述 给定a-z,26个英文字母小写字符串组成的字符串A和B,其中A可能存在重复字母,B不会存在重复字母,现从字符串A中按规则挑选一些字母可以组成字符串B挑选规则如下: 同一个位置的字母只能挑选一次&#xff1b…

JS reduce方法对后台数据的处理案例(秒解决)

目录 一、前言 二、案例1 三、案例二 四、小结 一、前言 在我们项目开发阶段,当后端传回来的数据不太理想或者不好直接使用的话,那么此时我们就必须对数据进行处理,这次我就遇到了一种情况,当后端返回如下格式的数据&#xff…

Rust每日一练(Leetday0024) 爬楼梯、简化路径、编辑距离

目录 70. 爬楼梯 Climbing Stairs 🌟 71. 简化路径 Simplify Path 🌟🌟 72. 编辑距离 Edit Distance 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专…

dubbo源码阅读之-java spi, dubbo spi 和 Spring spi 到底有啥区别

java spi, dubbo spi 和 Spring spi 到底有啥区别 SPIJava SPI案例优缺点 Spring SPIDubbo SPI概述案例源码分析 自己实现一个SPI SPI SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由…

北京通信展的精华内容,都在这里!(中篇)

█ 中国移动 中国第一大运营商: 中国移动展出的内容非常非常多,既有应用,也有技术干货: 通感一体化: 6G: 猜猜这是什么: 揭晓答案: 1:2的卫星单元模型: RIS智能超表面&am…

HNU人工智能实验四-基于YOLOV3-DarkNet50的篮球检测模型

实验四:深度学习算法及应用-基于YOLOV3-DarkNet50的篮球检测模型 项目文档工程:https://github.com/mindspore-ai/mindspore-21-days-tutorials/tree/main/ 前言 这个实验要求做一个深度学习项目,做头歌的或者自己在华为云找一个都行&…

华为OD机试真题 Java 实现【最长回文子串】【牛客练习题】

一、题目描述 给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。 所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 数据范围:字符串长度1≤s…

华为OD机试真题 JavaScript 实现【最长回文子串】【牛客练习题】

一、题目描述 给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。 所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 数据范围:字符串长度1≤s…

锤子眼里全是钉?谈如何对现有系统进行微服务改造

1 什么是微服务架构? 微服务架构,主要是一种思想,并非具体的技术、框架、语言等。核心在于将现有系统拆分为功能明确,内聚性强,职责单一的微小部分,以服务形式对外提供,从而将原来的复杂大系统…

SpringBoot 通过@Profile注解配置多环境

参考资料 Springboot中的Profile注解 目录 一. 使用场景二. 前期准备三. Profile注解作用于类上3.1 配置类3.2 效果 四. Profile注解作用于方法上4.1 定义一个生产环境的注解4.2 配置类4.3 效果 一. 使用场景 在Spring中,可以使用配置文件的方式来指定不同环境下所…

让AI写今年高考作文,满分60你给AI打多少分呢?

随着高考的落幕,各地高考作文已成为我们讨论的话题。 下面是2023年全国甲卷作文题目 我们就让AI根据要求,写上两篇作文。作文标题也是AI起的 一 、① 标题:与时间赛跑,不为时间所困 ​ 时间,这位无情的审判长&#…

知识点滴 - Tumble test和Drop test

翻滚测试(Tumble test)和跌落测试(Drop test)是十分重要的方法,用于评估产品的维持功能的能力,针对的是当产品在终端用户手中的整个生命周期中经历许多碰撞和刮擦的情况。 跌落测试的随机性较强,而跌落测试可以控制跌落方向、撞击点等。 翻滚…

将一个正整数分解质因数(Java)

题目:将一个正整数分解质因数。例如:输入1023,打印出10233*11*31。 目录 1、解题思路 2、程序代码 3、程序输出 1、解题思路 从最小的质数开始,不断地将输入的正整数进行分解,直到无法再分解为止。具体实现方法为:从…

Flutter调用Rust代码操作指南

在之前的利用Rust与Flutter开发一款小工具文章中,我们使用Rust代码实现了一个简单的WebSocket发送功能。也在Rust库交叉编译以及在Android与iOS使用这篇中介绍了Rust库的打包以及双端的使用。 今天我们继续用之前WebSocket的代码举例,来介绍如何在Flutt…

chatgpt赋能python:Python怎么取出换行的数据?

Python怎么取出换行的数据? 在数据分析和处理中,我们常常需要从文件中读取数据,特别是当数据量很大时更是如此。在Python中,读取文本文件中的数据很简单,但是有时候读取的文本文件中可能含有换行符,这可能…

5.DIY可视化-拖拽设计1天搞定主流小程序-公告管理

1.DIY可视化-拖拽设计1天搞定主流小程序-公告管理 公告管理-本教程均在第一节中项目启动下操作 1.DIY可视化-拖拽设计1天搞定主流小程序-公告管理2.创建数据表执行: php think diygw:tableandapi oneHdp 3. 复制幻灯片界面进行编辑4.修改后台API5.富文本添加6.验证 :访问url : …

linux下动态链接过程

序 总是在工作中会遇到符号表,链接等字眼,之前看过《程序员自我修养》这本书,但是基本上都忘记了,这几天再刷一遍,顺便记录一下,加深记忆。 本文会完整的描述程序运行的动态加载及运行的整个流程&#xff…

大学生心理健康APP的设计与实现

摘 要:大学生群体本该是象牙塔中的学习者,是祖国未来的支柱,是民族复兴的期望所在,但是近几年大学生心理健康问题日益严峻,例如情感问题,原生家庭的问题,学业问题,与同学相处所带来…