【深度学习笔记】计算机视觉——多尺度目标检测

多尺度目标检测

sec_anchor中,我们以输入图像的每个像素为中心,生成了多个锚框。
基本而言,这些锚框代表了图像不同区域的样本。
然而,如果为每个像素都生成的锚框,我们最终可能会得到太多需要计算的锚框。
想象一个 561 × 728 561 \times 728 561×728的输入图像,如果以每个像素为中心生成五个形状不同的锚框,就需要在图像上标记和预测超过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的目标可以分别以4、2和1种可能的方式出现在 2 × 2 2 \times 2 2×2图像上。
因此,当使用较小的锚框检测较小的物体时,我们可以采样更多的区域,而对于较大的物体,我们可以采样较少的区域。

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

%matplotlib inline
import torch
from d2l import torch as d2limg = d2l.plt.imread('../img/catdog.jpg')
h, w = img.shape[:2]
h, w
(561, 728)

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

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

由于锚框(anchors)的中心分布于特征图(fmap)上的所有单位,因此这些中心必须根据其相对空间位置在任何输入图像上均匀分布。
更具体地说,给定特征图的宽度和高度fmap_wfmap_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])


在这里插入图片描述

多尺度检测

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

在某种规模上,假设我们有 c c c张形状为 h × w h \times w h×w的特征图。
使用 subsec_multiscale-anchor-boxes中的方法,我们生成了 h w hw hw组锚框,其中每组都有 a a a个中心相同的锚框。
例如,在 subsec_multiscale-anchor-boxes实验的第一个尺度上,给定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个单元。
根据 sec_conv_layer中对感受野的定义,特征图在相同空间位置的 c c c个单元在输入图像上的感受野相同:
它们表征了同一感受野内的输入图像信息。
因此,我们可以将特征图在同一空间位置的 c c c个单元变换为使用此空间位置生成的 a a a个锚框类别和偏移量。
本质上,我们用输入图像在某个感受野区域内的信息,来预测输入图像上与该区域位置相近的锚框类别和偏移量。

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

简言之,我们可以利用深层神经网络在多个层次上对图像进行分层表示,从而实现多尺度目标检测。
sec_ssd,我们将通过一个具体的例子来说明它是如何工作的。

小结

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

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

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

相关文章

速盾cdn:快速高防cdn加速

速盾CDN(Sudun CDN)是一种快速高防CDN加速服务,CDN(内容分发网络)是一种通过在全球各地部署服务器节点来加速网站内容传输的技术,可以提高网站的访问速度和稳定性。 传统的网络架构通常会面临一些问题&…

SQL教学: MySQL高级数据操作--深入理解DML语句的技巧与策略

欢迎回到我们的SQL-DML语句教学系列。在之前的文章中,我们已经介绍了DDL语句的基础知识,以及DML语句的基本操作和进阶用法。今天,我们将进一步深入探讨DML语句的高级用法,包括合并查询、索引使用、锁机制以及性能优化等方面的内容…

【PHP】PHP实现与硬件串口交互,向硬件设备发送指令数据(下)

目录 一、前言 二、 效果图 三、安装PHP扩展 四、添加模拟串口 五、PHP发送数据给硬件 PHP代码 前端代码 一、前言 上篇文章写到PHP怎么与硬件串口交互之实时接收硬件发送的数据,这里同样是以天平为例,介绍怎么向硬件设备发送数据, 需…

python常见面试题汇总

在Python面试中,常见的面试问题可以覆盖基础语法、面向对象编程、数据处理和分析,以及特定库的掌握。以下是你可能在面试中遇到的一些典型问题和相应的答案。 基础语法问题: 解释Python中的列表和元组之间的主要区别是什么? 列表是…

深度学习500问——Chapter02:机器学习基础(3)

文章目录 2.10 主成分分析(PCA) 2.10.1 主成分分析(PCA)思想总结 2.10.2 图解PCA核心思想 2.10.3 PCA算法推理 2.10.4 PCA算法流程总结 2.10.5 PCA算法主要优缺点 2.10.6 降维的必要性及目的 2.10.7 KPCA与PCA的区别 2.11 模型评估…

修改uboot连接的主机的ip地址

前言 这一节是因为最近改变了一下连接主机的ip,然后就需要修改一下uboot中一些变量的值。平台是i.mx6ull。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏&#x…

记录ssh root@43.136.175.100连接服务器失败

问题描述: 云服务器重装系统之后, 使用ssh root43.136.175.100连接服务器失败 报错 PS C:\Users\yangjin> ssh root43.136.175.100WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! …

利用excel文件增量同步一个库的数据并自动校正两端数据库条数不一致

利用excel文件增量同步一个库的数据并自动校正两端数据库条数不一致 现在有sqlserver和mysql两个库上的表在进行同步,sqlserver上的是源表,mysql上是目标表。 我们就把sqlserver上的数据同步到mysql上 mysql 是没有数据的。 sqlserver的三个表只是创建了…

利用Python自动化日常任务

在快节奏的现代生活中,时间就是一切。幸运的是,Python提供了一系列强大的库和工具,可以帮助我们自动化那些乏味且重复的任务,从而释放我们的时间,让我们可以专注于更有创造性和有意义的工作。下面,我们将探…

【十】【SQL】合并查询和内连接

在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union ,union all Union 该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。 Union all 该操作符用于取得两个结果集的并集。…

【C++】 6-2 用动态分配空间的方法计算Fibonacci数列的前n项 分数 10

6-2 用动态分配空间的方法计算Fibonacci数列的前n项 分数 10 全屏浏览 切换布局 作者 刘利 单位 惠州学院 用动态分配空间的方法计算Fibonacci数列的前n项并存储到动态分配的存储空间中,然后按每行5个数列的格式输出结果 函数接口定义: void Fib ( …

6、Linux-服务管理、权限管理和授权(sudo权限)

一、服务管理 systemctl list-unit-files:查看服务systemctl start 服务名:启动服务systemctl stop 服务名:关闭服务systemctl restart 服务名:重启服务systemctl status 服务名:查看服务状态systemctl enable 服务名…

phpspreadsheet 读取excel 获取日期时间变成浮点数

Excel存储日期和时间作为小数值。 日期是从 1900 年开始的天数,时间是一天的部分,右边的小数部分。 为了将这种形式的日期和时间转换为 PHP 日期和时间,我们可以使用 PhpSpreadsheet 提供的一个工具方法:PhpOffice\PhpSpreadshee…

BioTech - 药物晶型预测与剂型设计 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136441046 药物晶型预测与剂型设计是指利用计算机模拟和优化药物分子在固态形式下的结构、性质和稳定性,以及与制剂工艺和质…

Python实现微信电脑版微信支付收款监听及支付回调通知

摘要 为什么要监听收款?那是因为现在还有人在使用微信的收款码、商业码、赞赏码实现免签支付,这类实现方法的最终方案还是监听收款结果。 技术原理 通过Python实时解析微信电脑版控件的文本内容来获取信息。不需要Hook和抓包,也不是走任何…

[DevOps云实践] 跨AWS账户及Region调用Lambda

[DevOps云实践] 跨AWS账户及Region调用Lambda 本文將幫大家理清一下幾個問題: 如何跨不同AWS賬戶,不同Region來調用Lambda? 不同Lambda之間如何互相調用?有時我們希望我們的Lambda脚本能夠運行在多個AWS賬戶中的不同Region下,但是,我們還不希望每個下面都去建立一個運行…

[python] dataclass 快速创建数据类

在Python中,dataclass是一种用于快速创建数据类的装饰器和工具。自Python 3.7起,通过标准库中的dataclasses模块引入。它的主要目的是简化定义类来仅存储数据的代码量。通常,这样的类包含多个初始化属性,但没有复杂的方法&#xf…

剑指offer面试题23 从上往下打印二叉树

考察点 树的遍历知识点 题目 分析 题目要求从上到下打印二叉树,类似这种题目的思路就是用归纳法,通过一些例子找到数据的规律找一个合适的数据结构,这道题目很明显不能按照树的三种遍历方式去解,要按照6,10&#xf…

【NR 定位】3GPP NR Positioning 5G定位标准解读(二)

目录 前言 2. UE定位方法的作用 3. 标准UE定位方法 3.1 引言 3.2 网络辅助的GNSS方法 3.3 OTDOA定位 3.4 增强小区ID方法 3.5 气压传感器定位 3.6 WLAN定位 3.7 蓝牙定位 3.8 TBS定位 3.9 运动传感器定位 3.10 NR增强小区ID方法 3.11 多RTT定位 3.12 DL-AoD定位…

大厂求职者必看!如何用简单工厂模式征服面试官?

「面试官」: 您好!今天我们将探讨简单工厂模式。首先,您能解释一下什么是简单工厂模式吗? 「求职者」: 当然,简单工厂模式是一种创建对象的设计模式,「它通过一个单独的工厂类来决定实例化哪一个继承类。这个模式能够解…