目标检测之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一样。
![](/assets/blank.gif)
注意事项:
1):
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
假设输入数据大小和上面一样是(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。
![](/assets/blank.gif)
现在再来检验一下:
假设输入数据大小和上面一样是(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等. 基本概念 目标识别 ...
最新文章
- 【C#】using用法
- 手动启动 oracle 服务
- 【Python-ML】探索式数据分析EDA(Exploratory Data Analysis)
- android 实训的背景,Android实训项目作业.doc
- gRPC的那些事 - streaming
- 最新综述 | 强化学习中从仿真器到现实环境的迁移
- 函数与导数题目类型和解法思路的总结
- java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...
- erp系统是什么东西
- Tensor看这一篇就够了!
- CMSampleBufferRef获取h264 char*数据及sps/pps
- 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
- python支持双向索引_python3 deque 双向队列创建与使用方法分析
- ISIS协议与Quagga ISIS配置
- Tcp滑动窗口协议简介
- 带温度补偿RTC芯片的选型和应用
- 如何批量PDF转换JPG
- Carbon —— 代码分享利器
- 定制linux 安装光盘
- 如何规避海外置业风险,2019必备海外房产投资技巧