目标检测-R-CNN

R-CNN在2014年被提出,算法流程可以概括如下:

  • 候选区域生成:利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal)

  • CNN网络提取特征:对候选区域进行特征提取(可以使用AlexNet、VGG等网络)

  • 目标分类:训练分类模型(如svm等)识别目标物体和背景,对于每个类别都会有一个二元SVM

  • 目标定位:训练回归模型,预测每个被识别物体的边界框

综上所述,可以概括为选取候选区域-》提取特征-》分类模型-》回归模型。R-CNN的整体设计思路,与传统图像目标检测很相似,只是将传统特征提取(HOG等方法)变为了卷积网络提取。

候选区域

候选区域(region proposal)选择方法有很多,比如EdgeBox、MSER、MCG和SelectivSearch等,其中SelectivSearch是比较有代表性的一种。

SelectiveSearch方法通常一张图像生成2000~3000左右的候选区域,通过SelectiveSearch产生的区域数量远远少于滑动窗口的穷举法产生的候选区域。具体过程如下:

  • 使用语义分割的方法,将图片中的每一个像素作为一组,利用颜色、纹理和边界等多尺度综合方法,将像素相近的组合为一个像素组。

  • 继续将各个像素组合并,直到整张图片合并完毕。

为了保证候选区域划分更加合理,Selective Search进行了如下设计:

  1. 多样性策略

为了保证候选区域的准确性,SelectiveSearch主要通过颜色空间变换和距离计算方式进行优化。

  • 颜色空间变化:将颜色空间可以转换为八种色彩空间。

  • 距离计算:距离计算包括了颜色距离、纹理距离、尺度相似度衡量、形状重合度衡量和最终相似度衡量。

    • 颜色距离:1)每一个区域用三通道的颜色直方图表示,每个颜色通道设定25bins的直方图,这样每个区域就有3*25=75维的向量;2)对75维进行L1-normal归一化,每个颜色通道累加和为1,三个通道累计和为3;3)如果区域i和区域j直方图一样,则颜色相似度为3;4)如果区域i和区域j直方图差别较大,由于累加取两个区域bin的最小值,因为差距越大,累加和越小,相似度越小

    • 纹理距离:1)论文采用SIFT方法,将每个颜色通道的8个方向计算方差为1的高斯微分;2)用L1-Normal

          对每个颜色通道的每个方向的10bins的直方图,得到8*10*3=240维向量;3)两个区域相似度越高,纹理距离越大,反之越小

    • 尺度相似度衡量:通过颜色距离和纹理距离进行合并,容易使得合并后的区域不断吞并周围的区域,导致多尺度只应用在那个局部,不是全局的多尺度。尺度相似度衡量,就是给小区域更高的权重,保证每个位置都是多尺度在合并

    • 区域重合度衡量:区域重合度主要是为了衡量两个区域的“吻合”程度,不能合并后出现断崖的区域。

    • 最终相似度衡量:将上述四种衡量方式加权合并,得到最终相似度衡量数值

特征提取

利用预训练模型(AlexNet、VGG、GoogLeNet、ResNet等)对候选区域进行特征提取,候选区域提取的图像尺寸大小不一,当时特征提取的网络大多需要将输入图像的大小进行统一。

以AlexNet网络为例,输入图像大小为227*227,通过CNN对候选区域进行特征提取,2000个候选区域组成2000*4096特征矩阵。

特征提取阶段主要涉及以下几个步骤:

  • 设计网络结构

网络结构可以有很多参照,例如AlexNet、VGG、GoogLeNet、ResNet等均可进行特征提取。

  • 有监督训练

相比于随机的初始化网络参数,使用预训练模型可以更快的让模型收敛,取得更好的效果。

  • fine-tune

为了使预训练模型更加适用于当前场景,需要对模型进行再训练,一般仅改变末基层网络参数或结构。

其中,特征提取需要注意以下几点:

  • 全连接层的输入数据尺寸都是固定的,因此在进行特征提取前,需要将输入图像进行裁剪或形变转为固定尺寸

如何裁剪更合理?

论文中尝试了3种裁剪方式,图中A是我们的候选区域,1)将bounding box扩展为正方形,然后进行裁剪,如果延伸到了图片外,使用bounding box中的颜色均值进行替代,如B)所示;2)先将bounding box裁剪出来,然后用bounding box中的颜色均值填充为裁剪的大小,如C)所示;3)直接将原始图像形变为需要的形状,如D。

什么是预训练模型(pre-train)?

预训练模型是指在其他训练集上已经训练好的初始模型,可以将此类模型迁移到现有问题,公用层的参数保持与原本相同,仅对部分网络层进行微调,也就是fine-tune(在训练)

为什么不在fine-tune后进行softmax分类,反而又进行svm分类器训练?

先上结论,论文中也进行添加softmax尝试,发现效果要低于svm。cnn模型相对比较容易过拟合,训练时需要较多的样本,因此在cnn训练阶段,标注是相对宽松的,一个bounding box可能仅包含了物体的一部分,也会被当做正样本。但在SVM阶段,需要bounding box将整个物体都包含进来才算正样本,这样能训练的数据量就很少,而svm在小样本上训练效果还可以,所以最终分类效果更好一些。

目标分类

假设需要检测的类别有N个,则需要训练N个分类器(常见SVM等),对每个图片中的候选区域的特征向量进行识别,假设有2000个候选区域,则产生[2000, N]的得分矩阵。

对2000*N的矩阵中每一列进行非极大值抑制(NMS),剔除重叠建议框,得到该类中得分高相对较高的建议框。

NMS是如何工作的?

假设在识别动物任务中,一张图片中一个猫有5个矩形框,矩形框中是猫的概率从低到高是a、b、c、d、e。

  • 将矩形框分别a、b、c、d与概率最大的e进行判断,计算IOU是否大于某个阈值

  • 假设a、b分别与e的IOU值都大于阈值,则丢弃a、b,e成为第一个被保留的矩形框

  • 从剩余的矩形框c、d中选择概率最大的d,计算c与d的IOU是否大于某个阈值,大于则保留d,丢弃c;小于则保留或丢弃c

  • 按照上述步骤进行重叠建议框剔除

IOU的阈值如何确定?

论文中尝试了0~0.5,在0.3是效果更好一些,小于0.3被标记为负样本;不同数据集阈值大小并不固定,需要进行尝试。

目标定位

Bounding Box Regression(边框回归):SelectiveSearch方法获得的区域相对粗略,使用回归模型对给定的区域结果进行预测得到一个更加准确的位置。

如图所示,黄色框是预测的Region Proposal,希望通过回归算法让黄色框更加接近真实的绿色框,即Ground Truth。

为什么回归可以用来目标定位?

当输入的Proposal和Ground Truth相差较小时(RCNN设置为IOU>0.6),认为此时是一种线性变换,此时可以用线性回归来对窗口进行微调,当IOU较小时,此时可能使用线性回归效果不理想。

RCNN存在一下问题:

  • 候选区域的提取,需要较多的磁盘空间来计算与存储;

  • 传统CNN等一些网络,要求输入图像尺寸统一,因此需要对输入图像做形变,可能会导致部分信息缺失

  • 大量的ProposalRegion存在重叠部分,每个ProposalRegion都需要通过主干网络(CNN等)进行计算,因此有很多重复性的计算

  • CNN网络、分类器、回归模型这三个流程,导致整体计算时间长、参数多等问题,训练流程不够迅捷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/941536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Blender 中投影仪的配置与使用

Blender 中投影仪的配置与使用 Blenderdownloadbasic Projectordownloadinstallconfigure 利用Blender中的投影仪搭建一个简单的结构光仿真系统,通过调整被测对象的材质和投影仪位姿以及投影来获得不同的渲染图像。 Blender download 在官网中下载相应安装包&…

MYSQL慢查询日志(开启慢查询配置、explain执行计划SQL优化、各个字段详解、索引失效)

大家好,我是此林。 今天来分享一下MYSQL慢查询日志记录。 目录 1. 定义 2. 开启慢查询 方法一:命令行 方法二:修改配置文件 3. explain性能分析 4. 索引失效 1. 最左前缀法则 2. 对字段做运算、字段类型不匹配 3. 模糊匹配 4. OR…

Leetcode打卡:考场就坐

执行结果:通过 题目: 855 考场就坐 在考场里,有 n 个座位排成一行,编号为 0 到 n - 1。 当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个这样的座位,他会坐在编号最小的座位上。(另外&am…

2024.2 ACM Explainability for Large Language Models: A Survey

Explainability for Large Language Models: A Survey | ACM Transactions on Intelligent Systems and Technology 问题 可解释性问题:大语言模型(LLMs)内部机制不透明,难以理解其决策过程,如在自然语言处理任务中&…

解决“SVN无法上传或下载*.so、*.a等二进制文件“问题

今天,在使用Subversion提交代码到服务器时,发现无法提交*.a、*.so等二进制文件,右击这些文件,发现其属性为ignores。     问题原因:SVN的配置文件里,屏蔽了*.a、*.so文件的上传与下载,并把这些…

层序遍历练习

层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路 相对于102.二叉树的层序遍历,就是最后把result数组反转一下就可以了。 C代码&…

京东大数据治理探索与实践 | 京东零售技术实践

01背景和方案 在当今的数据驱动时代,数据作为关键生产要素之一,其在商业活动中的战略价值愈加凸显,京东也不例外。 作为国内领先的电商平台,京东在数据基础设施上的投入极为巨大,涵盖数万台服务器、数 EB 级存储、数百…

【论文阅读笔记】Learning to sample

Learning to sample 前沿引言方法问题声明S-NET匹配ProgressiveNet: sampling as ordering 实验分类检索重建 结论附录 前沿 这是一篇比较经典的基于深度学习的点云下采样方法 核心创新点: 首次提出了一种学习驱动的、任务特定的点云采样方法引入了两种采样网络&…

[AIGC知识] layout理解

前言 要开组会了,随便讲个凑数吧。 参考论文 https://arxiv.org/html/2303.17189? 什么是layout数据? 像下图这样,Layout是每个图片的布局,其中包含一些物体的相应边界框和类别 layout信息如何整合表示并作为条件加入到网络…

【macos java反编译工具Java Decompiler】

mac上能用的反编译工具 https://java-decompiler.github.io/

C#+OpenCv深度学习开发(常用模型汇总)

在使用 OpenCvSharp 结合深度学习进行机器视觉开发时,有许多现成的模型可以使用。以下是一些常用的深度学习模型,适用于不同的机器视觉任务,包括物体检测、图像分类和分割等。 使用示例 在 OpenCvSharp 中加载和使用这些模型的基本示例&…

【生成模型之七】Classifier-free diffusion guidance

论文:classifier-free diffusion guidance 一、Background 分类器引导是一种最近引入的方法,用于在训练后的条件扩散模型中权衡样本丰富度和样本保真度,其思想与其他类型生成模型中的低温采样或截断相同。 分类器引导将扩散模型的分数估计…

【LeetCode每日一题】——415.字符串相加

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 415.字符串相加 四【题目描述】 给定两个字符…

Why SAP TM?

最近发现跟 SAP TM 的集成越来越多了,并且发现这模块还挺大,很难一下子理解。TM(Transportation Management)- 顾名思义就是“运输管理”。起初很难想象为啥 SAP 会浪费大量的时间和精力开发“运输管理”,从而只是为了…

开源鸿蒙 5.0 正式版发布

在2024年的开放原子开发者大会上,开源鸿蒙5.0版本正式发布啦!这个版本是一个比较大的升级,性能和功能都上了一个新台阶,让我们一起来看看都有哪些亮点。 首先,开源鸿蒙这个项目,从最初的700万行代码&#x…

直流有刷电机多环控制(PID闭环死区和积分分离)

直流有刷电机多环控制 提高部分-第8讲 直流有刷电机多环控制实现(1)_哔哩哔哩_bilibili PID模型 外环的输出作为内环的输入,外环是最主要控制的效果,主要控制电机的位置。改变位置可以改变速度,改变速度是受电流控制。 实验环境 【 &…

Odrive源码分析(四) 位置爬坡算法

Odrive中自带一个简单的梯形速度爬坡算法&#xff0c;本文分析下这部分代码。 代码如下&#xff1a; #include <cmath> #include "odrive_main.h" #include "utils.hpp"// A sign function where input 0 has positive sign (not 0) float sign_ha…

电视大全 1.3.8|汇聚多频道资源,秒切换流畅播放

电视大全TV版是一款功能丰富的TV端直播软件&#xff0c;由悠兔电视的同一开发者打造。最新版本更新了更多频道&#xff0c;包括央视、卫视和地方频道等&#xff0c;提供了多线路流畅播放体验&#xff0c;并支持节目回看、线路选择、开机自启等功能。该应用免登录且无购物频道&a…

JAVAweb学习日记(二)JavaScript

一、概念 二、JavaScript引入方式 三、JavaScript书写语法 输出语句&#xff1a; 变量&#xff1a; 数据类型、运算符、流程控制语句&#xff1a; 数据类型&#xff1a; 运算符&#xff1a; 字符串如果是 数字字符构成&#xff0c;先把读到的数字转为数字类型&#xff0c;后续…

深圳龙岗戴尔dell r730xd服务器故障维修

深圳龙岗一台DELL POWEREDGE R730XD服务器系统故障问题处理&#xff1a; 1&#xff1a;客户工厂年底产线整改&#xff0c;时不时的会意外断电&#xff0c;导致服务器也频繁停机&#xff0c; 2&#xff1a;多次异常停机后导致服务器开机后windows server系统无法正常启动了&…