目标检测:RPN — Faster R-CNN 的主干

news2024/11/24 13:32:47

动动发财的小手,点个赞吧!

在使用 R-CNN 的目标检测中,RPN 是真正的主干,并且到目前为止已被证明非常有效。它的目的是提出在特定图像中可识别的多个对象。

这种方法是由 Shaoqing Ren、Kaiming He、Ross Girshick 和 Jian Sun 在一篇非常受欢迎的论文“Faster R-CNN:Towards Real Time Object Detection with Region Proposal Networks”中提出的。这是一个非常流行的算法,引起了很多数据科学家、深度学习和人工智能工程师的关注。它具有巨大的应用,例如检测自动驾驶汽车中的物体,协助不同能力的人并帮助他们等。

1. 什么是CNN ?

CNN 翻译成卷积神经网络,这是一种非常流行的图像分类算法,通常由卷积层、激活函数层、池化(主要是 max_pooling)层组成,以在不丢失大量特征的情况下降低维度。对于这篇文章[1],你应该知道有一个特征图是由最后一层卷积层生成的。

例如,如果您输入猫图像或狗图像,算法可以告诉您它是狗还是猫。

但它并不止于此,强大的计算能力带来了巨大的进步。

许多预训练模型被开发为直接使用它们,而无需经历由于计算限制而训练模型的痛苦。许多模型也很受欢迎,例如 VGG-16、ResNet 50、DeepNet、ImageNet 的 AlexNet。

对于这篇特别的文章,我特别想谈谈我认为从上述论文中得出的非常聪明的算法或想法。许多人实施 Faster R-CNN 来识别对象,但该算法专门研究了算法如何在已识别对象周围获取框背后的逻辑和数学。

该算法的开发者将其称为 Region Proposal Networks,缩写为 RPN。

为了为对象所在的区域生成这些所谓的“建议”,一个小型网络在卷积特征图上滑动,该特征图是最后一个卷积层的输出。

alt

以上是 Faster R-CNN 的架构。 RPN 为对象生成建议。 RPN 本身具有专门且独特的架构。我想进一步分解RPN架构。

alt

RPN 有一个分类器和一个回归器。作者引入了锚点的概念。 Anchor 是滑动窗口的中心点。对于作为 AlexNet 扩展的 ZF 模型,尺寸为 256-d,对于 VGG-16,尺寸为 512-d。分类器确定具有目标对象的提议的概率。回归对提案的坐标进行回归。对于任何图像,比例和纵横比都是两个重要参数。不知道的朋友,纵横比=图片的宽度/图片的高度,scale就是图片的大小。开发人员选择了 3 种比例和 3 种纵横比。因此,每个像素总共可能有 9 个建议,这就是 k 值的决定方式,对于这种情况,K=9,k 是锚点的数量。对于整个图像,anchors 的数量是 WHK。

该算法对平移具有鲁棒性,因此该算法的关键属性之一是平移不变性。

算法中多尺度锚点的存在导致“锚点金字塔”而不是“过滤器金字塔”,这使得它比以前提出的算法(如 Multi-Box)更省时且更具成本效益。

2. 它是如何工作的 ?

这些锚点根据两个因素分配标签:

  1. Intersection-over-union 最高的锚点与地面实况框重叠。
  2. Intersection-Over-Union Overlap 高于 0.7 的锚点。

归根结底,RPN 是一种需要训练的算法。所以我们肯定有我们的损失函数。

alt

i → anchor 的索引,p → 是否是物体的概率,t → 预测边界框的4个参数化坐标的向量,*表示ground truth box。 cls 的 L 表示两个类的对数损失。

alt

损失函数中带有回归项的p确保当且仅当对象被识别为是时,则只有回归才算数,否则p将为零,因此损失函数中的回归项将变为零。

Ncls 和 Nreg 是归一化。默认情况下,λ 默认为 10,用于在同一级别上缩放分类器和回归器。

如果您想更详细地了解,这里是论文的链接:https://arxiv.org/pdf/1506.01497.pdf。

Reference

[1]

Source: https://medium.com/egen/region-proposal-network-rpn-backbone-of-faster-r-cnn-4a744a38d7f9

本文由 mdnice 多平台发布

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

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

相关文章

Pandas 28种常用方法使用总结

Pandas库专为数据分析而设计,它是使Python成为强大而高效的数据分析环境的重要因素。它提供了多种数据结构和方法来处理和分析数据。下面是一些Pandas常用方法的使用总结。 1. 创建数据框 使用read_csv()或read_excel()方法读取数据文件,也可以使用Dat…

饶派杯XCTF车联网安全挑战赛Reverse GotYourKey

文章目录 一.程序逻辑分析二.线程2的operate方法解析三.找出真flag 一.程序逻辑分析 onCreate方法中判断SDK版本是否>27 然后创建两个线程 第一个线程是接受输入的字符串并发送出去 第二个线程用于接受数据 线程1,就是将字符串转为字节数组发送出去 线程2,作为服务端接受…

knife4j、swagger、springdoc 返回接口分组排序问题

一、直击问题 解决前后顺序对比 解决方法: 在配置文件中添加排序规则方法sortTagsAlphabetically: package com.example.demo.config;import io.swagger.v3.oas.annotations.OpenAPIDefinition; import io.swagger.v3.oas.annotations.enums.Security…

OpenMMlab的整体概述和作用

是什么? 开源算法体系(非框架、有开源代码) 用pytorch实现 优势 开箱即用,复现了很多顶会论文中的算法。每个cv任务对应算法库,其中顺序即为学习路线。便于对比实验。 使用统一的框架、超参数,做对比实…

测试接口遇到APP加密?先来了解一下算法思路~

背景 服务端与客户端进行http通讯时,为了防止被爬虫,数据安全性等,引入APP通信加密,简单来说,就是引入签名sign,APP的所有请求都会经过加密签名校验流程。常见的加密方案有AES加密,RSA加密&…

性能测试1

目录 1.什么是性能测试 1.1性能测试的定义 1.2性能测试和功能测试的区别 1.3影响一个软件性能因素有什么影响 2.为什么是性能测试 3.性能测试常见的术语和性能测试衡量指标 3.1并发用户数 3.2响应时间/平均响应时间(RT/ART) 3.3事务响应时间 3.4每秒事务通…

yolov5训练时遇到的问题

torch会自动被requirement.txt替换 在对yolov5_5.0进行pip install requirement.txt后,yolo5_5.0会将虚拟环境中中的torch替换为2.0.1版本的,但要注意查看该torch是否为gpu版本,查看方式如下:打开Anaconda Prompt,激活…

分布式爬虫框架

分布式爬虫框架分为两种:控制模式(左)和自由模式(右): 控制模式中的控制节点是系统实现中的瓶颈,自由模式则面临爬行节点之间的通信处理问题。因此,在实际工程中,我们通常…

go语言命令行工具cobra

go语言命令行工具cobra 1、Cobra 介绍 Cobra 是关于 golang 的一个命令行解析库,用它能够快速创建功能强大的 cli 应用程序和命令行工具。 cobra既是一个用于创建强大现代CLI应用程序的库,也是一个生成应用程序和命令文件的程序。cobra被用在很多 go…

【从球开始渲染小姐姐】DAY1----用blender捏一个小姐姐

Building Blender/Windows - Blender Developer Wikihttps://wiki.blender.org/wiki/Building_Blender/Windows How to build Blender on Windows? - YouTubehttps://www.youtube.com/watch?vb6CtGm4vbng bf-blender - Revision 63388: /trunk/lib/win64_vc15https://svn.b…

DJ4-6 虚拟存储器的基本概念

目录 4.6.1 虚拟存储器的引入 1、常规存储器管理方式的特征 2、内存的扩充方法 4.6.2 局部性原理 4.6.3 虚拟存储器的定义 1、虚拟存储器的基本工作情况 2、虚拟存储器的定义 3、虚拟存储器的实现方法 4.6.4 虚拟存储器的特征 基本分页和基本分段不能解决的问题&a…

snpEFF和bedtools基因注释有何异同?

大家好,我是邓飞,现在写博客越来越繁琐了,每个平台对图片都有自己的规则,不能通用,各种找不到图片,本着充值是我变强的原则,买了Markdown Nice的VIP(https://product.mdnice.com/&am…

自然语言处理从入门到应用——自然语言处理(Natural Language Processing,NLP)基础知识

分类目录:《自然语言处理从入门到应用》总目录 自然语言通常指的是人类语言,是人类思维的载体和交流的基本工具,也是人类区别于动物的根本标志,更是人类智能发展的外在体现形式之一。自然语言处理(Natural Language Pr…

C Primer Plus第十四章编程练习答案

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 由于使用的是命令行参数常用于linux系…

LeetCode:1143.最长公共子序列 1035.不相交的线 53. 最大子序和

1143.最长公共子序列 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除…

字节和滴滴划水5年,总结出来的真实经验....

先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入字节,之后跳槽到了滴滴,一直从事软件测试的工作。之前没有实习经历,算是5年的工作经验吧。 这5年之间完成了一次晋升,换了一家公司,有…

基础巩固(四)View体系与事件分发

文章目录 Android窗口机制ViewRootWindow、WindowManager、ViewRoot、Activity、DecorView之间的关系ViewView的生命周期Attachment / DetachmentTraversalsState Save / Restoreinvalidate()和requestLayout() View的生命周期与Activity的生命周期的关联Activity创建时如何关联…

[深度学习]yolov7 pytorch模型转onnx,转ncnn模型和mnn模型使用细节

文章目录 前言1.前置1.1 安装必要的库1.2 .pt 权重转ncnn 和mnn所需要的权重 2、编码C项目1.ncnn2.mnn 总结 前言 yolov7 pytorch模型转onnx,转ncnn模型和mnn模型使用细节,记录一下 git仓库: yolov7 https://github.com/WongKinYiu/yolov7 n…

JQL的语法格式

JQL&#xff08;Jira Query Language&#xff09;的语法格式如下&#xff1a; <field> <operator> <value> 其中&#xff0c; 表示 Jira 中的字段&#xff08;例如 project、assignee、status 等&#xff09;&#xff0c; 表示操作符&#xff08;例如 、!、&…

uni-app路由进阶—不同路由跳转配置的使用

uni-app路由进阶—不同路由跳转配置的使用 uni-app路由进阶—不同路由跳转配置的使用 文章目录 uni-app路由进阶—不同路由跳转配置的使用前言一、配置2个一级导航页面&#xff08;tabBar&#xff09;二、路由配置分类总结 前言 UNI-APP学习系列之uni-app路由进阶—不同路由跳…