电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>PyTorch教程14.7之单发多框检测

PyTorch教程14.7之单发多框检测

2023-06-05 | pdf | 0.32 MB | 次下载 | 免费

资料介绍

第 14.3 节第 14.6 节中,我们介绍了边界框、锚框、多尺度目标检测和目标检测数据集。现在我们准备使用这些背景知识来设计一个目标检测模型:单次多框检测(SSDLiu et al. , 2016该模型简单、快速、应用广泛。虽然这只是大量目标检测模型中的一种,但本节中的一些设计原则和实现细节也适用于其他模型。

14.7.1。模型

图 14.7.1提供了单次多框检测设计的概述。该模型主要由一个基础网络和几个多尺度特征图块组成。基础网络用于从输入图像中提取特征,因此可以使用深度 CNN。例如,原始的单次多框检测论文采用在分类层之前截断的VGG网络 Liu et al. , 2016,而 ResNet 也被普遍使用。通过我们的设计,我们可以让基础网络输出更大的特征图,从而生成更多的锚框来检测更小的物体。随后,每个多尺度特征图块从前一个块减少(例如,减半)特征图的高度和宽度,并使特征图的每个单元增加其在输入图像上的感受野。

回想一下14.5 节中深度神经网络通过图像的分层表示进行多尺度目标检测的设计 由于靠近图 14.7.1顶部的多尺度特征图较小但具有较大的感受野,因此它们适用于检测较少但较大的对象。

简而言之,通过其基础网络和多个多尺度特征图块,单次多框检测生成不同数量的不同大小的锚框,并通过预测这些锚框的类别和偏移量(因此边界盒);因此,这是一个多尺度目标检测模型。

https://file.elecfans.com/web2/M00/A9/CC/poYBAGR9O62ARusYAAorLEsLQmk559.svg

图 14.7.1作为多尺度目标检测模型,单次多框检测主要由一个基础网络和几个多尺度特征图块组成。

下面,我们将描述图14.7.1中不同块的实现细节。首先,我们讨论如何实现类和边界框预测。

14.7.1.1。类别预测层

让对象类的数量为q. 然后anchor boxes有 q+1类,其中类 0 是背景。在某种程度上,假设特征图的高度和宽度是hw, 分别。什么时候a以这些特征图的每个空间位置为中心生成anchor boxes,一共 hwaanchor boxes需要分类。由于参数化成本可能很高,这通常会使完全连接层的分类变得不可行。回想一下我们在8.3 节中如何使用卷积层的通道来预测类别单次多框检测使用相同的技术来降低模型的复杂性。

具体来说,类预测层使用卷积层而不改变特征图的宽度或高度。这样,在特征图的相同空间维度(宽度和高度)下,输出和输入之间可以存在一一对应关系。更具体地说,输出特征映射的通道在任何空间位置(x, y) 表示以 (x,y) 输入特征图。为了产生有效的预测,必须有a(q+1)输出通道,其中对于相同的空间位置,具有索引的输出通道i(q+1)+j 代表类别的预测j (0≤j≤q) 对于锚框i (0≤i).

下面我们定义这样一个类预测层,指定aq分别通过参数num_anchorsnum_classes该层使用了3×3填充为1的卷积层。该卷积层的输入和输出的宽度和高度保持不变。

%matplotlib inline
import torch
import torchvision
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l


def cls_predictor(num_inputs, num_anchors, num_classes):
  return nn.Conv2d(num_inputs, num_anchors * (num_classes + 1),
           kernel_size=3, padding=1)
%matplotlib inline
from mxnet import autograd, gluon, image, init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()

def cls_predictor(num_anchors, num_classes):
  return nn.Conv2D(num_anchors * (num_classes + 1), kernel_size=3,
           padding=1)

14.7.1.2。边界框预测层

边界框预测层的设计与类预测层的设计类似。唯一的区别在于每个锚框的输出数量:这里我们需要预测四个偏移量而不是q+1类。

def bbox_predictor(num_inputs, num_anchors):
  return nn.Conv2d(num_inputs, num_anchors * 4, kernel_size=3, padding=1)
def bbox_predictor(num_anchors):
  return nn.Conv2D(num_anchors * 4, kernel_size=3, padding=1)

14.7.1.3。连接多个尺度的预测

正如我们提到的,单次多框检测使用多尺度特征图来生成锚框并预测它们的类别和偏移量。在不同的尺度下,特征图的形状或以同一单元为中心的锚框数量可能会有所不同。因此,不同尺度的预测输出的形状可能会有所不同。

在下面的例子中,我们构建了两种不同比例的特征图,Y1并且Y2,对于同一个小批量,其中 的高度和宽度Y2是 的一半Y1让我们以类别预测为例。Y1假设分别为和中的每个单元生成 5 个和 3 个锚框Y2进一步假设对象类的数量为 10。对于特征图Y1Y2类预测输出中的通道数为5×(10+1)=553×(10+1)=33,其中任一输出形状为(批量大小、通道数、高度、宽度)。

def forward(x, block):
  return block(x)

Y1 = forward(torch.zeros((2, 8, 20, 20)), cls_predictor(8, 5, 10))
Y2 = forward(torch.zeros((2, 16, 10, 10)), cls_predictor(16, 3, 10))
Y1.shape, Y2.shape
(torch.Size([2, 55, 20, 20]), torch.Size([2, 33, 10, 10]))
def forward(x, block):
  block.initialize()
  return block(x)

Y1 = forward(np.zeros((2, 8, 20, 20)), cls_predictor(5, 10))
Y2 = forward(np.zeros((2, 16, 10, 10)), cls_predictor(3, 10))
Y1.shape, Y2

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费