目标检测方法概述(一)

2023-11-17

目标检测的问题,就是在给定的图片中找到物体的位置,并标明物体的类别。
在这里插入图片描述
通过卷积神经网络CNN,我们可以完成图像识别,即分类任务,然后我们需要通过一些额外的功能完成定位任务,即找到上图中方框在图像中的位置 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)

目前目标检测的研究路线如下,相关论文在这里可以找到,在这里我们选取部分论文来解释一下。在这里插入图片描述

  • R-CNN

在这里插入图片描述步骤1:训练一个分类模型(比如AlexNet);
步骤2:对该模型进行fine-tuning;
步骤3:用selective search提取图像的候选框,修正区域大小输入到CNN,将输出结果存入硬盘;
步骤4:训练一个SVM分类器判别物体类别;
步骤5:使用回归器修正候选框位置。

  • SPP Net

SPP:Spatial Pyramid Pooling(空间金字塔池化)
步骤1:首先通过selective search,对待检测的图片进行搜索出2000个候选窗口;
步骤2:把整张待检测的图片,输入CNN中,进行一次性特征提取,得到feature maps,然后在feature maps中找到各个候选框的区域,再对各个候选框采用SPP池化,提取出固定长度的特征向量;
步骤3:最后采用SVM算法进行特征向量分类识别。

主要特点:
1.实现了CNN的多尺度输入
如下图所示,在卷积层和全连接层之间加入SPP层,对于任意输入,SPP层中的每一个池化的卷积核会根据输入调整大小,因此SPP层的输出尺度始终是固定的。
在这里插入图片描述

2.只对原图进行一次卷积
在R-CNN中,每个候选框都要resize到统一大小再输入到CNN中,要耗费很多时间,而SPP Net对原图只进行一次卷积得到feature map,然后找到每个候选框在feature map上的映射,将其作为卷积特征输入到SPP层。这样可以节省大量的计算时间,比R-CNN有一百倍左右的提速。
在这里插入图片描述

  • Fast R-CNN

R-CNN使用selective search提取bounding box作为输入,但是在对所有区域进行特征提取时会有重复计算,导致R-CNN有严重的速度瓶颈。在这里插入图片描述
Fast R-CNN提出一种可以看作单层SPP Net的网络层,叫ROI Pooling,它可以把不同大小的输入映射到一个固定尺度的特征向量。

ROI Pooling采用的是SPP的思路,但是实现方式不同,只使用了一层金字塔。下面是ROI Pooling的网络参数:
layer {
name: “roi_pool5”
type: “ROIPooling”
bottom: “conv5_3”
bottom: “rois”
top: “pool5”
roi_pooling_param {
pooled_w: 7
pooled_h: 7
spatial_scale: 0.0625 # 1/16
}
仅使用了(pooled_w,pooled_h)这个尺度,来将得到的每一个特征图分成(pooled_w,pooled_h),然后对每一块进行max_pooling取值,最后得到一个n*7*7固定大小的特征图。

另外,Fast R-CNN将bounding box regression放入了神经网络内部,与分类一起组成一个multi-task模型。实际实验也证明,这两个任务能够共享卷积特征,并相互促进。
可见,Fast R-CNN相对于R-CNN的提速原因就在于,不像R-CNN把每个候选区域给CNN提特征,而是整张图提一次特征,再把候选框映射到conv5上,剩下的只需要在conv5层上操作就可以了。

  • Faster R-CNN

Fast R-CNN使用selective search找出候选框,也非常耗时。Faster R-CNN提出一种全卷积神经网络叫做Region Proposal Network(RPN),用来提取region proposals。
在这里插入图片描述
步骤1:将整张图片输入CNN,进行特征提取;
步骤2:用RPN生成anchors,并对其进行筛选和标记,然后通过NMS剔除重叠的anchors,得到最终的region proposals,每张图片生成300个region proposals;
步骤3:把region proposals映射到CNN最后一层卷积的feature map上;
步骤4:通过ROI pooling使每个region proposal生成固定尺寸的feature map;
步骤5:使用softmax loss和smooth L1 loss对分类概率和边框回归进行联合训练。

RPN网络的结构如下图:
在这里插入图片描述
下图为Caffe版本的RPN网络图:
在这里插入图片描述RPN的输入为原图片卷积之后得到的feature map,输出就是region proposals。

如何找到region proposals,就涉及到一个anchor的概念。在feature map上添加一个滑窗,即上图中的sliding window,在每个滑窗中假定可以最多找到 k k k个region proposals,这 k k k个region proposals可以被参数化为 k k k个相关的box,这就是anchors。anchors是由不同的尺度(scale)和长宽比(aspect ratio)得到。
在这里插入图片描述

通过anchors,RPN就可以得到region proposals的信息。这种方式产生的region proposal个数远少于selective search产生的个数,而且质量也有很大的提升。

Faster R-CNN包含四个损失函数:
  • RPN calssification(anchor good.bad)
  • RPN regression(anchor->proposal)
  • Fast R-CNN classification(over classes)
  • Fast R-CNN regression(proposal ->box)
  
训练时采用4步交替训练(4-step alternating training):
  1. 单独训练RPN,得到RPN1,CNN1
  2. 单独训练Fast R-CNN,结合第一步的region proposal,得到Fast R-CNN1,CNN2
  3. fine-tune RPN1 on CNN2,得到RPN2(共享卷积层)
  4. fine-tune Fast R-CNN1 on CNN2,结合第三步的region proposal,得到Fast R-CNN2(共享卷积层)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

目标检测方法概述(一) 的相关文章

  • JavaWeb12(实现基础分页&模糊查询的分页)

    目录 一 效果预览 编辑 二 实现基本分页 2 1 分页sql 每页3条 取第二页 由于伪列不能作用与大于符号也不能作用于between and 因此需要将伪列 gt 名列 2 2 万能公式 2 3 首页 上一页 下一页实现 前端代码 2
  • [论文阅读笔记36]CASREL代码运行记录

    论文阅读笔记33 CASREL 基于标注与bert的实体与关系抽取 https blog csdn net ld326 article details 116465089 总的来说 文档都还是写得很好的 按文档 readme md 来就行
  • 必备技能22: 安装VISIO时,出现64、32版本冲突

    问题描述 安装visio时 遇到如下错误 安装错误 无法安装 64 位版本的 Office 因为在您的 PC 上找到了以下 32 位程序 Office 16 Click to Run Extensibility Component 请卸载所
  • Python制作【大麦网】抢票程序,看演唱会再也不怕没票了

    前言 大麦网 是中国综合类现场娱乐票务营销平台 业务覆盖演唱会 话剧 音乐剧 体育赛事等领域 但是因为票数有限 还有黄牛们不能丢了饭碗 所以导致了 很多人都抢不到票 那么 今天带大家用Python来制作一个自动抢票的脚本小程序 知识点 面向
  • linux安装mysql5.7

    Linux下安装Mysql5 7 超详细完整教程 以及云mysql连接 linux mysql5 7 清香可口柑的博客 CSDN博客 grant all privileges on to root identified by 123456
  • 无人机数据集调研

    最近在研究无人机检测相关领域的内容 因此对目前开源的无人机数据集做一个整理 目录 无人机数据集 一 VisDrone2019 二 UAVDT 无人机数据集 一 VisDrone2019 数据集下载地址 比赛官网 VisDrone2019数据
  • 1分钟免费开通IDaaS云服务

    2020 Zero trust 零信任 持续火热 零信任不仅仅是技术 更是理念的转变 会成为未来十年主流的网络安全架构 企业如何快速构建自己的零信任 SDP防护架构 背景 国内现状 大多数企业尚未建立企业的身份认证和授权中心 能够管理企业内
  • 获取 gps信息_ROS传感器之GPS简介

    一 传感器分类 在自动驾驶或者机器人领域 传感器的使用按照测量对象划分 可分为两大类 一类是测量自身状态 另一类测量环境状态 前者主要包含GPS IMU和编码器 后者主要有激光雷达 毫米波雷达和相机 这里的状态主要是指位置和速度 有些传感器
  • android 登陆界面

    LoginActivity java package com example ruian import android app Activity import android app AlertDialog import android c
  • 用python将结果存进csv文件中

    def writeCsv File species row File species out open data test csv a newline csv writer csv writer out dialect excel csv
  • 代码走查和代码审查_这是经过1000多次代码审查后我学到的东西

    代码走查和代码审查 这个故事最初发表在我的博客上 如果您对这种内容感兴趣 请随时签出并订阅 在过去的三年中 我已经审查了1000多个请求 合并 请求 在那段时间里 我学到了很多东西 主要是关于如何不审阅代码 如何减轻过程的痛苦 使高质量的代
  • python字典中的值只能是字符串类型_python字典key不能是可以是啥类型

    python中字典的key不能是可变类型 字典可存储任意类型对象 其中值可以取任何数据类型 但键必须是不可变的 如字符串 数字或元组 语法格式 d key1 value1 key2 value2 字典是另一种可变容器模型 且可存储任意类型对
  • 神经搜索有多能?

    原文 Alex C G 译文 Piper Hu 本文阅读时长约为5分钟 神经搜索 是数据处理上非常新颖的一个话题 也是Jina AI目前着重关注的方向 可是到底神经搜索是什么 它能解决什么问题 与现在开发者们使用的搜索系统搭建又有什么不一样
  • javaScript节流与防抖

    一 节流 throttle 用来实现阻止在短时间内重复多次触发同一个函数 主要用途 防止使用脚本循环触发网络请求的函数的恶意行为 确保请求的真实性 当然也包括其他阻止高频触发行为的应用 实现原理图 代码实现 1 节流函数 2 functio
  • python中xpath解析网页html文档

    1 首先安装xpath解析工具第三方库 pip install i https pypi tuna tsinghua edu cn simple lxml 2 选取节点 选取未知节点 选取若干路径 举例说明 谓语用来查找某个特定的节点或者包
  • 三子棋(人机对战)

    目录 整体思路 头文件如下 为什么要使用头文件呢 头文件的使用 游戏主函数如下 功能实现如下 注意 整体思路 1 创建一个二维数组 2 初始化二维数组 3 打印棋盘 4 玩家下棋且打印棋盘 5 电脑下棋且打印棋盘 6 判断输赢 头文件如下
  • 智能合约概述——以太坊虚拟机

    以太坊虚拟机 概述 以太坊虚拟机 EVM 是智能合约的运行环境 它不仅是沙盒封装的 而且是完全隔离的 也就是说在 EVM 中运行代码是无法访问网络 文件系统和其他进程的 甚至智能合约之间的访问也是受限的 账户 以太坊中有两类账户 它们共用同
  • springmvc 项目本地开发正常,war 上了 wins下的tomcat,web 页面中文乱码

    前言 今天打包 springmvc 项目 war 包 windows 下 tomcat 运行 浏览器访问乱码 解决方案 tomcat bin 目录下 catalina bat 文件中添加 set JAVA OPTS Dfile encodi
  • 区块链之元宇宙

    区块链之元宇宙 元宇宙概念 元宇宙 Metaverse 是利用科技手段进行链接与创造的 与现实世界映射和交互的虚拟世界 具备新型社会体系的数字生活空间 元宇宙本质上是对现实世界的虚拟化 数字化过程 需要对内容生产 经济系统 用户体验以及实体
  • 智能教育装备法则

    二十一世纪 在互联网 大数据 智慧教育等新科技的带动下 我国教育信息化教育信息化产业规模将以每年平15 的速度增长 格物斯坦表示 有越来越多智能教育装备的后起之秀企业开启了他们的研发软件和硬件的能力 教育的信息化首先是教育装备的信息化和智慧

随机推荐

  • 浅析瀑布流布局及其原理

    一 什么是瀑布流 瀑布流 又被称作为瀑布流式布局 是一种比较流行的网站页面布局方式 视觉表现为参差不齐的多栏布局 随着页面滚动条向下滚动 这种布局还会不断加载数据块并附加至当前尾部 这种布局方式常见于一些图片为主的网站 为什么要使用瀑布流
  • 关于QT5.12.0在VS2019上使用的细节

    关于QT5 12 0在VS2019上的使用细节 博主使用的版本 QT5 12 0 VS2019 其他Qt版本同样适用 1 添加Qt的环境变量 在Win10下 编辑系统环境变量 环境变量 Path 新建添加Qt的bin目录路径 D QT 12
  • Burpsuite Professional 2023.6.2 最新版安装教程

    更新时间 2023年07月23日11 47 48 本文以mac为例 Windows上方法是类似的 1 缘由 因为我用的Burpsuite版本有点老 导致有时候给人培训的时候 面对新版Burpsuite一脸懵逼 很多操作都不太一样 所以这次直
  • 从零开始 verilog 以太网交换机(七)总结与展望

    从零开始 verilog 以太网交换机 七 总结与展望 声明 博主主页 王 嘻嘻的CSDN主页 从零开始 verilog 以太网交换机系列专栏 点击这里 未经作者允许 禁止转载 侵权必删 关注本专题的朋友们可以收获一个经典交换机设计的全流程
  • Trinitycore学习之在vscode查看远端服务器上源码配置

    1 安装vscode 去官网下载 这里下载windows版本安装包 zip https code visualstudio com Download 2 安装后 安装扩展chinese 使用中文设置 需要重启vscode 3 安装ssh相关
  • 报错:‘wget‘ 不是内部或外部命令,也不是可运行的程序

    在jupyter lab下使用wegt 导入需要用到的数据集 wget https tianchi media oss cn beijing aliyuncs com DSW 7XGBoost train csv wget 不是内部或外部命
  • 终端zsh_只需七个步骤,即可使您的“ ZSH”终端站起来—直观指南

    终端zsh by rajaraodv 通过rajaraodv 只需七个步骤 即可使您的 ZSH 终端站起来 直观指南 Jazz Up Your ZSH Terminal In Seven Steps A Visual Guide In th
  • 设置PHP的fpm的系统性能参数pm.max_children

    1 介绍 PHP从Apache module换成了Fpm 跑了几天突然发现网站打不开了 页面显示超时 检查MySQL Redis一众服务都正常 进入Fpm容器查看日志 发现了如下的错误信息 server reached pm max chi
  • day05 java_Spring IoC 和 DI

    为什么使用spring框架 1 解耦代码 每次使用都要new一个对象 2 解决事务繁琐问题 创建对象 初始化 调用方法 销毁对象 3 使用第三方框架麻烦的问题 总结 spring是一个轻量级的Ioc Di和AOP容器 轻量级 简洁 高效 低
  • 面试官偷偷给到45k*16薪,堪称面试风向标!

    前天加完班 回家路上翻了下粉丝群 发现群里最近在疯传一份叫 前端offer收割机养成指南 的资料 本来感觉这个title看起来有点离谱 结果没想到仔细一看 这份资料竟然真的有点东西 内容收纳的很全 而且融合了很多今年的新玩意 据我所知有人靠
  • HTML 整体缩放

    最近用到web 控件加载网页需要缩放问题 由于控件比较旧 所以只能从html 入手 html 页面缩放主要有两种 IE 可使用 CSS body zoom 1 2 或者微软相关的控件支持 包括BCB 其它 浏览器可使用 body trans
  • 指针字符串 与 const char * 即const * char 的详细使用讲解

    指针字符串的使用问题 一 直接定义字符串指针的使用注意事项 定义字符串指针的时候 const char 和字符串本身相同 就不会出现警告 const char char const 作用 const char p 表示的是指针p指向的数值不
  • Kubernetes CoreDNS 状态是 CrashLoopBackOff 报错

    查看状态的时候 遇见coredns出现crashlookbackoff 首先我们来进行排错 不管是什么原因 查看coredns的详细信息 以及logs root k8s master coredns kubectl get pod svc
  • Shell 中 &>/dev/null 和 >/dev/null 2>&1

    下面 咱们一起来看看这个命令操作涉及到的知识点 这其实涉及到三部分的内容 如下图 1 文件描述符 linux shell脚本攻略 的描述 文件描述符是与文件输入 输出关联的整数 它们用来跟踪已打开的文件 最常见的文件描述符是 stidin
  • linux cuda安装目录,Ubuntu 11.10上安装CUDA开发环境的方法及命令

    这篇文章全部内容在我的ThinkPad W520 Ubuntu 11 10 x64位上测试通过 但不代表这篇文章的内容适合你 任何根据这篇文章操作产生的后果 这篇文章作者cheungmine概不负责 英文参考文档 http develope
  • 华为OD机试 C++ [周末爬山]

    题目 小明打算周末去爬山 有一份山的地图 上面用数字表示山的高度 0表示平地 1至9表示不同的山峰高度 小明每次移动只能上下左右移动一格 并且山峰高度差不能超过k 现在他从地图的左上角出发 你能帮他找出他能爬到的最高的山峰是多高吗 还有 他
  • Android数据存储 —— SharedPreferences

    SharedPreferences以键值对的形式存储数据 支持几种基本数据类型 boolean float int long String 一般存储配置信息 它保存的数据时持久化的 即使应用被关掉也不会丢失 存储格式为 xml 一般放在内部
  • 三十二、java版 SpringCloud分布式微服务云架构之Java LinkedList

    Java LinkedList 链表 Linked list 是一种常见的基础数据结构 是一种线性表 但是并不会按线性的顺序存储数据 而是在每一个节点里存到下一个节点的地址 链表可分为单向链表和双向链表 一个单向链表包含两个值 当前节点的值
  • IO流作业

    io 文件操作 in 读取 out 写出 java io File 常用的三个构造方法 File String pathname 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 public class Demo01 pu
  • 目标检测方法概述(一)

    目标检测的问题 就是在给定的图片中找到物体的位置 并标明物体的类别 通过卷积神经网络CNN 我们可以完成图像识别 即分类任务 然后我们需要通过一些额外的功能完成定位任务 即找到上图中方框在图像中的位置 x y w