多尺度目标检测 Multiscale Object Detection

我们在输入图像的每个像素上生成多个锚框。这些定位框用于对输入图像的不同区域进行采样。但是,如果锚定框是以图像的每个像素为中心生成的,很快就会有太多的锚框供我们计算。例如,我们假设输入图像的高度和宽度分别为561和728像素。如果以每个像素为中心生成五个不同形状的锚框,则超过两百万个锚框(561×728×5)需要在图像上进行预测和标记。

减少锚箱数量并不困难。一种简单的方法是对输入图像中的一小部分像素进行均匀采样,并生成以采样像素为中心的锚框。此外,我们可以在多个尺度上生成不同数量和尺寸的锚箱。请注意,较小的对象比较大的对象更有可能定位在图像上。这里,我们将使用一个简单的示例:

具有1×1, 1×2,和2×2在具有形状的图像上可能有4、2和1可能的位置2×2。 因此,当使用较小的锚定框来检测较小的对象时,我们可以采样更多的区域;当使用较大的锚框检测较大的对象时,我们可以采样较少的区域。

为了演示如何在多个比例上生成锚框,让我们先读一个图像。它的高度和宽度561×728像素。

%matplotlib inline

from d2l import mxnet as d2l

from mxnet import image, np, npx

npx.set_np()

img = image.imread(’…/img/catdog.jpg’)

h, w = img.shape[0:2]

h, w

(561, 728)

卷积神经网络(CNN)的二维阵列输出称为特征映射。通过定义特征映射的形状,可以确定任意图像上均匀采样的锚盒的中点。

函数display_anchors定义如下。我们将在特征地图fmap上的每个单元(像素)上生成锚定框。因为坐标轴x和y在锚定框中,锚定被特征地图fmap的宽度和高度分割,0到1之间的值可以用来表示锚定框在特征地图中的相对位置。由于锚框锚定点的中点与特征地图fmap上的所有单元重叠,因此锚定点在任何图像上的相对空间位置必须具有均匀的分布。具体来说,当特征图的宽度和高度分别设置为fmap_w和fmap_h时,该函数将对fmap_h行和fmap_w列进行统一采样,并将它们作为中点生成大小为s(我们假设列表s的长度为1)和不同纵横比(比率)的锚框。

def display_anchors(fmap_w, fmap_h, s):

d2l.set_figsize((3.5, 2.5))# The values from the first two dimensions will not affect the outputfmap = np.zeros((1, 10, fmap_w, fmap_h))anchors = npx.multibox_prior(fmap, sizes=s, ratios=[1, 2, 0.5])bbox_scale = np.array((w, h, w, h))d2l.show_bboxes(d2l.plt.imshow(img.asnumpy()).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])

由于我们已经在多个尺度上生成了不同大小的锚盒,因此我们将使用它们来检测不同尺度下不同大小的对象。现在我们将介绍一种基于卷积神经网络(CNNs)的方法。

在一定的范围内,假设我们产生高×宽具有不同中点的锚定框集基于ci,带形状的特征地图高×宽,每组锚箱数量为a。

例如,对于第一个比例的实验,我们基于10个(通道数)特征映射生成16组具有不同中点的锚盒,形状为4×4个,每套含3个锚箱。

根据地面真实边界框的分类和位置,为每个锚框标记一个类别和偏移量。在当前尺度下,目标检测模型需要预测目标的类别和偏移量高×宽,基于输入图像具有不同中点的定位框集。

我们假设ci特征图是CNN基于输入图像的中间输出。因为每个特征地图都有高×宽不同的空间位置,相同的位置会有ci单位。根据感受野的定义,ci同一空间位置的特征图单元在输入图像上具有相同的感受野。因此,它们表示输入图像在同一感受野中的信息。

因此,我们可以改变ci,在同一空间位置的要素映射单位生成一个定位框。不难看出,本质上,我们利用输入图像在某个接收野的信息来预测输入图像上靠近场的锚盒的种类和偏移量。

当不同层次的特征映射在输入图像上有不同大小的接收野时,它们被用来检测不同大小的目标。例如,我们可以在一个更大的图像接收层设计一个更大的图像接收层。

Summary

We can generate anchor boxes with different numbers and sizes on
multiple scales to detect objects of different sizes on multiple
scales.
The shape of the feature map can be used to determine the midpoint of the anchor boxes that uniformly sample any image.
We use the information for the input image from a certain receptive
field to predict the category and offset of the anchor boxes close to
that field on the image.

多尺度目标检测 Multiscale Object Detection相关推荐

  1. ECCV2018目标检测(object detection)算法总览

    ECCV2018目标检测(object detection)算法总览 原文:https://blog.csdn.net/u014380165/article/details/82025720 1.IO ...

  2. CVPR2018上关于目标检测(object detection)

    CVPR2018上关于目标检测(object detection)的论文比去年要多很多,而且大部分都有亮点.从其中挑了几篇非常有意思的文章,特来分享,每篇文章都有详细的博客笔记,可以点击链接阅读. 1 ...

  3. 第三周 目标检测(Object detection)

    第三周 目标检测(Object detection) 文章目录 第三周 目标检测(Object detection) 3.1 目标定位(Object localization) 3.2 特征点检测(L ...

  4. CVPR2018 目标检测(object detection)算法总览

    CVPR2018上关于目标检测(object detection)的论文比去年要多很多,而且大部分都有亮点.从其中挑了几篇非常有意思的文章,特来分享,每篇文章都有详细的博客笔记,可以点击链接阅读. 1 ...

  5. ssd目标检测训练自己的数据_目标检测Tensorflow object detection API之训练自己的数据集...

    构建自己的模型之前,推荐先跑一下Tensorflow object detection API的demo JustDoIT:目标检测Tensorflow object detection API​zh ...

  6. 使用自己的数据训练MobileNet SSD v2目标检测--TensorFlow object detection

    使用自己的数据训练MobileNet SSD v2目标检测--TensorFlow object detection 1. 配置 1.1 下载models-1.12.0 2. 准备数据集 3. 配置文 ...

  7. 目标检测--R-FCN: Object Detection via Region-based Fully Convolutional Networks

    R-FCN: Object Detection via Region-based Fully Convolutional Networks Code: https://github.com/daiji ...

  8. 目标检测(Object Detection)综述--R-CNN/Fast R-CNN/Faster R-CNN/YOLO/SSD

    1. 目标检测 1.1 简介 如何理解一张图片?根据后续任务的需要,有三个主要的层次. 一是分类(Classification),即是将图像结构化为某一类别的信息,用事先确定好的类别(string)或 ...

  9. 目标检测(object detection)—— RCNN总结

    建议 在阅读本文之前,请先了解AlexNet 一.论文方法论总结 1. 要解决的问题 (1)如何使用深度网络定位目标 (2)如何使用少量带标注的检测数据(detection data)训练一个可靠的模 ...

最新文章

  1. spring boot Redis集成—RedisTemplate
  2. UWP开发细节记录:判断文件类型
  3. cmd完成拷贝文件,并生成两个快捷脚本
  4. 【总结】Qt+Mysql5.5中文乱码解决
  5. 蹲下突然站起来总是会头晕,是什么原因?
  6. 计算机设备耗材管理系统,实验室耗材管理方法、系统、计算机设备和存储介质与流程...
  7. 4行代码,Python搞定美图秀秀!
  8. 于仕琪libfacedetection WIN10 VS2015
  9. 怎么把柱形图和折线图放在一起_excel怎么把柱状图和折线图合并
  10. 读后感----我奋斗了18年还是不能和你坐在一起喝咖啡
  11. 层次分析法(附代码)
  12. 《数据结构上机实验(C语言实现)》笔记(2 / 1)
  13. 杜立特尔分解法 MATLAB,杜立特分解法.doc
  14. 妇科宫颈细胞学计算机检查,宫颈细胞学检查是怎么回事?
  15. 基于 ffmpeg + Webassembly 实现前端视频帧提取
  16. 极兔速递 一面面试题
  17. JVM篇·垃圾收集器与内存分配策略
  18. python控件_python常用控件
  19. 微信小程序使用canvas制作拼图动画
  20. sql server数据库添加 mdf数据库文件,遇到的报错

热门文章

  1. 记录win10快捷键
  2. 王道考研 计算机网络笔记 第四章:网络层
  3. TensorRT优化方案图例
  4. HarmonyOS技术特性
  5. 如何在CPU上优化GEMM(上)
  6. 2021年大数据Flink(四十六):扩展阅读 异步IO
  7. 微信小程序bindtap 与 catchtap 是使用
  8. github checkout 使用
  9. android接入支付宝提示支付取消的方法处理
  10. Android studio 代码字体模糊的处理方法