【深度学习笔记】9_5 多尺度目标检测

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图

9.5 多尺度目标检测

在9.4节(锚框)中,我们在实验中以输入图像的每个像素为中心生成多个锚框。这些锚框是对输入图像不同区域的采样。然而,如果以图像每个像素为中心都生成锚框,很容易生成过多锚框而造成计算量过大。举个例子,假设输入图像的高和宽分别为561像素和728像素,如果以每个像素为中心生成5个不同形状的锚框,那么一张图像上则需要标注并预测200多万个锚框( 561 × 728 × 5 561 \times 728 \times 5 561×728×5)。

减少锚框个数并不难。一种简单的方法是在输入图像中均匀采样一小部分像素,并以采样的像素为中心生成锚框。此外,在不同尺度下,我们可以生成不同数量和不同大小的锚框。值得注意的是,较小目标比较大目标在图像上出现位置的可能性更多。举个简单的例子:形状为 1 × 1 1 \times 1 1×1 1 × 2 1 \times 2 1×2 2 × 2 2 \times 2 2×2的目标在形状为 2 × 2 2 \times 2 2×2的图像上可能出现的位置分别有4、2和1种。因此,当使用较小锚框来检测较小目标时,我们可以采样较多的区域;而当使用较大锚框来检测较大目标时,我们可以采样较少的区域。

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

%matplotlib inline
from PIL import Image
import numpy as np
import torchimport sys
sys.path.append("..") 
import d2lzh_pytorch as d2limg = Image.open('../../docs/img/catdog.jpg')
w, h = img.size # (728, 561)

我们在5.1节(二维卷积层)中将卷积神经网络的二维数组输出称为特征图。
我们可以通过定义特征图的形状来确定任一图像上均匀采样的锚框中心。

下面定义display_anchors函数。我们在特征图fmap上以每个单元(像素)为中心生成锚框anchors。由于锚框anchors x x x y y y轴的坐标值分别已除以特征图fmap的宽和高,这些值域在0和1之间的值表达了锚框在特征图中的相对位置。由于锚框anchors的中心遍布特征图fmap上的所有单元,anchors的中心在任一图像的空间相对位置一定是均匀分布的。具体来说,当特征图的宽和高分别设为fmap_wfmap_h时,该函数将在任一图像上均匀采样fmap_hfmap_w列个像素,并分别以它们为中心生成大小为s(假设列表s长度为1)的不同宽高比(ratios)的锚框。

d2l.set_figsize()def display_anchors(fmap_w, fmap_h, s):# 前两维的取值不影响输出结果(原书这里是(1, 10, fmap_w, fmap_h), 我认为错了)fmap = torch.zeros((1, 10, fmap_h, fmap_w), dtype=torch.float32)# 平移所有锚框使均匀分布在图片上offset_x, offset_y = 1.0/fmap_w, 1.0/fmap_hanchors = d2l.MultiBoxPrior(fmap, sizes=s, ratios=[1, 2, 0.5]) + \torch.tensor([offset_x/2, offset_y/2, offset_x/2, offset_y/2])bbox_scale = torch.tensor([[w, h, w, h]], dtype=torch.float32)d2l.show_bboxes(d2l.plt.imshow(img).axes,anchors[0] * bbox_scale)

我们先关注小目标的检测。为了在显示时更容易分辨,这里令不同中心的锚框不重合:设锚框大小为0.15,特征图的高和宽分别为2和4。可以看出,图像上2行4列的锚框中心分布均匀。

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

在这里插入图片描述

我们将特征图的高和宽分别减半,并用更大的锚框检测更大的目标。当锚框大小设0.4时,有些锚框的区域有重合。

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

在这里插入图片描述

最后,我们将特征图的宽进一步减半至1,并将锚框大小增至0.8。此时锚框中心即图像中心。

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

在这里插入图片描述

既然我们已在多个尺度上生成了不同大小的锚框,相应地,我们需要在不同尺度下检测不同大小的目标。下面我们来介绍一种基于卷积神经网络的方法。

在某个尺度下,假设我们依据 c i c_i ci张形状为 h × w h \times w h×w的特征图生成 h × w h \times w h×w组不同中心的锚框,且每组的锚框个数为 a a a。例如,在刚才实验的第一个尺度下,我们依据10(通道数)张形状为 4 × 2 4 \times 2 4×2的特征图生成了8组不同中心的锚框,且每组含3个锚框。
接下来,依据真实边界框的类别和位置,每个锚框将被标注类别和偏移量。在当前的尺度下,目标检测模型需要根据输入图像预测 h × w h \times w h×w组不同中心的锚框的类别和偏移量。

假设这里的 c i c_i ci张特征图为卷积神经网络根据输入图像做前向计算所得的中间输出。既然每张特征图上都有 h × w h \times w h×w个不同的空间位置,那么相同空间位置可以看作含有 c i c_i ci个单元。
根据5.1节(二维卷积层)中感受野的定义,特征图在相同空间位置的 c i c_i ci个单元在输入图像上的感受野相同,并表征了同一感受野内的输入图像信息。
因此,我们可以将特征图在相同空间位置的 c i c_i ci个单元变换为以该位置为中心生成的 a a a个锚框的类别和偏移量。
不难发现,本质上,我们用输入图像在某个感受野区域内的信息来预测输入图像上与该区域位置相近的锚框的类别和偏移量。

当不同层的特征图在输入图像上分别拥有不同大小的感受野时,它们将分别用来检测不同大小的目标。例如,我们可以通过设计网络,令较接近输出层的特征图中每个单元拥有更广阔的感受野,从而检测输入图像中更大尺寸的目标。

我们将在9.7节(单发多框检测(SSD))中具体实现一个多尺度目标检测的模型。

小结

  • 可以在多个尺度下生成不同数量和不同大小的锚框,从而在多个尺度下检测不同大小的目标。
  • 特征图的形状能确定任一图像上均匀采样的锚框中心。
  • 用输入图像在某个感受野区域内的信息来预测输入图像上与该区域相近的锚框的类别和偏移量。

练习

  1. 深度神经网络学习图像特征级别抽象层次,随网络深度的增加而升级。在多尺度目标检测中,不同尺度的特征映射是否对应于不同的抽象层次?为什么?
  2. 在 9.5.1节中的实验里的第一个尺度(fmap_w=4, fmap_h=4)下,生成可能重叠的均匀分布的锚框。
  3. 给定形状为 1 × c × h × w 1\times c \times h\times w 1×c×h×w的特征图变量,其中 c c c h h h w w w分别是特征图的通道数、高度和宽度。怎样才能将这个变量转换为锚框类别和偏移量?输出的形状是什么?

注:除代码外本节与原书基本相同,原书传送门

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

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

相关文章

springboot+vue学生选课系统 java+ssm+idea+_mysql

系统包含三种角色:管理员、老师、学生,系统分为前台和后台两大模块,主要功能如下。 ide工具:IDEA 或者eclipse 编程语言: java 学生网上选课系统可以实现教室管理,老师管理,课程管理,教学计划管…

微服务分布式springcloud研究生志愿填报辅助系统

本文讲述了研究生志愿填报辅助系统。结合电子管理系统的特点,分析了研究生志愿填报辅助系统的背景,给出了研究生志愿填报辅助系统实现的设计方案。 本论文主要完成不同用户的权限划分,不同用户具有不同权限的操作功能,在用户模块&…

AJAX 03 XMLHttpRequest、Promise、封装简易版 axios

AJAX 学习 AJAX 3 原理01 XMLHttpRequest① XHR 定义② XHR & axios 关系③ 使用 XHR④ XHR查询参数案例:地区查询(URLSearchParams)⑤ XHR数据提交 POST 02 PromisePromise 使用Promise - 三种状态案例:使用Promise XHR 获取…

电商场景下 ES 搜索引擎的稳定性治理实践

继上文在完成了第一阶段 ES 搜索引擎的搭建后,已经能够实现对千万级别的商品索引的读写请求的支持。目前,单机房读流量在 500~1000 QPS 之间,写流量在 500 QPS 左右。 但随着业务的发展,问题也逐渐开始暴露&#xff0…

Wmware安装Linux(centerOS、Ubuntu版本)

目录 1、安装wmware 2、center版本 3、ubuntu版本 1、安装wmware 此处不做展开。 2、center版本 需要提前下载的文件: 无图形化界面https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso 有图形化界面https://mirrors.a…

增删卜易——八宫六十四卦

之前看倪海厦的《天纪》笔记里面提到了六十四卦世应,觉得不知道这个世应是啥意思。很长时间就没看了,偶然间看到了张文江教授写的一本书《潘雨廷先生谈话录》提到了《卜筮正宗》,“卜筮最后的判断是非理性转义,其他一切都只是形式”,“明人的著作,从京氏易出,如今天几日…

STM32 学习12 输入捕获与触摸按键

STM32 学习12 输入捕获与触摸按键 一、输入捕获介绍1. 概念2. STM32F1 资源3. 捕获原理 二、输入捕获配置步骤1. 使能时钟、设置端口模式2. 初始化定时器3. 设置捕获参数4. 开启捕获和定时器中断(溢出中断|更新中断)6. 编写定时器中断服务函数7. 使能定时…

针对教育行业的网络安全方案有哪些

智慧校园”是教育信息化进入高级阶段的表现形式,比“数字校园”更先进。集体知识共融、共生、业务应用融合创新、移动互联网物联网高速泛在是其重要特征。特别是在互联网教育的大环境下,为了更好的发挥智慧化教学服务和智慧化教学管理功能,需…

node.js入门—day02

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:给自己一个梦想,给世界一个惊喜。 🎅**学习目标: 坚持每一次的学习打卡 文章目录 什么是单线程…

计算机服务器中了devos勒索病毒怎么解密,devos勒索病毒解密工具流程

随着网络技术的不断发展与更新,越来越多的企业利用网络开展了各项工作业务,网络也为企业提供了极大便利,大大提高了办公效率。但网络是一把双刃剑,企业的数据安全问题一直是企业关心的主要话题,近日,云天数…

InDesign 2024:创意不熄火,设计不止步mac/win版

InDesign 2024,不仅仅是一个设计软件更新,它更是设计界的一次革命性飞跃。这款全新的设计软件将为您打开前所未有的创意大门,让您在设计的海洋中畅游无阻。 InDesign 2024 mac/win版获取 InDesign 2024以其卓越的性能和稳定性,确…

钉钉魔法盒:解锁企业数字化转型新密码

在数字化的浪潮中,一家公司在企业团队管理和商场综合运营中致力于实现数字化转型。于是,该公司在与无雀科技商讨后,决定引入钉钉平台,不仅要打造商业地产平台,更要优化团队管理流程,提升组织运营效率。 针对…

Linux中mysql的安装、远程访问、基础操作、文件导入

Linux中mysql的安装、远程访问、基础操作、文件导入 cheet card1. 安装1. 使用root账号安装mysql 2. 启动mysql并创建root、管理员两个账号3. 基础操作3.1 数据库的查看、创建、修改、删除3.2 mysql的数据类型3.3 数据表的基本操作3.4 数据表结构的修改3.5 表中数据的增、删、改…

git基础命令(一)

目录 基础概念git statusgit addgit diffgit loggit commit文件可以处于以下三种状态之一远程存储库与本地存储库参考 用于知识记录。后续有新的的内容,例子,将持续更新本文档。 基础概念 工作树:git add 之前,变动内容的文件列表…

从金蝶云星空到钉钉通过接口配置打通数据

从金蝶云星空到钉钉通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造面…

想要自己制作一款游戏,需要掌握哪些基本技能?

你是否曾经沉浸在游戏的世界中,感受到游戏带来的无限乐趣?你是否曾经梦想能够亲手制作一款属于自己的游戏,为玩家带来独特的体验?然而,要实现自己的游戏创作梦想,并不是一件轻松的事情。需要掌握各种技能和…

蓝桥杯历年真题省赛java b组 2016年 第六届 剪邮票

一、题目 剪邮票 如【图1.jpg】, 有12张连在一起的12生肖的邮票。 现在你要从中剪下5张来,要求必须是连着的。 (仅仅连接一个角不算相连) 比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。…

机器学习 Python库 乱记录

MLFlow—模型实验和跟踪 MLflow是一个平台,帮助你从头到尾管理你的机器学习实验,确保可追溯性和可重复性。它提供了一个集中的存储库,用于存储你的代码、数据和模型工件,以及一个跟踪系统,记录你所有的实验&#xff0c…

CSS 03

1.选择器 1.1 结构伪类选择器 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>结…

[云原生] Prometheus自动服务发现部署

一、部署服务发现 1.1 基于文件的服务发现 基于文件的服务发现是仅仅略优于静态配置的服务发现方式&#xff0c;它不依赖于任何平台或第三方服务&#xff0c;因而也是最为简单和通用的实现方式。 Prometheus Server 会定期从文件中加载 Target 信息&#xff0c;文件可使用 YAM…