目标检测之SPPNET
大致流程:
1. 首先通过选择性搜索(selective search),对待检测的图片进行搜索出2000个候选窗口。
2.特征提取阶段。把整张待检测的图片,输入CNN中,进行一次性特征提取,得到feature maps,然后在feature maps中找到各个候选框的区域,再对各个候选框采用金字塔空间池化,提取出固定长度的特征向量。而R-CNN输入的是每个候选框,然后在进入CNN,因为SPP-Net只需要一次对整张图片进行特征提取,这个可以大大的提高虚度。因为R-CNN就相当于遍历一个CNN两千次,而SPP-Net只需要遍历1次。最后采用SVM算法进行特征向量分类识别,和R-CNN一样。
注意事项:
1):
假设输入数据大小和上面一样是(10,7,11)(10,7,11), 但是池化数量改为(4,4)(4,4):
此时核大小为(2,3)(2,3), 步长大小为(1,2)(1,2),得到池化后的矩阵大小的确是6∗56∗5 ←[简单的计算矩阵大小的方法:(7=2+1*5, 11=3+2*4)],而不是4∗44∗4。
现在再来检验一下:
假设输入数据大小和上面一样是(10,7,11), 池化数量为(4,4):
Kernel大小为(2,3),Stride大小为(2,3),所以Padding为(1,1)。
利用矩阵大小计算公式:得到池化后的矩阵大小为:4∗44∗4。
#coding=utf-8import math
import torch
import torch.nn.functional as F# 构建SPP层(空间金字塔池化层)
class SPPLayer(torch.nn.Module):def __init__(self, num_levels, pool_type='max_pool'):super(SPPLayer, self).__init__()self.num_levels = num_levelsself.pool_type = pool_typedef forward(self, x):num, c, h, w = x.size() # num:样本数量 c:通道数 h:高 w:宽for i in range(self.num_levels):level = i+1kernel_size = (math.ceil(h / level), math.ceil(w / level))stride = (math.ceil(h / level), math.ceil(w / level))pooling = (math.floor((kernel_size[0]*level-h+1)/2), math.floor((kernel_size[1]*level-w+1)/2))# 选择池化方式 if self.pool_type == 'max_pool':tensor = F.max_pool2d(x, kernel_size=kernel_size, stride=stride, padding=pooling).view(num, -1)else:tensor = F.avg_pool2d(x, kernel_size=kernel_size, stride=stride, padding=pooling).view(num, -1)# 展开、拼接if (i == 0):x_flatten = tensor.view(num, -1)else:x_flatten = torch.cat((x_flatten, tensor.view(num, -1)), 1)return x_flatten
目标检测之SPPNET相关推荐
- 目标检测 RCNN, SPPNet, Fast RCNN, Faster RCNN 总结
RCNN CVPR 2014 Rich feature hierarchies for accurate object detection and semantic segmentation http ...
- 【CV】通俗易懂的目标检测 | RCNN, SPPNet, Fast, Faster
全文5500个字,22幅图,学习时长预计20分钟 目录 0 概述 1 RCNN 1.1 候选区Region Proposal 1.2 特征提取 1.3 SVM分类 1.4 线性回归 2 SPP Net ...
- 浅谈目标检测RCNN,SPPNET,Fast-RCNN,Faster-RCNN
RCNN 目标检测-R-CNN模型 ●CVPR 2014 ●候选区域方法(region proposal method) :提供了额物体检测的一个重要思路 ●RCNN步骤: .1.对于一张图片,找出默 ...
- 目标检测(二)——SPPNet
简介 SPPNet是出自2015发表在IEEE上的论文-<Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Rec ...
- 【目标检测】SPPNet算法详解
转载自 http://blog.csdn.net/u011534057/article/details/51219959 Spatial Pyramid Pooling in Deep Convolu ...
- 目标检测:SPPNet
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 5.3 SPPNet 学习目标 目标 知道SPPNet与RCN ...
- 【目标检测】SPP-Net中候选区域在原图和feature map之间的映射关系
目录:候选区域在原图和feature map之间的映射关系 一.问题转化 1. 什么是感受野?以及感受野大小如何计算? 2. 感受野上的坐标映射 3. 论文中关于特征映射的讲解 二.何凯明演讲的PPT ...
- 《目标检测》R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN
学习内容来自:https://www.bilibili.com/video/BV1m5411A7FD?p=2 类似的博文:https://blog.csdn.net/v_JULY_v/article/ ...
- 同r做一个窗口_目标检测(Object Detection):R-CNN/SPPnet/R-FCN/Yolo/SSD
这篇文章我是Survey目标检测(Object Detection)系列论文的一个总结. 包括R-CNN系列.SPP-net.R-FCN.YOLO系列.SSD.DenseBox等. 基本概念 目标识别 ...
最新文章
- python 销量预测模型_如何做电商的销量预测模型?
- OTSU算法对图像二值化
- 主键由数据库mysql 映射native_Hibernate主键生成策略详解
- window下eclipse搭建C/C++开发环境(超简单无需插件版) .
- SVM针对中文文本分类
- 流控思路——多消费者定量生产(第100篇)
- python动态类型的坑_python进阶教程之动态类型详解
- docker yum 安装
- js数组查找最接近_在JavaScript数组中找到最小元素的位置
- 基于WF4的新平台-流程模式-(6)动态串行
- 何小鹏退出UC浏览器母公司股东名单
- 千牛机器人回复词库_智能聊天机器人 ai机器人电销-
- matlab 指定函数拟合,matlab中曲线拟合问题---使用指定函数进行曲线拟合
- 蓝桥杯笔记:(给的元素不重复)求全排列(排列不可重复,排列可重复)
- 境内银行卡磁条信息格式
- Java中反射性能测试
- go语言导出oracle数据,Go语言导出内容到Excel的方法
- feign session 调用_Feign调用session丢失解决方案
- 2021-09-07
- Win10找不到便签怎么办 Win10找不到便签解决方法
热门文章
- 没啥价值,不建议读——关于2019北京半程马拉松参赛体会
- window11安装docker小白教程
- vue中app.use()做了什么?
- 京东案例-快递查询单号(当我们输入单号时,文本框上面自动显示大字号的内容)
- 删除某一个字段oracle,oracle添加字段或者删除字段-转载
- 全世界只需要两个品牌,IBM和神舟——吴海军
- 贪婪投影三角化算法中的参数设置
- Springboot实现定时发送邮件(QQ邮件为例)
- python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解
- java实例和对象对象的区别_java中实例与对象的区别和联系