目标检测(R-CNN)系列(Pytorch 26)

news2024/11/25 19:36:08

一 R-CNN

除了之前描述的单发多框检测之外,区域卷积神经网络(region‐based CNN或regions with CNN features, R‐CNN)(Girshick et al., 2014)也是将深度模型应用于目标检测的开创性工作之一。下面介绍R‐CNN及其一 系列改进方法:快速的R‐CNN(Fast R‐CNN)(Girshick, 2015)、更快的R‐CNN(Faster R‐CNN)(Ren et al., 2015)和掩码R‐CNN(Mask R‐CNN)(He et al., 2017)。限于篇幅,我们只着重介绍这些模型的设计思路。

R-CNN首先从输入图像中选取若干(例如2000个)提议区域(如锚框也是一种选取方法),并标注它们的类别 和边界框(如偏移量)。(Girshick et al., 2014)然后,用卷积神经网络对每个提议区域进行前向传播以抽取其 特征。接下来,我们用每个提议区域的特征来预测类别和边界框。

具体来说,R‐CNN包括以下四个步骤:

  1. 对输入图像 使用选择性搜索来选取多个高质量的提议区域 (Uijlings et al., 2013)。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域都将被标注类别和真实边界框
  2. 选择一个预训练的卷积神经网络,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向传播输出抽取的提议区域特征;
  3. 每个提议区域的特征连同其标注的类别作为一个样本。训练多个支持向量机对目标分类,其中每个支持向量机用来判断样本是否属于某一个类别;
  4. 每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实边界框。

尽管R‐CNN模型通过预训练的卷积神经网络有效地抽取了图像特征,但它的速度很慢。想象一下,我们可能 从一张图像中选出上千个提议区域,这需要上千次的卷积神经网络的前向传播来执行目标检测。这种庞大的计算量使得R‐CNN在现实世界中难以被广泛应用。

二 Fast R-CNN

R‐CNN的主要性能瓶颈在于,对每个提议区域,卷积神经网络的前向传播是独立的,而没有共享计算。由于 这些区域通常有重叠,独立的特征抽取会导致重复的计算。Fast R-CNN (Girshick, 2015)对R‐CNN的主要改进 之一,是仅在整张图象上执行卷积神经网络的前向传播。

Fast R‐CNN模型。它的主要计算如下:

  1. 与R‐CNN相比,Fast R‐CNN用来提取特征的卷积神经网络的输入是整个图像,而不是各个提议区域。此 外,这个网络通常会参与训练。设输入为一张图像,将卷积神经网络的输出的形状记为1 × c × h1 × w1;
  2. 假设选择性搜索生成了n个提议区域。这些形状各异的提议区域在卷积神经网络的输出上分别标出了形 状各异的兴趣区域。然后,这些感兴趣的区域需要进一步抽取出形状相同的特征(比如指定高度h2和宽 度w2),以便于连结后输出。为了实现这一目标,Fast R‐CNN引入了兴趣区域汇聚层(RoI pooling):将卷 积神经网络的输出和提议区域作为输入,输出连结后的各个提议区域抽取的特征,形状为n×c×h2×w2;
  3. 通过全连接层 将输出形状变换为n × d,其中超参数d取决于模型设计;
  4. 预测n个提议区域中每个区域的类别和边界框。更具体地说,在预测类别和边界框时,将全连接层的输出 分别转换为形状为n×q(q是类别的数量)的输出和形状为n×4的输出。其中预测类别时使用softmax回 归。

下面,我们演示了兴趣区域汇聚层的计算方法。假设卷积神经网络抽取的特征X的高度和宽度都是4,且只有单通道。

import torch
import torchvision
X = torch.arange(16.).reshape(1, 1, 4, 4)
X

让我们进一步假设输入图像的高度和宽度都是40像素,且选择性搜索在此图像上生成了两个提议区域。每个区域由5个元素表示:区域目标类别、左上角和右下角的(x, y)坐标

rois = torch.Tensor([[0, 0, 0, 20, 20], [0, 0, 10, 30, 30]])

由于X的高和宽是输入图像高和宽的1/10,因此,两个提议区域的坐标先按spatial_scale乘以0.1。然后,在X上 分别标出这两个兴趣区域X[:, :, 0:3, 0:3]和X[:, :, 1:4, 0:4]。最后,在2 × 2的兴趣区域汇聚层中, 每个兴趣区域被划分为子窗口网格,并进一步抽取相同形状2 × 2的特征。

torchvision.ops.roi_pool(X, rois, output_size=(2, 2), spatial_scale=0.1)

三 Faster R-CNN

为了较精确地检测目标结果,Fast R‐CNN模型通常需要在选择性搜索中生成大量的提议区域。Faster R-CNN (Ren et al., 2015)提出将选择性搜索替换为区域提议网络(region proposal network),从而减少提议区域的 生成数量,并保证目标检测的精度。

与Fast R‐CNN相比,Faster R‐CNN 只将生成提议区域的方法从选择性搜索改为了 区域提议网络,模型的其余部分保持不变。具体来说,区域提议网络的计算步骤如下:

  1. 使用填充为1的3 × 3的卷积层变换卷积神经网络的输出,并将输出通道数记为c。这样,卷积神经网络 为图像抽取的特征图中的每个单元均得到一个长度为c的新特征。
  2. 以特征图的每个像素为中心,生成多个不同大小和宽高比的锚框并标注它们
  3. 使用锚框中心单元长度为c的特征,分别预测该锚框的二元类别(含目标还是背景)和边界框。
  4. 使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。最终输出的预测边界框即是 兴趣区域汇聚层所需的提议区域。

值得一提的是,区域提议网络作为Faster R‐CNN模型的一部分,是和整个模型一起训练得到的。换句话说, Faster R‐CNN的目标函数不仅包括目标检测中的类别和边界框预测,还包括区域提议网络中锚框的二元类别 和边界框预测。作为端到端训练的结果,区域提议网络能够学习到如何生成高质量的提议区域,从而在减少了从数据中学习的提议区域的数量的情况下,仍保持目标检测的精度。

四 Mask R-CNN

如果在训练集中还标注了每个目标在图像上的像素级位置,那么Mask R-CNN (He et al., 2017)能够有效地利用这些详尽的标注信息进一步提升目标检测的精度。

Mask R‐CNN是基于Faster R‐CNN修改而来的。具体来说,Mask R‐CNN将兴趣区域汇聚层 替换为了 兴趣区域对齐层,使用双线性插值(bilinear interpolation)来保留特征图上的空间信息,从而更适于像素级预测。兴趣区域对齐层的输出包含了所有与兴趣区域的形状相同的特征图。它们不仅被用于预测 每个兴趣区域的类别和边界框,还通过额外的全卷积网络预测目标的像素级位置。

小结:

  • R‐CNN对图像选取若干提议区域,使用卷积神经网络对每个提议区域执行前向传播以抽取其特征,然后再用这些特征来预测提议区域的类别和边界框。
  • Fast R‐CNN对R‐CNN的一个主要改进:只对整个图像做卷积神经网络的前向传播。它还引入了兴趣区 域汇聚层,从而为具有不同形状的兴趣区域抽取相同形状的特征。
  • Faster R‐CNN将Fast R‐CNN中 使用的选择性搜索替换为参与训练的区域提议网络,这样后者可以在减少提议区域数量的情况下仍保证目标检测的精度。
  • Mask R‐CNN在Faster R‐CNN的基础上引入了一个全卷积网络,从而借助目标的像素级位置进一步提升目标检测的精度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE】Spring Boot MyBatis详解(一)

一.MyBatis的基本概念与相关配置. 1.基本概念 MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis. 2013年11月迁移到Github.持久层…

吴恩达2022机器学习专项课程C2W3:2.25 理解方差和偏差(诊断方差偏差正则化偏差方案)

目录 引言名词替代影响模型偏差和方差的因素1.多项式阶数2.正则化参数 判断是否有高偏差或高方差1.方法一:建立性能基准水平2.方法二:建立学习曲线 总结 引言 机器学习系统开发的典型流程是从一个想法开始,然后训练模型。初次训练的结果通常…

SpringSecurity入门(四)

18、权限管理/授权 18.1、针对url配置 配置SecurityConfig package com.wanqi.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.bu…

基于STM32的595级联的Proteus仿真

文章目录 一、595级联1.题目要求2.思路3.仿真图3.1 未仿真时3.2 模式A3.2 模式B3.3 故障模式 二、总结 一、595级联 1.题目要求 STM32单片机,以及三个LED灯对应红黄绿灯,IIC的OLED显示屏,温湿度传感器DHT11,两个独立按键和两个5…

复数乘法IP核的使用

一、IP核解析 在这张图片中,我们看到的是一个“Complex Multiplier (6.0)” IP 核的配置界面。以下是各个配置参数的详细说明: 1.1 Multiplier Construction Use LUTs: 选择这个选项时,乘法器将使用查找表(LUTs)来实现…

【数据分析系列】交叉列联表与卡方检验:数据解读与Python实践应用

目录 一、交叉列联表和卡方检验的关系 (一)什么是交叉列联表 (二)什么是卡方检验 (三)除了卡方检验,列联表分析还可以结合其他统计方法 二、列联表只能用于两个分类变量吗? 三、…

随机点名软件,教师必备NO.106

事先需要新建一个txt文本文档,里面输入名单,一行一个 点击文件-导入TXT-点击开始抽取 资源来源于网络,免费分享仅供学习和测试使用,请勿用于商业用途,如有侵权请联系删除! 下载地址:点击查看…

CISCN2023 初赛部分复现

Misc 1. 被加密的生产流量 涉及到modbus协议 modbus && frame.len 66过滤之后,每条流量最后两个字节是base32的密文 脚本一键提取 #modbus_exp import pysharkflag tmp 0 cap pyshark.FileCapture(input_file"D:/下载/CTF附件/ciscn2023/modbu…

js调试过程中修改变量值

1.在想要变更的地方添加断点 2.添加监视表达式 3.执行网页代码,当执行到断点处则会停止 4.点击执行下一步,则会执行监视表达式

68. UE5 RPG 处理多个角色后续bug

我们现在已经有了四个敌人角色,接下来,处理一下在战斗中遇到的问题。 处理角色死亡后还会攻击的问题 因为我们有角色溶解的效果,角色在死亡以后的5秒钟才会被销毁掉。所以在这五秒钟之内,角色其实还是会攻击。主要时因为AI行为树…

MySQL基础---库的操作和表的操作(配着自己的实操图,简单易上手)

绪论​ 勿问成功的秘诀为何,且尽全力做您应该做的事吧。–美华纳;本章是MySQL的第二章,本章主要写道MySQL中库和表的增删查改以及对库和表的备份处理,本章是基于上一章所写若没安装mysql可以查看Linux下搭建mysql软件及登录和基本…

Android.基本用法学习笔记

设置文本的内容 先在strings.xml声明变量 方法1. 方法2. 设置文本的大小 1.单位dp,大家可以去学一下有关的单位换算 2. 设置文本颜色 1. 2. 4.设置文本背景颜色 1. 2. 设置视图的宽高 与上级视图一致,也就是上一级有多宽就有多少 1. 2. 3. 4. 设置视图…

1.VMware软件的安装与虚拟机的创建

1. VMware软件的安装 1.1 为什么需要虚拟机 嵌入式Linux开发需要在Linux系统下运行,我们选择Ubuntu。   1、双系统安装     有问题,一次只能使用一个系统。Ubuntu基本只做编译用。双系统安装不能同时运行Windows和Linux。   2、虚拟机软件   …

pytorch 实现语义分割(Pytorch 27)

一 语义分割 在目标检测问题中,我们一直使用方形边界框来标注和预测图像中的目标。下面探讨语义分割(semantic segmentation)问题,它重点关注于 如何将图像分割成属于不同语义类别的区域。 与目标检测不同,语义分割可…

k8s 1.28 搭建rabbitmq集群

1.环境 1.1 k8s 1.28 1.2 rabbit 3.8 1.3 工作空间default 1.4 注意,内存最好充足一点,因为我就两个节点一个master、一个node,起初我的node是8g,还剩3~4G,集群竟然一直起不来,后来将虚拟机内存扩大&#x…

ROS1配置husky仿真环境遇到的一些问题+方法论

ROS 系列学习教程(总目录) 本文目录 一、问题描述二、问题分析2.1 分析日志2.2 尝试一(失败)2.3 尝试二(成功) 三、husky仿真需要安装的软件包四、总结 - 方法论4.1 文件路径不合法4.2 文件内容不合法4.3 ROS 环境变量4.3.1 方法一…

consul做配置中心

1. 分布式配置中心 consul不仅可做注册中心,还可做配置中心 applicaiton.yml与bootstrap.yml: applicaiton.yml是用户级的资源配置项bootstrap.yml是系统级的,优先级更加高 Spring Cloud会创建一个“Bootstrap Context”,作为Spring应用…

blender

通用设置: 仅显示/取消隐藏:数字键盘/ 移动视角:shift鼠标中键 Blender如何给场景添加参考图片-百度经验 (baidu.com) 进入编辑模式:Tab 编辑模式:点-线-面 两个视图 法向显示:就能变成恶心的蓝红色 显…

AI大模型探索之路-实战篇16:优化决策流程:Agent智能数据分析平台中Planning功能实践

系列篇章💥 AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6:掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

设计软件有哪些?照明工具篇,渲染100邀请码1a12

阴影和照明涉及到图片的真实感和氛围,所以熟练使用照明工具是设计师的必备能力,这次我们介绍一些照明工具。 1、VRaySun VRaySun是VRay渲染器中的一个功能,用于模拟太阳光源。它是一种方便易用的光源类型,能够产生逼真的日光效果…