深度学习入门(四十六)计算机视觉——区域卷积神经网络(R-CNN)系列

news2024/11/26 10:33:32

深度学习入门(四十六)计算机视觉——区域卷积神经网络(R-CNN)系列

  • 前言
  • 计算机视觉——区域卷积神经网络(R-CNN)系列
    • 课件
      • R-CNN
      • 兴趣区域(RoI)池化层
      • Faster R-CNN
      • Faster R-CNN
      • Mask R-CNN
      • 精度和速度比较
      • 总结
    • 教材
      • 1 R-CNN
      • 2 Fast R-CNN
      • 3 Faster R-CNN
      • 4 Mask R-CNN
      • 小结
      • 参考文献

前言

核心内容来自博客链接1博客连接2希望大家多多支持作者
本文记录用,防止遗忘

计算机视觉——区域卷积神经网络(R-CNN)系列

课件

R-CNN

在这里插入图片描述

  • 使用启发式搜索算法来选择锚框
  • 使用预训练模型来对每个锚框抽取特征
  • 训练一个SVM来对类别分类
  • 训练一个线性回归模型来预测边缘框偏移
  • 兴趣区域(RoI)池化层

  • 给定一个锚框,均匀分割成n×m块,输出每块里的最大值
  • 不管锚框多大,总是输出nm个值
  • 在这里插入图片描述

    Faster R-CNN

  • 使用CNN对图片抽取特征
  • 使用Rol池化层对每个锚框生成固定长度特征
  • 在这里插入图片描述

    Faster R-CNN

  • 使用一个区域提议网络来替代启发式搜索来获得更好的锚框
  • 在这里插入图片描述

    Mask R-CNN

    如果有像素级别的标号,使用FCN来利用这些信息。
    在这里插入图片描述

    精度和速度比较

    在这里插入图片描述

    总结

  • R-CNN是最早、也是最有名的一类基于锚框和CNN的目标检测算法
  • Fast/Faster R-CNN持续提升性能
  • Faster R-CNN和Mask R-CNN是在最求高精度场景下的常用算法
  • 教材

    区域卷积神经网络(region-based CNN或regions with CNN features,R-CNN) 是将深度模型应用于目标检测的开创性工作之一。 在本节中,我们将介绍R-CNN及其一系列改进方法:快速的R-CNN(Fast R-CNN)、更快的R-CNN(Faster R-CNN) 和掩码R-CNN(Mask R-CNN)。限于篇幅,我们只着重介绍这些模型的设计思路。

    1 R-CNN

    R-CNN首先从输入图像中选取若干(例如2000个)提议区域(如锚框也是一种选取方法),并标注它们的类别和边界框(如偏移量)。然后,用卷积神经网络对每个提议区域进行前向传播以抽取其特征。 接下来,我们用每个提议区域的特征来预测类别和边界框。
    在这里插入图片描述
    上图展示了R-CNN模型。具体来说,R-CNN包括以下四个步骤:

    1、对输入图像使用选择性搜索来选取多个高质量的提议区域。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域都将被标注类别和真实边界框。

    2、选择一个预训练的卷积神经网络,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向传播输出抽取的提议区域特征。

    3、将每个提议区域的特征连同其标注的类别作为一个样本。训练多个支持向量机对目标分类,其中每个支持向量机用来判断样本是否属于某一个类别。

    4、将每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实边界框。

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

    2 Fast R-CNN

    R-CNN的主要性能瓶颈在于,对每个提议区域,卷积神经网络的前向传播是独立的,而没有共享计算。 由于这些区域通常有重叠,独立的特征抽取会导致重复的计算。 Fast R-CNN对R-CNN的主要改进之一,是仅在整张图象上执行卷积神经网络的前向传播。
    在这里插入图片描述
    上图描述了Fast R-CNN模型。它的主要计算如下:

    1、与R-CNN相比,Fast R-CNN用来提取特征的卷积神经网络的输入是整个图像,而不是各个提议区域。此外,这个网络通常会参与训练。设输入为一张图像,将卷积神经网络的输出的形状记为 1 × c × h 1 × w 1 1 \times c \times h_1 \times w_1 1×c×h1×w1

    2、假设选择性搜索生成了 n n n个提议区域。这些形状各异的提议区域在卷积神经网络的输出上分别标出了形状各异的兴趣区域。然后,这些感兴趣的区域需要进一步抽取出形状相同的特征(比如指定高度 h 2 h_2 h2和宽度 w 2 w_2 w2),以便于连结后输出。为了实现这一目标,Fast R-CNN引入了兴趣区域池化层(RoI pooling):将卷积神经网络的输出和提议区域作为输入,输出连结后的各个提议区域抽取的特征,形状为 n × c × h 2 × w 2 n \times c \times h_2 \times w_2 n×c×h2×w2

    3、通过全连接层将输出形状变换为 n × d n \times d n×d,其中超参数 d d d取决于模型设计。

    4、预测 n n n个提议区域中每个区域的类别和边界框。更具体地说,在预测类别和边界框时,将全连接层的输出分别转换为形状为 n × q n \times q n×q q q q是类别的数量)的输出和形状为 n × 4 n \times 4 n×4的输出。其中预测类别时使用softmax回归。

    在Fast R-CNN中提出的兴趣区域池化层与池化层一节中介绍的池化层有所不同。在池化层中,我们通过设置池化窗口、填充和步幅的大小来间接控制输出形状。而兴趣区域池化层对每个区域的输出形状是可以直接指定的。

    例如,指定每个区域输出的高和宽分别为 h 2 h_2 h2 w 2 w_2 w2。 对于任何形状为 h × w h \times w h×w的兴趣区域窗口,该窗口将被划分为 h 2 × w 2 h_2 \times w_2 h2×w2子窗口网格,其中每个子窗口的大小约为 ( h / h 2 ) × ( w / w 2 ) (h/h_2) \times (w/w_2) (h/h2)×(w/w2)。 在实践中,任何子窗口的高度和宽度都应向上取整,其中的最大元素作为该子窗口的输出。 因此,兴趣区域池化层可从形状各异的兴趣区域中均抽取出形状相同的特征。

    作为说明性示例, 下图提到,在 4 × 4 4 \times 4 4×4的输入中,我们选取了左上角的 3 × 3 3\times 3 3×3兴趣区域。 对于该兴趣区域,我们通过 2 × 2 2\times 2 2×2的兴趣区域池化层得到一个 2 × 2 2\times 2 2×2的输出。 请注意,四个划分后的子窗口中分别含有元素0、1、4、5(5最大);2、6(6最大);8、9(9最大);以及10。
    在这里插入图片描述

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

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

    输出:

    tensor([[[[ 0.,  1.,  2.,  3.],
              [ 4.,  5.,  6.,  7.],
              [ 8.,  9., 10., 11.],
              [12., 13., 14., 15.]]]])
    

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

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

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

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

    输出:

    tensor([[[[ 5.,  6.],
              [ 9., 10.]]],
    
    
            [[[ 9., 11.],
              [13., 15.]]]])
    

    3 Faster R-CNN

    为了较精确地检测目标结果,Fast R-CNN模型通常需要在选择性搜索中生成大量的提议区域。 Faster R-CNN提出将选择性搜索替换为区域提议网络(region proposal network),从而减少提议区域的生成数量,并保证目标检测的精度。
    在这里插入图片描述
    上图描述了Faster R-CNN模型。 与Fast R-CNN相比,Faster R-CNN只将生成提议区域的方法从选择性搜索改为了区域提议网络,模型的其余部分保持不变。具体来说,区域提议网络的计算步骤如下:

    1、使用填充为1的 3 × 3 3\times 3 3×3的卷积层变换卷积神经网络的输出,并将输出通道数记为 c c c。这样,卷积神经网络为图像抽取的特征图中的每个单元均得到一个长度为 c c c的新特征。

    2、以特征图的每个像素为中心,生成多个不同大小和宽高比的锚框并标注它们。

    3、使用锚框中心单元长度为 c c c的特征,分别预测该锚框的二元类别(含目标还是背景)和边界框。

    4、使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。最终输出的预测边界框即是兴趣区域汇聚层所需的提议区域。

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

    4 Mask R-CNN

    如果在训练集中还标注了每个目标在图像上的像素级位置,那么Mask R-CNN能够有效地利用这些详尽的标注信息进一步提升目标检测的精度。
    在这里插入图片描述
    如图所示,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的基础上引入了一个全卷积网络,从而借助目标的像素级位置进一步提升目标检测的精度。
  • 参考文献

    [1] Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 580-587).

    [2] Uijlings, J. R., Van De Sande, K. E., Gevers, T., & Smeulders, A. W. (2013). Selective search for object recognition. International journal of computer vision, 104(2), 154-171.

    [3] Girshick, R. (2015). Fast r-cnn. arXiv preprint arXiv:1504.08083.

    [4] Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster r-cnn: Towards real-time object detection with region proposal networks. In Advances in neural information processing systems (pp. 91-99).

    [5] He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2017, October). Mask r-cnn. In Computer Vision (ICCV), 2017 IEEE International Conference on (pp. 2980-2988). IEEE.

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

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

相关文章

Maven基础学习——tomcat插件配置(含web工程配置)

tomcat插件配置一、前言二、步骤1.登录网站后搜索TomcatMaven2.找到插件坐标3.选择插件版本4.将插件配置到web工程中5.测试插件三、Web工程配置1.在webapp下新建文件2.删除web.xml中多余代码3.pom.xml文件一、前言 在学习Maven时,肯定会遇到tomcat插件,…

ESP8266--Arduino开发(驱动OLED显示文字和图片)

文章目录一、0.96 IIC OLED介绍二、安装库文件2.1、库屏幕控制相关API2.2、库绘制相关API2.3、文本相关API2.4、图像相关API三、显示字母四、显示汉字五、显示图片一、0.96 IIC OLED介绍 OLED是一种利用多层有机薄膜结构产生电致发光的器件,它很容易制作&#xff0…

SPARKSQL3.0-Catalog源码剖析

SPARKSQL3.0-Catalog源码剖析 一、前言 阅读本节需要先掌握Analyzer阶段的相关知识 在Spark SQL 系统中,Catalog 主要用于各种函数资源信息和元数据信息 (数据库、数据表数据视图、数据分区等)的统一管理。 初次看这种解释还是比较模糊&a…

5周年,时过境迁,千变万化

2022年11月22日 小雪 长沙 阴小雨 下午 吃饭 遇雨 跑 不知不觉开始博客5年啦,注册账号有6年了。 ~~~那就浅写一首不像诗的诗聊表纪念吧~~~ 其实偶尔还是会迷茫, 但不必过分紧张, 每个时代都有每个时代化的特色的机遇与挑战, …

服务案例|AI算法在Oracle指标异常检查、故障预测之牛刀小试

LinkSLA与南京大学合作,将AI算法引入运维平台,将趋势性、周期性强的指标数据通过机器学习,实现异常检测、故障预测等功能。 下面分享一个通过AI算法,对Oracle数据库故障预测的案例。 在3月16日,MOC工程师接到某公司的…

中学数学教学参考杂志社中学数学教学参考编辑部2022年第27期目录

谈学论教 “平行四边形”章首课的教学思考 李斌; 1-3 高中数学课程中的函数教学 孔鑫辉; 3-4《中学数学教学参考》投稿:cn7kantougao163.com 对方程起始课教学的探究 梅琴; 5-7 注重师生互动,激活数学课堂 董启福; 8-9 例析高中数学体验教学法的…

RPC框架(一)——简易RPC

RPC介绍 RPC,Remote Procedure Call 即远程过程调用,远程过程调用其实对标的是本地过程调用 一个RPC框架要进行使用应该要具有如下的组件(功能) 从整体层次来看,一个RPC协议的框架应该具有三个层面: 服…

RSE2021/云检测:基于小波变换和连续多尺度空间注意的上下块深度网络云检测

RSE2021/云检测Deep network based on up and down blocks using wavelet transform and successive multi-scale spatial attention for cloud detection基于小波变换和连续多尺度空间注意的上下块深度网络云检测0.摘要1.概述2.方法3.背景4.实验数据5.我们的方法5.1.UD-NET5.1…

frp内网穿透

文章目录原理如果没有配置ssh,需要先配置ssh免密登录到pc内网穿透流程frp自启动frps自启动frpc自启动原理 1、在公网中转服务器上面搭建FRP服务器。同时,在内网服务器上面安装FRP客户端。 2、按照UP的FRP客户端配置文件进行说明。7000端口是FRP服务端开放…

tk跨境电商好做吗?有什么技巧吗?

最近tiktok大热,不少小伙伴都在蠢蠢欲动了,但他们都在担心tk跨境电商到底好不好做?有什么技巧没有?因为怕耗时耗力最后一场空。这里我们大家就来简单聊聊吧! tk跨境电商好做吗? 其实个人认为tk跨境电商现阶…

fork函数相关资源复制问题验证

前言 fork是什么?克隆当前的进程,然后创建一个子进程。本文分几个验证实例代码,主要是为解决验证一些小问题。 一 fork与文件描述符 fork之前打开一个文件的测试。 问题:fork之后,父进程关闭文件,子进程是…

14天学习训练营导师课程-Pygame学习笔记-Part1(环境准备)

14天学习训练营导师课程: 李宁《Python Pygame游戏开发入门与实战》 李宁《计算机视觉OpenCV Python项目实战》1 李宁《计算机视觉OpenCV Python项目实战》2 李宁《计算机视觉OpenCV Python项目实战》3 学习知识点 学习先从环境安装和配置开始: 环境安装…

微积分在金融投资的应用

目 录 摘 要 I ABSTRACT II 1绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 1 1.3微积分发展概述 2 1.3.1微积分学的创立 2 1.3.2微积分诞生的重要意义 3 1.3.3微积分理论内容介绍 3 1.3研究主要内容 4 2微积分在金融投资中的应用 5 2.1导数在金融投资中的应用 5 2.1.1导数在金…

Springboot疫苗接种管理系统-JAVA.JSP【数据库设计、源码、开题报告】

摘 要 预防预接种工作实行网络信息化管理,是我国免疫规划工作发展的需要。接种信息实行网络信息化不仅是预防接种工作步入了一个新的台阶,更重要的是解决了多年疫苗接种过程种,免疫接种剂次不清,难以全程有效接种的问题&#xff…

SpringBoot + openFeign实现远程接口调用

SpringBoot服务之间通过openFeign实现远程接口调用 现在的微服务项目不少都使用的是springbootspring cloud构建的项目,微服务之间的调用都离不开feign来进行远程调用。那么我们一个服务需要调用第三方的服务的时候,我们常常可能使用httpclient或者rest…

正大国际期货:2022正大期货在国际市场热度不减的几点原因

2022年国际期货是金融行业重点关注的对象,从今年市场数据中可以看出,正大国际期货之所以还能一如既往领跑,每年交易量都在递增,和正大后台的实力雄厚,坚守合作互赢的理念重大相关,接下来重点说说正大国际越…

【ML-SVM案例学习】svm实现手写数字识别

文章目录前言一、源码分步解析1.引入库2. 设置属性防止中文乱码3.加载数字图片数据4.获取样本数量,并将图片数据格式化5.模型构建6.测试数据部分实际值和预测值获取7.进行图片展示8.把预测错的值的 x值 y值 和y的预测值取出9.通过enumerate,分别拿出x值 …

Java的三大特性之继承

封装详见:Java的三大特性之封装 多态详见:Java的三大特性之多态 1.认识继承 继承的本质是对某一批类的抽象,从而实现对显示世界更好的建模。 extends “扩展” 子类是父类的扩展,子类继承了父类,就会有父类的全部方法…

强推这款键盘利器(Keychron),这次我彻底入坑了

嗨喽,大家好。还记得我今年五月份的时候,发布了一篇关于自己使用键盘的文章——>程序猿必备键盘推荐(Keychron),实用炫酷两不误,这篇文章发布后引起了强烈的反响。身边的同学、朋友,包括一些…

Ubuntu20.4系统隐藏顶栏

注:Ubuntu20.4以上版本安装gnome-tweak-tool可以实现隐藏顶栏了,但20.4还需要安装一下扩展模块,教程如下: 在Ubuntu中有两个扩展工具都支持隐藏顶栏。 1、安装autohidetopbar。 sudo apt install gnome-shell-extension-autohid…