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

news2024/12/23 22:58:05

1.什么是目标检测?

在这里插入图片描述

目标检测 vs 图像分类

在这里插入图片描述

目标检测的应用

(1)人脸识别
(2)智慧城市
(3)自动驾驶
(4)下游视觉任务:场景文字识别、人体姿态估计

目标检测技术的演进

在这里插入图片描述
在这里插入图片描述

2.基础知识

框,边界框(Bounding Box)

框泛指图像上的矩形框,边界横平竖直。
边界框通常指紧密包围感兴趣物体的框,检测任务要求为图中出现的每个物体预测一个边界框

交并比(Intersection Over Union)

定义:两矩形框交集面积并集面积之比,是矩形框重合程度的衡量指标。
在这里插入图片描述

感受野

定义:神经网络中,一个神经元能看到的原图的区域
在这里插入图片描述

感受野的中心和步长

感受野的中心:

  • 一般结论比较复杂;
  • 对于尺寸3x3,pad=1的卷积(或池化)堆叠起来的模型,感受野中心=神经元在特征图上的坐标x感受野步长

感受野的步长(=降采样率=特征图尺寸的缩减倍数):

  • 神经网络某一层上,相邻两个神经元的感受野的距离
  • 步长=这一层之前所有stride的乘积
    在这里插入图片描述

有效感受野(Effective RF)

感受野一般很大,但不同像素对激活值的贡献是不同的,也就是说激活值对感受野内的像素求导数,大小不同。影响比较大的像素通常聚集在中间区域,可以认为对应神经元提取了有效感受野范围内的特征。也就是说,感受野边缘的贡献不大,而中心比较重要。
在这里插入图片描述

基于锚框 vs 无锚框

在这里插入图片描述

非极大抑制 Non-Maximum Suppression

滑窗类算法通常会在物体周围给出多个相近的检测框,这些框实际指向同一物体,只需保留其中置信度最高的
在这里插入图片描述
非极大抑制的算法实现:
在这里插入图片描述

置信度 Confidence Score

置信度:模型认可自身预测结果的程度,通常需要为每个框预测一个置信度,我们倾向认可置信度高的预测结果,例如有两个重复的预测结果了,丢弃置信度低的。

  • 部分算法直接取模型预测物体属于特定类别的概率;
  • 部分算法让模型单独预测一个置信度(训练时有GT,可以得相关信息作为监督);
    在这里插入图片描述

正负样本不均衡问题

在这里插入图片描述

3.目标检测的基本思路

检测问题的难点

(1)需要同时解决是什么和在哪里
(2)图中物体位置、数量、尺度变化多样

滑窗 (Sliding Window)

(1)设定一个固定大小的窗口
(2)遍历图像的所有位置,所到之处用分类模型(假设已经训练好)识别窗口中的内容
(3)为了检测不同大小、不同形状的物体,可以使用不同大小、长宽比的窗口扫描图片
缺点:效率问题,计算成本很高。
改进思路1:用启发式算法替换暴力遍历,用相对低计算量的方式粗筛出可能包含物体的位置,再使用卷积网络预测。早期二阶段方法使用,依赖外部算法,系统实现复杂。
改进思路2:减少冗余计算,使用卷积网络实现密集预测,这是目前普遍采用的方式。

分析滑窗中的重复计算

下图中的重叠部分被相同的卷积核卷积,计算冗余了。
在这里插入图片描述

改进思路

用卷积一次性计算全图所有特征,再取出对应位置的特征完成分类
在这里插入图片描述
这样的特征图滑窗相比原图滑窗来说,重叠区域只计算一次卷积特征,与窗的个数无关

在特征图上进行密集预测

在这里插入图片描述

边界框回归 Bounding Box Regression

问题:滑窗与物体精确边界通常有偏差
处理方法:让模型在预测物体类别的同时预测边界框相对于滑窗的偏移量,这种基于同一特征做两个预测的也叫做多任务学习。
在这里插入图片描述

使用密集预测模型进行推理

基本流程:

  • 用模型做密集预测,得到预测图,每个位置包含类别概率、边界框回归的预测结果
  • 保留预测类别不是背景的框
  • 基于框中心,和边界框回归结果,进行边界框解码
  • 后处理:非极大值抑制

如何训练

训练神经网络的一般套路:

  • 模型基于当前参数给出预测
  • 计算loss:衡量预测的好坏
  • 反传loss、更新参数
    密集预测的训练过程:
  • 检测头在每一个位置产生一个预测(有无物体、类别、位置偏移量)
  • 该预测值应与某个真值比较产生损失,进而才可以训练检测器
  • 但这个真值在数据标注中并不存在,标注只标出了有物体的地方
  • 我们需要基于稀疏的标注框为密集预测的结果产生真值,这个过程称为匹配(Assignment)
    在这里插入图片描述
    匹配的基本思路:
    在这里插入图片描述

密集预测的基本范式

在这里插入图片描述

4.密集预测范式的改进:多尺度预测

尺度问题

图像中的物体大小可能有很大的差异。
朴素的密集范式中,如果让模型基于主干网络最后一层或者倒数第二层特征图进行预测:

  • 受限于结构(感受野),只擅长中等大小的物体
  • 高层特征图经过多次采样,位置信息逐层丢失,小物体检测能力较弱,定位精度较低

解决方式

方法一:基于锚框
在这里插入图片描述
方法二:图像金字塔 Image Pyramid
在这里插入图片描述
方法三:基于层次化特征
在这里插入图片描述
方法四:特征金字塔网络 Feature Pyramid Network
在这里插入图片描述

多尺度密集预测范式

在这里插入图片描述

5. 单阶段目标检测算法选讲

Region Proposal Network(2015)

在这里插入图片描述

RPN的主干网络图(VGG上,resnet下)
在这里插入图片描述

YOLO:You Only Look Once(2015)

在这里插入图片描述
YOLO的匹配与框编码
在这里插入图片描述
YOLO的损失函数(现在也不是很常见)
在这里插入图片描述
YOLO的优缺点
在这里插入图片描述

SSD:Single Shot MultiBox Detector (2016)

第一个使用多级特征图
在这里插入图片描述
SSD 的匹配规则
在这里插入图片描述

RetinaNet(2017)

FPN成为主要结构
在这里插入图片描述
提出Focal loss主要为了解决单阶段算法面临的正负样本不均衡问题
在这里插入图片描述
不同负样本对损失函数的贡献
在这里插入图片描述
改进:降低简单负样本的损失
在这里插入图片描述
Focal Loss
在这里插入图片描述

YOLO v3(2018)

在这里插入图片描述
在这里插入图片描述

YOLO v5(2020)

在这里插入图片描述

6. 无锚框目标检测算法

不用锚框会导致对于重叠物体的检测效果特别差,但是借助FPN可以利用不同层次的特征预测。

FCOS,Fully Convolutional One-stage(2019)

在这里插入图片描述
FCOS的预测目标 and 匹配规则
在这里插入图片描述
FCOS的多尺度匹配
在这里插入图片描述
中心度 Center-ness
在这里插入图片描述
FCOS的损失函数
在这里插入图片描述

CenterNet(2019)

在这里插入图片描述

YOLO X(2021)

在这里插入图片描述

YOLO V8(2022)

在这里插入图片描述

7. 单阶段算法和无锚框算法的总结

在这里插入图片描述

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

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

相关文章

微服务 springcloud 08.zuul框架,API网关,整合ribbon和hystrix框架

01.zuul是作为springcloud中的一个网关框架来使用的。 zuul API 网关,为微服务应用提供统一的对外访问接口。 zuul 还提供过滤器,对所有微服务提供统一的请求校验。 在项目中的位置: 02.新建 sp11-zuul 项目 03.pom.xml 需要添加 sp01-com…

【雕爷学编程】Arduino动手做(111)---震动提醒模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

纺织工厂运营神技,不会你就OUT了!

在纺织工业中,保持适宜的生产环境是至关重要的。温湿度、能耗、设备运行状态以及空气质量等因素对纺织品的质量和生产效率都有着重要影响。 为了实现对生产环境的全面监控和管理,纺织企业越来越多地采用动环监控系统。 客户案例 湖州市某纺织工厂监控项目…

USART2实现Motbus485通信

本文用的单片机是原子的战舰V4 1. 先来驱动一下usart2 USART驱动配置一般步骤: STEP1:使能相关时钟,这块板子usart2用到了A2、A3分别为TX脚、RX脚,D7的作用是发送接收模式控制。下面开启GPIO与USART2时钟: RCC_APB1PeriphClockCm…

SpringBoot中打印 sql 语句

系列文章目录 文章目录 系列文章目录前言一、在配置文件中 application.yml 配置即可二、#Log4g打印SqL语句三、配置Logback总结 前言 在SpringBoot中,我们可以使用日志框架来打印SQL语句,常用的日志框架有Logback和Log4j2。下面以Logback为例&#xff…

35:考虑virtual函数以外的其他选择

假设你正在写一个视频游戏软件,你打算为游戏内的人物设计一个继承体系,剧中人物被伤害或因其他因素而降低健康状态的情况并不罕见。你因此决定提供一个成员函数healthValue,它会返回一个整数,表示人物的健康程度。 由于不同的人物…

Linux x86_64平台同时编译x86_64和arm64两个架构的Qt应用程序出现XRes库无法找到

一 背景 在ubuntu x86_64平台上需要同时编译x86_64和arm64两个架构的Qt应用程序。在实践过程中,发现XRes库只能安装在其中一个平台。 二 根因 安装amd64版本的XRes库会删除arm64版本的库,反之亦然。 在安装amd64版本时,会删除arm64版本&a…

内部员工有没有在线帮助文档可以使用呢

当今企业中,内部员工的工作内容变得越来越复杂,需要不断学习新的知识和技能。在这种情况下,企业需要给员工提供一种便捷的在线帮助文档,使员工能够更加高效地完成工作任务。本文将介绍企业内部员工在线帮助文档的重要性以及如何建…

区块链如何助力价值互联网?这些专家有话说

6月13日,由开放原子开源基金会主办,XuperCore开源项目承办的2023开放原子全球开源峰会区块链分论坛在北京举办。来自区块链领域内的专家、行业代表汇聚一堂,分别以主题演讲、圆桌论坛等形式,阐述了全球区块链行业的新理念、新发展…

Opencv仿射函数getAffineTransform底层实现原理

推导 三角形ABC仿射成为三角形DEF的变换矩阵M 猜测矩阵M [ [a1,b1,c1], [a2,b2,c2] ] 仿射变换的数学联系 对于A点和D点 AX*a1AY*b1c1DX AX*a2AY*b2c1DY 对于B点和E点 BX*a1BY*b1c1EX BX*a2BY*b2c2EY 对于C点和F点 CX*a1CY*b1c1FX CX*a2CY*b2c2FY 求解 对以上数…

seqkit 两种拆分方法的比较

seqkit拆分fastq,fasta等文件有两种方式:split和split2, 二者的逻辑并不一样。 split 是将原文件拆分,写满第一个文件,再写第二个文件 split2是将原文件的内容,挨个写到各个拆分文件里面去? 比…

拓尔微技术干货 | get 5个知识点,了解细分驱动技术

本期我们对步进电机驱动原理、五线的步进电机和四线的步进电机、2-2相励磁和1-2相励磁、步进电机驱动的优化方案、拓尔微TMI8150B细分驱动技术的原理进行详细的介绍,共分为5个知识点,全是技术干货,赶紧get下来~ ✔get 1:步进电机…

datax安装部署使用 windows

Datax在win10中的安装_windows安装datax_JMzz的博客-CSDN博客 DataX/userGuid.md at master alibaba/DataX GitHub 环境准备: 1.JDK(1.8以上,推荐1.8) 2.①Python(推荐Python2.7.X) ②Python(Python3.X.X的可以下载下面的安装包替换) python3.0需…

Docker安装——CentOS7.6(详细版)

ps:docker官网 在 CentOS 上安装 Docker 引擎 |官方文档 () 一、确定版本(必须是7以上版本) cat /etc/redhat-release 二、卸载旧版本(或者之前装过,没有安装过就不用管了) (root用…

OpenCV 项目开发实战--实现填充图像中的孔( Python / C++ ) 代码实现

文末附分别基于C++和python实现的相关测试代码下载链接 图 1. 左:原始的图像。中心:阈值和倒置。右:孔被填充。 在本教程中,我们将学习如何填充二值图像中的孔洞。考虑图 1 中左侧的图像。假设我们想要找到一个将硬币与背景分开的二进制掩码,如右图所示。在本教程中,包含…

2.0C++继承

C继承概述 C 中的继承是指一个类可以从另一个类中继承属性和方法,这个被继承的类称为基类或父类,继承它的类称为派生类或子类。 C三种继承 1、公有继承 public 在公有继承中,基类的公有成员和保护成员都可以被派生类访问,而基…

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

1、简介 在ROS2中自动导航使用Nav2来实现。 Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。 Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源; Nav…

【数字图像处理】2.几何变换

目录 2.1 仿射变换(二维) 2.2 投影变换(三维) 2.3 极坐标变换 2.3.1 将笛卡尔坐标转化为极坐标 2.3.2 将极坐标转换为笛卡尔坐标 2.3.3 利用极坐标变换对图像进行变换 几何变换:放大、缩小、旋转等,改…

[游戏开发]Unity中随机位置_在圆/椭圆/三角形/多边形/内随机一个点

[ 目录 ] 0. 前言1. 矩形内随机2. 圆形内随机3. 三角形内随机4. 多边形内随机(1)多边形分割为三角形(2)三角形面积计算(3)数据缓存(4)按权重随机(5)实现随机 …

理论【8】TCPUDP彻底搞懂了吗?

1 概述 对于TCP协议和UDP协议,大家应该都有所耳闻。TCP协议和UDP协议都工作在传输层,他们的目标都是在应用之间传输数据。我们常用的网络通信,比如浏览网页、查看邮件、电话通信等,都是通过这两种协议来进行数据传输的。 2 TCP…