IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 目标检测(一):R-CNN系列 -> 正文阅读

[人工智能]目标检测(一):R-CNN系列

1. R-CNN

??Region CNN(RCNN) 可以说是利用深度学习进行目标检测的开山之作。作者 Ross Girshick 多次在 PASCAL VOC 的目标检测竞赛中折桂,2010 年更带领团队获得终身成就奖。R-CNN 基于卷积神经网络(CNN)、线性回归和支持向量机(SVM)等算法,实现目标检测技术。
??对于一张图片,R-CNN 基于 selective search 方法大约生成 2000 个候选区域,然后每个候选区域被 resize 成固定大小,并送入一个 CNN 模型中,最后得到一个特征向量。然后这个特征向量被送入一个多类别 SVM 分类器中,预测出候选区域中所含物体的属于每个类的概率值。每个类别训练一个 SVM 分类器,从特征向量中推断其属于该类别的概率大小。为了提升定位准确性,R-CNN 最后又训练了一个边界框回归模型,通过边框回归模型对框的准确位置进行修正。

1.1 R-CNN 算法流程(4个步骤)

(1)一张图像生成 1K~2K 个候选区域 (使用 Selective Search 方法)
(2)对每个候选区域,使用深度网络提取特征
(3)特征送入每一类的 SVM 分类器,判别是否属于该类
(4)使用回归器精细修正候选框位置
在这里插入图片描述

1.2 R-CNN 存在的问题

(1)测试速度慢:用 Selective Search 算法提取候选框,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
(2)训练速度慢:过程极其繁琐
(3)训练所需空间大:对于 SVM 和 bounding-box 回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如 VGG16,从 VOCo7 训练集上的5k图像上提取的特征需要数百 GB 的存储空间。

2. Fast R-CNN

??继 2014 年的 RCNN 之后,Ross Girshick 在 15 年推出 Fast RCNN,构思精巧,流程更为紧凑,大幅提升了目标检测的速度。基于 VGG16 的 Fast RCNN 算法在训练速度上比 RCNN 快了将近 9 倍;测试速度比 RCNN 快了 213 倍,在 VOC2012 上的 mAP 在 66% 左右。
??Fast R-CNN 将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。是对整张图像卷积而不是对每个 region proposal 卷积,ROI Pooling、分类和回归都放在网络一起训练的。Fast RCNN 不仅大大提高了检测速度,也提高了检测准确率。

2.1 Fast R-CNN 算法流程(3个步骤)

(1)一张图像生成 1K~2K 个候选区域 (使用 Selective Search 方法)
(2)将图像输入网络得到相应的特征图,将 SS 算法生成的候选框投影到特征图上获得相应的特征矩阵
(3)将每个特征矩阵通过 ROI pooling 层缩放到 7x7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。一系列全连接层:经过两个 output 都为 4096 维的全连接层,分别经过 output 各为 21 和 84 维的全连接层(并列的,前者是分类输出,后者是回归输出),最后接上两个损失层(分类是 softmax,回归是 smoothL1)。
在这里插入图片描述

2.2 损失函数

Multi-task loss 多损失融合(分类损失和回归损失融合)
在这里插入图片描述
?? p p p 是分类器预测的 softmax 概率分布 p = ( p 0 , . . . , p k ) p = (p_0,...,p_k) p=(p0?,...,pk?)
?? u u u 对应目标真实类别标签
?? t u t^u tu 对应边界框回归器预测的对应类别 u 的回归参数
?? v v v 对应真实目标的边界框回归 ( v x , v y , v w , v h ) (v_x,v_y,v_w,v_h) (vx?,vy?,vw?,vh?)

2.3 Fast R-CNN 的改进和不足

改进:
(1)卷积是对于整张图像先提取了泛化特征,这样子减少了大量的计算量;R-CNN 中对于每一个 region proposal 做卷积会有很多重复计算;
(2)ROIPooling 的提出,巧妙的解决了尺度放缩的问题;
(3)将 regressor 放进网络一起训练,同时用 softmax 代替 SVM 分类器,更加简单高效。
不足:
??region proposal 的提取依然使用 selective search,目标检测时间大多消耗在这上面(提 region proposal 2~3s,提特征分类只需 0.32s),这也是后续 Faster RCNN 的改进方向之一。

3. Faster R-CNN

??Faster R-CNN 是作者 Ross Girshick 继 Fast R-CNN 后的又一力作。同样使用 VGG16 作为网络的 backbone,推理速度在 GPU 上达到 5fps (包括候选区域的生成),准确率也有进一步的提升。在 2015 年的 ILSVRC 以及 COCO 竞赛中获得多个项目的第一名。

3.1 Faster R-CNN 算法流程(3个步骤)

(1)将图像输入网络得到相应的特征图
(2)使用 RPN 结构生成候选框,将 RPN 生成的候选框投影到特征图上获得相应的特征矩阵
(3)将每个特征矩阵通过 ROI pooling 层缩放到 7x7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

3.2 RPN

在这里插入图片描述
??k anchor boxes 给定了大小和长宽比例,如下图 RPN 的九种 anchor;
??2k scores 目标概率,分为两个:背景概率、目标概率;
??4k coordinates 边界框回归参数,四个:dx, dy, dw, dh
??图中 256 表示:ZF网络特征图的深度 channel = 256,而使用 VGG16 的话就是 512。

RPN 的九种 anchor:
在这里插入图片描述
??三种尺度(面积) {128*, 256*, 512*}
??三种比例 {1:1, 1:2, 2:1}
??每个位置在原图,上都对应有 3 x 3 = 9 anchor

??对于一张 1000 x 600 x 3 的图像,大约有 60 x 40 x 9 (20k) 个 anchor,忽略跨越边界的 anchor 以后,剩下约 6k 个 anchor。对于 RPN 生成的候选框之间存在大量重叠,基于候选框的 cls 得分,采用非极大值抑制,IoU 设为 0.7,这样每张图片只剩 2k 个候选框。

3.3 正样本和负样本

原论文是这么介绍的:
??For training RPNs, we assign a binary class label (of being an object or not) to each anchor. We assign a positive label to two kinds of anchors: (i) the anchor/anchors with the highest Intersectionover-Union (IoU) overlap with a ground-truth box, or (ii) an anchor that has an IoU overlap higher than 0.7 with any ground-truth box. Note that a single ground-truth box may assign positive labels to multiple anchors. We assign a negative label to a non-positive anchor if its IoU ratio is lower than 0.3 for all ground-truth boxes. Anchors that are neither positive nor negative do not contribute to the training objective.
??首先要知道 IoU 是什么,IoU 即交并比,两个矩形框 A、B 的重合度,公式如下:
I o U = ( A ∩ B ) / ( A ∪ B ) IoU = (A \cap B) / (A \cup B) IoU=(AB)/(AB)
??正样本有两种情况:
????(i) 与 ground-truth bo x的 IoU 的重叠区最大的 anchor/anchors,将它定义为正样本;
????(ii) anchor 与 ground-truth box 的 IoU 值大于 0.7,将它定义为正样本;
??负样本:如果 anchor 与任何 ground-truth box 的 IoU 值小于 0.3,便将它定义为负样本。
??既不属于正样本又不属于负样本的 anchor 不参与训练。

3.4 损失函数

在这里插入图片描述
?? p i p_i pi? 表示第 i 个 anchor 预测为真实标签的概率
?? p i ? p_i^* pi?? 当为正样本时为 1,当为负样本时为 0
?? t i t_i ti? 表示预测第 i 个 anchor 的边界框回归参数
?? t i ? t_i^* ti?? 表示第 i 个 anchor 对应的 ground-truth box 的回归参数
?? N c l s N_{cls} Ncls? 表示一个 mini-batch 中的所有样本数量 256
?? N r e g N_{reg} Nreg? 表示 anchor 位置的个数 (不是 anchor 个数) 约 2400


论文链接:

本笔记记录学习 R-CNN/FastrR-CNN/Faster R-CNN,若有错误,欢迎批评指正,学习交流。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:44:55  更:2022-08-06 10:47:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:50:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码