多尺度目标检测 Multiscale Object Detection
多尺度目标检测 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 output
fmap = 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的更多相关文章
- 目标检测--Scalable Object Detection using Deep Neural Networks(CVPR 2014)
Scalable Object Detection using Deep Neural Networks 作者: Dumitru Erhan, Christian Szegedy, Alexander ...
- 基于深度学习的目标检测(object detection)—— rcnn、fast-rcnn、faster-rcnn
模型和方法: 在深度学习求解目标检测问题之前的主流 detection 方法是,DPM(Deformable parts models), 度量与评价: mAP:mean Average Precis ...
- 目标检测 - Tensorflow Object Detection API
一. 找到最好的工具 "工欲善其事,必先利其器",如果你想找一个深度学习框架来解决深度学习问题,TensorFlow 就是你的不二之选,究其原因,也不必过多解释,看过其优雅的代码架 ...
- 吴恩达《深度学习》第四门课(3)目标检测(Object detection)
3.1目标定位 (1)案例1:在构建自动驾驶时,需要定位出照片中的行人.汽车.摩托车和背景,即四个类别.可以设置这样的输出,首先第一个元素pc=1表示有要定位的物体,那么用另外四个输出元素表示定位框的 ...
- Tensorflow物体检测(Object Detection)API的使用
Tensorflow在更新1.2版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构(看这里),大大降低了吾等调包侠的开发难度,无论是fine-tuning还是该网络结构都方便了不少.这里 ...
- 目标检测(一)RCNN--Rich feature hierarchies for accurate object detection and semantic segmentation(v5)
作者:Ross Girshick,Jeff Donahue,Trevor Darrell,Jitendra Malik 该论文提出了一种简单且可扩展的检测算法,在VOC2012数据集上取得的mAP比当 ...
- 关于目标检测 Object detection
NO1.目标检测 (分类+定位) 目标检测(Object Detection)是图像分类的延伸,除了分类任务,还要给定多个检测目标的坐标位置. NO2.目标检测的发展 R-CNN是最早基于C ...
- [C4W3] Convolutional Neural Networks - Object detection
第三周 目标检测(Object detection) 目标定位(Object localization) 大家好,欢迎回来,这一周我们学习的主要内容是对象检测,它是计算机视觉领域中一个新兴的应用方向, ...
- 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- 最新版Theos.2016.08的安装方法
http://bbs.pediy.com/showthread.php?t=212425 标题: [翻译]手把手安装最新版Theos.2016.08作者: roysue时间: 2016-08-26,1 ...
- hdu5012 水搜索
题意: 给你一个正方体的初始状态和末状态,问你是否可以再6步之内转到这个状态,有四种转的方式,如果你面对的是正方向的正前方,那么转的方式就是 顺时针,逆时针,上,下. 思路: ...
- poj2175费用流消圈算法
题意: 有n个建筑,每个建筑有ai个人,有m个避难所,每个避难所的容量是bi,ai到bi的费用是|x1-x2|+|y1-y2|+1,然后给你一个n*m的矩阵,表示当前方案,问当前避难方案是否 ...
- POJ3233不错的矩阵(矩阵套矩阵)
题意: 给一个n*n的矩阵A,然后求S=A + A^2 + A^3 + ..+ A^k. 思路: 矩阵快速幂,这个题目挺新颖的,以往的矩阵快速幂都是退出公式,然后构造矩阵,这 ...
- 路由选择协议(RIP/OSPF)
目录 IGP RIP协议 OSPF协议 IS-IS协议 EIGRP协议 EGP BGP 我们可能会想,在偌大的网络中,我们是如何跟其他人通信的呢?我们是如何跟远在太平洋对面的美国小伙伴对话的呢? 这就 ...
- Run-Time Check Failure #0,The value of ESP was not properly saved 错误解决
调用DLL函数,出现错误 Run-Time Check Failure #0 - The value of ESP was not properly saved across a function c ...
- 【vue】报错This dependency was not found
报错 ERROR Failed to compile with 1 errors 10:33:34 ├F10: PM┤ This dependency was not found: * @/views ...
- 改善c++程序的150个建议(读后总结)-------19-26
19. 明白在c++中如何使用c c++可以兼容c的绝大部分代码,但是还是有一部分不能兼容. c语言的编译器在调用函数时会把函数翻译成 : "_函数名",例如: int nasa( ...
- Python 基础教程 —— Pandas 库常用方法实例说明
目录 1. 常用方法 pandas.Series 2. pandas.DataFrame ([data],[index]) 根据行建立数据 3. pandas.DataFrame ({dic}) ...
- 使用CSS样式的三种方法
一.内联样式 内联样式通过style属性来设置,属性值可以任意的CSS样式. 1 <!DOCTYPE html> 2 <html lang="en"> 3 ...