论文模型笔记——RCNN系列

RCNN系列模型主要包括以下几种,按发布时间排序:

1. **RCNN**(2014年):首次将CNN引入目标检测,主要是特征提取阶段使用CNN(AlexNet)。

2. **Fast RCNN**(2015年):通过共享卷积特征图提高了RCNN的速度和效率,引入了ROI Pooling来提取固定大小的特征。
3. **Faster RCNN**(2015年末):加入了区域提议网络(RPN),实现了端到端的目标检测,进一步提高了检测速度。
4. **Mask RCNN**(2017年):在Faster RCNN的基础上添加了一个并行分支,用于生成高精度的实例分割掩码,同时采用了ROI Align技术提高精度。

1. RCNN

介绍

R-CNN主要分为四个阶段

  1. 产生候选区域:对于输入的图片,使用Selective Search方法,选择出2000个候选区域(每个区域大小不一)。
  2. 特征提取:使用AlexNet对每一个候选区域提取特征,得到2000*4096维的特征向量。
  3. 候选区域类别判断与NMS:将2000*4096维特征向量送入到21个(20个类别+1个背景)SVM分类器中,需要使用NMS去除冗余的候选框。
  4. 候选框位置调整regression:进一步调整候选框精度

创新

在文章中,作者认为 R-CNN 较之前的算法,能够取得30%的改进是基于以下两点:

  1. 使用了CNN来提取候选区域的特征。
  2. 使用迁移学习,因为目标检测领域的数据相比图像分类任务要少很多,所以使用在图像分类上训练好的模型,经过 fine-tune 可以很好的运用在目标检测上。

2. Fast R-CNN

介绍

Fast R-CNN 主要是在R-CNN和SPPNet的基础上进行改进的,有着以下几个优点:

  1. 与R-CNN、SPPNet相比,有着更高的准确率。
  2. 通过使用多任务损失,将模型训练由多阶段转变为单阶段训练。
  3. 训练时可以一次更新网络的所有层,不再需要分步更新参数。
  4. 不再需要硬盘来存储CNN提取的特征数据

Fast R-CNN的流程主要分为三步:

  1. 候选区域产生:使用 Selective Search 方法生成2K个图片候选区域。
  2. 整张特征提取与候选区域特征图映射:对整张图片进行特征提取得到相应的特征图(这是对R-CNN的一大改进,参考了SPPNet),并将上一步生成的候选区域映射到特征图中。
  3. ROI Pooling类别与边框预测:先根据候选区域在特征图上定位对应的特征区域。然后将所有的候选区域特征统一缩放到7*7大小,然后将这2K个特征向量展平,并连接到全连接层上,得到类别和边框预测。

创新

1. 对整张图片进行特征提取得到相应的特征图(这是对R-CNN的一大改进;

2. 主要创新:使用了RoI Pooling,这一方法参考了SPPNet的空间金字塔池化;

3. 使用了多任务的损失函数来简化R-CNN中的多阶段训练。

在原文中,作者说Fast RCNN是R-CNN和SPPNet的一个快速更新,所以改进的内容并不是特别多,与后面的Faster RCNN提出了RPN相比,这只能算是一次打补丁的行为。

文中作者更多关心的是一些其它的问题,此处由于篇幅所限,仅简单列举一下作者研究的问题以及相关的结论,具体细节请自行看论文。

  1. 多任务训练是否有帮助?
  • 结论:是的,多任务训练效果比分阶段训练更好。

2. 尺度不变性:暴力方法还是巧妙技巧?

  • 人话版:在统一图像特征尺度时,是使用SPPNet的空间金字塔池化还是本文中的ROI池化?
  • 结论:两者效果差距微乎其微,甚至空间金字塔池化因为计算开销大,计算所需时间更长。

3. 训练数据是不是越多越好?

  • 结论:将训练数据翻倍,可以将mAP提高2%~3%。

4. SVM的表现是否优于softmax?

  • 结论:网络直接输出各类概率(softmax),比SVM分类器性能略好

5. 候选区域是不是越多越好?

  • 结论:否,候选区域从1K增加到10K的过程中,mAP先有所提升,然后略有下降,而且如果使用更多的候选区域,不仅没有帮助,反而会损害精度。

理解和实现多任务训练Multi-task Training涉及以下几个关键步骤:
1. **定义任务**:确定你希望模型同时学习的任务(例如,分类和回归)。
2. **设计网络**:构建一个神经网络,它有能力处理多个任务。通常,这涉及共享一些层来学习通用特征,同时为每个任务提供专用的分支
3. **构建多任务损失函数**:为每个任务定义损失函数,然后将这些损失结合起来形成一个总的损失函数。可以为不同任务的损失分配不同的权重来调整它们在训练中的重要性。
4. **训练模型**:使用包含多个任务损失的总损失函数来训练模型。通过反向传播更新模型参数,使得模型能够同时在所有任务上表现良好。
5. **调参和评估**:根据模型在各个任务上的表现进行调参,可能需要调整损失权重、网络结构或学习率等。

总结:多任务训练——专用分支 + 包含多个任务损失的总损失(任务损失*对应权重)

3.Faster R-CNN

Images -》Feature extraction -》RPN proposals generation -》proposal features projection

Faster R-CNN框架:

1. feature extraction

2. rpn proposal

4.sparse rcnn

        Sparse R-CNN与Faster R-CNN是两种目标检测模型,主要区别在于它们处理候选区域的方式。Sparse R-CNN使用稀疏机制,直接学习一组固定数量的候选区域(提议),并通过动态实例交互和权重生成对这些提议进行迭代精化,旨在减少计算量并提高效率。而Faster R-CNN通过区域提议网络(RPN)动态生成候选区域,并使用池化层从这些区域提取特征,然后再进行分类和边界框回归。这导致Sparse R-CNN在设计上更为简洁,且可能在某些情况下提供更高的效率和性能。

5.mask rcnn

Mask R-CNN的创新之处主要有两点:首先,引入了一个新的、与现有结构并行的分支,用于对每个感兴趣区域(ROI)生成高质量的分割掩码,实现精确的实例分割;其次,采用了ROI Align方法替代了先前的ROI Pooling,准确地从每个ROI中提取特征,解决了ROI Pooling中的量化误差问题,提高了检测的精度。这些创新使Mask R-CNN在目标检测和实例分割方面取得了显著的性能提升。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文心一言眼中的ChatGPT是什么样的

Q: 你好文心一言,请说一说你眼中的chatgpt A: 在我眼中,ChatGPT是一种非常先进和强大的自然语言处理模型,它展示了人工智能技术的显著进步。ChatGPT拥有出色的语言理解和生成能力,能够与用户进行流畅、自然的对话,并尝…

图书馆管理系统(2)

接下来实现系统的子菜单,在写一个子模块的时候,其他子模块先屏蔽起来,因为没实现,代码运行就通不过 屏蔽起来写上todo,后面(Ctrl键F)搜索,找todo来实现 先来实现图书管理模块 第一步,先要把图…

代码随想录训练营第39天 | LeetCode 62.不同路径、​​​​​​LeetCode 63. 不同路径 II

LeetCode 62.不同路径 文章讲解:代码随想录(programmercarl.com) 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili 思路 代码如下: ​​​​​​LeetCode 63. 不同路径 II 文章讲解…

智能化管理新趋势:连锁餐饮管理APP开发实战指南

时下,如何提高效率、降低成本、提升服务质量成为了每家连锁餐饮企业迫切需要解决的问题。而开发一款适用于连锁餐饮管理的智能化APP,成为了解决这些问题的重要途径之一。 一、​理解连锁餐饮行业的痛点和需求 连锁餐饮企业通常面临着分店多、人员流动大…

12 OpenCv阈值处理

文章目录 Halcon阈值处理概念阈值二值化阈值反二值化截断阈值取零阈值反取零算子示例 Halcon阈值处理 halcon 阈值处理 概念 阈值又叫临界值,是指一个效应能够产生的最低值或最高值。实际上是基于图片亮度的一个黑白分界值,默认值是50%中性灰&#xff…

ps aux | grep xxxx和ps ef | grep xxxx这两个命令有什么区别

命令实例 ps aux | grep nexus和ps ef | grep nexus ps aux | grep nexus 和 ps ef | grep nexus 这两个命令都用于在 Unix 或 Linux 系统中查找与 nexus 相关的进程,但它们在展示进程信息时有细微的区别。 ps aux | grep nexus: ps aux 是一种显示系统上所有运行进…

YoloV8改进策略:Block改进|自研Block,涨点超猛

参考模型 参考的Block,如下图: 我对Block做了修改,修改后的结构图如下: 代码详解 from timm.models.layers import DropPathfrom torch import Tensor def channel_shuffle(x: Tensor, groups: int

双体系Java学习之关键字,标识符以及命名规范

刚开学,然后之前的课程暂时停在了多态,接下来开始跟着学校的步伐重新开始学一下,谢谢!!! 关键字 标识符 命名规范

FPGA AXI4总线操作教程

AXI(Advanced Extensible Interface)总线是一种高性能、低延迟的片上系统(SoC)接口标准,广泛应用于现代数字系统设计中。它允许不同的硬件组件以高效、可靠的方式进行数据传输和控制。本教程将介绍AXI总线的基本操作和…

Android视角看鸿蒙第三课(module.json中的各字段含义之nametype)

Android视角看鸿蒙第三课(module.json中的各字段含义) 前言 上篇文章我们试图找到鸿蒙app的程序入口,确定了在鸿蒙工程中,由AppScope下的app.json5负责应用程序的图标及名称,由entry->src->main-module.json5负责桌面图标及名称的展示。 AppScope下的app.js…

【Java项目介绍和界面搭建】拼图小游戏——作弊码、查看完整图片

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

uniapp和vue项目配置多语言,实现前端切换语言

在uniapp中配置多语言功能,实现前端切换语言,可以按照以下步骤进行: 1. 创建语言包 首先,创建一个名为 lang 的目录,并在该目录下为每种支持的语言创建对应的JSON或JS文件。例如: lang/en.js&#xff08…