深度学习入门(四十四)计算机视觉——多尺度目标检测

news2024/11/23 10:54:00

深度学习入门(四十四)计算机视觉——多尺度目标检测

  • 前言
  • 计算机视觉——多尺度目标检测
    • 教材
      • 1 多尺度锚框
      • 2 多尺度检测
      • 3 小结

前言

核心内容来自博客链接1博客连接2希望大家多多支持作者
本文记录用,防止遗忘

计算机视觉——多尺度目标检测

教材

在上一节锚框中,我们以输入图像的每个像素为中心,生成了多个锚框。 基本而言,这些锚框代表了图像不同区域的样本。 然而,如果为每个像素都生成的锚框,我们最终可能会得到太多需要计算的锚框。 想象一个 561 × 728 561 \times 728 561×728的输入图像,如果以每个像素为中心生成五个形状不同的锚框,就需要在图像上标记和预测超过200万个锚框( 561 × 728 × 5 561 \times 728 \times 5 561×728×5)。

1 多尺度锚框

你可能会意识到,减少图像上的锚框数量并不困难。 比如,我们可以在输入图像中均匀采样一小部分像素,并以它们为中心生成锚框。 此外,在不同尺度下,我们可以生成不同数量和不同大小的锚框。 直观地说,比起较大的目标,较小的目标在图像上出现的可能性更多样。 例如, 1 × 1 1 \times 1 1×1 1 × 2 1 \times 2 1×2 2 × 2 2 \times 2 2×2的目标可以分别以4、2和1种可能的方式出现在 2 × 2 2 \times 2 2×2图像上。 因此,当使用较小的锚框检测较小的物体时,我们可以采样更多的区域,而对于较大的物体,我们可以采样较少的区域。

为了演示如何在多个尺度下生成锚框,让我们先读取一张图像。 它的高度和宽度分别为561和728像素。

%matplotlib inline
import torch
from d2l import torch as d2l

img = d2l.plt.imread('../img/catdog.jpg')
h, w = img.shape[:2]
h, w

回想一下,在图像卷积一节中,我们将卷积图层的二维数组输出称为特征图。 通过定义特征图的形状,我们可以确定任何图像上均匀采样锚框的中心。

display_anchors函数定义如下。 我们在特征图(fmap)上生成锚框(anchors),每个单位(像素)作为锚框的中心。 由于锚框中的 ( x , y ) (x, y) (x,y)轴坐标值(anchors)已经被除以特征图(fmap)的宽度和高度,因此这些值介于0和1之间,表示特征图中锚框的相对位置。

由于锚框(anchors)的中心分布于特征图(fmap)上的所有单位,因此这些中心必须根据其相对空间位置在任何输入图像上均匀分布。 更具体地说,给定特征图的宽度和高度fmap_w和fmap_h,以下函数将均匀地对任何输入图像中fmap_h行和fmap_w列中的像素进行采样。 以这些均匀采样的像素为中心,将会生成大小为s(假设列表s的长度为1)且宽高比(ratios)不同的锚框。

def display_anchors(fmap_w, fmap_h, s):
    d2l.set_figsize()
    # 前两个维度上的值不影响输出
    fmap = torch.zeros((1, 10, fmap_h, fmap_w))
    anchors = d2l.multibox_prior(fmap, sizes=s, ratios=[1, 2, 0.5])
    bbox_scale = torch.tensor((w, h, w, h))
    d2l.show_bboxes(d2l.plt.imshow(img).axes,
                    anchors[0] * bbox_scale)

首先,让我们考虑探测小目标。 为了在显示时更容易分辨,在这里具有不同中心的锚框不会重叠: 锚框的尺度设置为0.15,特征图的高度和宽度设置为4。 我们可以看到,图像上4行和4列的锚框的中心是均匀分布的。

display_anchors(fmap_w=4, fmap_h=4, s=[0.15])

输出:

在这里插入代码片

然后,我们将特征图的高度和宽度减小一半,然后使用较大的锚框来检测较大的目标。 当尺度设置为0.4时,一些锚框将彼此重叠。

display_anchors(fmap_w=2, fmap_h=2, s=[0.4])

输出:
在这里插入图片描述

最后,我们进一步将特征图的高度和宽度减小一半,然后将锚框的尺度增加到0.8。 此时,锚框的中心即是图像的中心。

display_anchors(fmap_w=1, fmap_h=1, s=[0.8])

输出:
在这里插入图片描述

2 多尺度检测

既然我们已经生成了多尺度的锚框,我们就将使用它们来检测不同尺度下各种大小的目标。 下面,我们介绍一种基于CNN的多尺度目标检测方法,将在之后的单发多框检测一节中实现。

在某种规模上,假设我们有 c c c张形状为 h × w h \times w h×w的特征图。 使用前面给出的方法,我们生成了 h w hw hw组锚框,其中每组都有 a a a个中心相同的锚框。 例如,在上面小节的实验的第一个尺度上,给定10个(通道数量) 4 × 4 4 \times 4 4×4的特征图,我们生成了16组锚框,每组包含3个中心相同的锚框。 接下来,每个锚框都根据真实值边界框来标记了类和偏移量。 在当前尺度下,目标检测模型需要预测输入图像上 h w hw hw组锚框类别和偏移量,其中不同组锚框具有不同的中心。

假设此处的 c c c张特征图是CNN基于输入图像的正向传播算法获得的中间输出。 既然每张特征图上都有 h w hw hw个不同的空间位置,那么相同空间位置可以看作含有 c c c个单元。 根据图像卷积一节中对感受野的定义,特征图在相同空间位置的 c c c个单元在输入图像上的感受野相同: 它们表征了同一感受野内的输入图像信息。 因此,我们可以将特征图在同一空间位置的 c c c个单元变换为使用此空间位置生成的 a a a个锚框类别和偏移量。 本质上,我们用输入图像在某个感受野区域内的信息,来预测输入图像上与该区域位置相近的锚框类别和偏移量。

当不同层的特征图在输入图像上分别拥有不同大小的感受野时,它们可以用于检测不同大小的目标。 例如,我们可以设计一个神经网络,其中靠近输出层的特征图单元具有更宽的感受野,这样它们就可以从输入图像中检测到较大的目标。

简言之,我们可以利用深层神经网络在多个层次上对图像进行分层表示,从而实现多尺度目标检测。

3 小结

1、在多个尺度下,我们可以生成不同尺寸的锚框来检测不同尺寸的目标。
2、通过定义特征图的形状,我们可以决定任何图像上均匀采样的锚框的中心。
3、我们使用输入图像在某个感受野区域内的信息,来预测输入图像上与该区域位置相近的锚框类别和偏移量。
4、我们可以通过深入学习,在多个层次上的图像分层表示进行多尺度目标检测。

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

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

相关文章

【Hack The Box】linux练习-- Postman

HTB 学习笔记 【Hack The Box】linux练习-- Postman 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月17日🌴 &#x1f…

大学生旅游风景主题dreamweaver网页设计大作业-陕西渭南HTML+CSS制作网页

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

从不学无术到架构师Leader:这份java面试知识宝典,一举斩获京东T8

前言 面试了大大小小各种公司,有BAT的,上市的,AB各种轮的,初创的……今天大概列举了下,至少有30家公司。 在这里我总结了求职面试需要注意的各种问题,希望可以用我收集的《Java面试核心知识笔记》及面试经…

element UI 组件封装--搜索表单(含插槽和内嵌组件)

组件封装–搜索表单 searchForm.vue 可根据需要&#xff0c;参考姓名和工作自行增加更多常用的默认搜索项 <template><div style"padding: 30px; width: 300px"><el-formref"searchFormRef":model"searchData":label-width"…

伽马校正笔记(Gamma Correction)

在数字图像系统中&#xff0c;伽马&#xff08;Gamma&#xff09;是一个重要的但很少被正确理解的特性。它定义了一个像素的数值和对应的实际亮度之间的关系。 人眼感知的亮度和相机“看到”的亮度区别 对于数码相机来说&#xff0c;当检测的光子数增加一倍时&#xff0c;sens…

Win11蓝屏代码IRQL NOT LESS OR EQUAL的处理方法

蓝屏错误IRQL NOT LESS OR EQUAL是用户常见的系统故障了&#xff0c;升级到Win11新系统也遇到了同样的问题&#xff0c;那么Win11蓝屏问题IRQL NOT LESS OR EQUAL要如何解决&#xff1f;下面就来看看小编整理的解决办法。 什么是 IRQL_NOT_LESS_OR_EQUAL 错误&#xff1f; IRQL…

【Docker】Docker入门学习

【Docker】学习docker 1.Docker安装与启动 1.1.安装 【第一步】yum包更新到最新版本 sudo yum update【第二步】安装需要的软件包&#xff0c;yum-util提供的yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的 sudo yum install -y yum-utils device-m…

三菱FX3U——ST编程定时器和计数器

在部件选择——FB——选择定时器类型 双击弹出标签登录/选择对话框&#xff0c;点击应用&#xff1b; 编辑器自动插入TON_1; 光标放在TON_1后&#xff0c;按下CTRLF1&#xff0c;补全代码; IN&#xff1a; 输入&#xff0c;PT&#xff1a;定时时间&#xff0c;Q&#xff1a;输…

windows上使用Gitblit搭建git服务仓库

第一步: 由于要运行jar包&#xff0c;得先安装好java环境&#xff0c;安装环境的教程很多&#xff0c;这步不做赘述 第二步&#xff1a; 找到Gitblit的安装包 http://gitblit.github.io/gitblit/ 这是官网地址&#xff0c;我就没下载成功过&#xff0c;你要不信&#xff0c;也可…

PyQt5 QMediaPlayer播放不了视频

代码&#xff1a; 编辑器 pycharm: from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent import sysapp QApplication(sys.argv)win QWidge…

数据库主键一定要自增的吗?有哪些场景下不建议自增?

我们平时建表的时候&#xff0c;一般会像下面这样。 CREATE TABLE user (id int NOT NULL AUTO_INCREMENT COMMENT 主键,name char(10) NOT NULL DEFAULT COMMENT 名字,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;出于习惯&#xff0c;我们一般会加一列id作为…

K8s基础之-Pod

第一章&#xff1a;什么是Pod 1.1 创建一个Pod1.2 更改Pod的启动命令和参数1.3 Pod状态及pod故障排查命令1.4 Pod镜像拉取策略1.5 Pod重启策略 第二章&#xff1a;Pod探针 2.1 Pod的三种探针2.2 Pod探针的实现方式 2.2.1 数据库建表语句2.2.2 数据库解析2.2.3 修改Hive数据库…

Servlet常用API

目录 一、HttpServlet 1、HttpServlet核心方法 2、Servlet的生命周期 二、HttpRequest 1、HttpRequest核心方法 2、代码示例 示例1&#xff1a;打印请求信息 示例2&#xff1a;获取GET请求中的query string 示例3&#xff1a;获取POST请求中的query string(form表单形…

功率谱分析笔记-------脑电相关

1&#xff1a;功率谱分析的方法介绍 功率谱分析的方法大致可以分为两大类&#xff1a;第一类是经典的功率谱计算方法&#xff0c;第二类是现代功率谱计算方法&#xff0c;如图1所示。其中第一类经典功率谱分析方法&#xff0c;又可以分为直接法、间接法和改进的直接法。直接法…

常见移动端导航类型

手机导航设计是人机交互最重要的桥梁和平台&#xff0c;旨在引导用户正确的方向&#xff0c;不迷路。 好的菜单设计不仅能提升整个产品的用户体验&#xff0c;还能让用户耳目一新。 一、导航菜单的作用是什么 &#xff1f; 1.提升产品内容和功能结构和层次 2.重点展示核心功能…

windows cmd 常用操作命令

文章目录进程端口相关打开面板快捷键防火墙相关进程端口相关 可以查看本机开放的全部端口. netstat -ano 协议&#xff1a;分为TCP和UDP 本地地址&#xff08;Local Address&#xff09;&#xff1a;代表本机IP地址和打开的端口号 外部地址&#xff08;Foreign Address&#…

字节8年测试开发工程师感悟,说说我们自动化测试平台的进阶之路

前言 自2015年10月底加入Pactera Edge以来&#xff0c;我一直服务于客户的Quality Engineering项目。这之间经历了很多的技术变革&#xff0c;包括探索&#xff0c;实施&#xff0c;维护&#xff0c;淘汰等一整个流程。下面就写一下项目中 UTAP(unified testing automation pl…

Java多线程(三)

目录 一、线程的同步&#xff08;二&#xff09; 同步机制释放锁的操作 不会释放锁的操作 线程的死锁问题 死锁 解决方法 Lock(锁) 使用Lock(锁)创建多线程步骤&#xff1a; 使用Lock解决窗口售票问题 synchronized与Lock的对比 练习 二、线程的通信 通过例题说明线…

优化器-SQL语句分析与优化

一、连接-配置优化 1.1 连接数过多问题 有时会碰到Mysql&#xff1a;error 1040&#xff1a;Too many connection的错误。原因&#xff1a;超过了服务端设置的最大并发连接数。 1.2 从两个方面解决问题 服务端&#xff0c;增加服务端可用连接数&#xff1b;客户端&#xff0…

如何在视频上添加水印?建议收藏这些方法

小伙伴们平时会刷短视频吗&#xff1f;那你们会不会自己也在平台上&#xff0c;发布一些自己剪辑的短视频呢&#xff1f;在网上发布的视频&#xff0c;很容易被一些不安好心的人&#xff0c;直接窃取&#xff0c;所以为视频添加自己的水印显得尤为重要。那你们知道如何给视频加…