Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)

news2025/6/5 19:26:17

一、《用于精确目标检测和语义分割的丰富特征层次结构》

1.1、基本信息

原文标题:Rich feature hierarchies for accurate object detection and semantic segmentation
中文译名:用于精确目标检测与语义分割的丰富特征层次结构
版本:第5版技术报告(Tech report v5)
作者:Ross Girshick等(UC Berkeley)
发表时间:2014年(CVPR会议扩展版)
核心贡献:提出R-CNN(Regions with CNN features)框架,首次将深度卷积网络(CNN)与区域提议方法结合,奠定两阶段目标检测范式基础。

作者主页:

         rbg's home page

 论文地址:

[1311.2524] Rich feature hierarchies for accurate object detection and semantic segmentation

1.2、主要内容

方法创新

        区域提议+CNN特征提取:通过选择性搜索(Selective Search)生成候选区域,后经CNN提取高层次特征。

        端到端训练改进:针对小样本数据,采用预训练(ImageNet)+微调(PASCAL VOC)策略。

        边界框回归:引入后处理步骤优化检测框定位精度。

技术突破

        在PASCAL VOC 2012上将mAP从35.1%提升至53.7%,性能飞跃52%。

        证明深层CNN特征对复杂视觉任务(检测/分割)的强表征能力。

局限性

        计算成本高(每张图需独立处理约2000个区域提议)。

        训练流程非完全端到端(需分阶段优化)。

1.3、影响和作用

学术影响:开创基于深度学习的目标检测新范式,直接启发Fast R-CNN、Faster R-CNN、Mask R-CNN等后续工作。推动CNN在计算机视觉中的核心地位确立(CVPR 2014最佳论文提名)。

工业应用:成为自动驾驶(物体识别)、医学影像分析、卫星图像解译等领域的基础技术。相关思想延伸至自然语言处理(如区域提议+特征提取的类比应用)。

历史意义:被引用超2万次(截至2023年),誉为"目标检测领域的里程碑式研究"。

二、实现过程

        1. 候选区域生成:使用选择性搜索或其他方法生成约2000个候选区域 (使用Selective Search方法)。

        2. 特征提取:对每个候选区域使用卷积神经网络(通常是在ImageNet上 预训练的网络)提取固定长度的特征向量。

        3. 分类:使用支持向量机(SVM)对每个候选区域进行分类,判断其是否 包含特定类别的物体。

        4. 回归:使用回归器对每个候选区域的边界框进行微调,以更准确地定位 物体。

2.1、 候选区域生成

        利用Selective Search算法通过分割生成候选区域(region proposals), 这些区域作为后续目标检测和分类的输入。Selective Search算法的主要目 标是通过合并和分割超像素(superpixels)来形成具有潜在目标的区域。

        具体来说,Selective Search算法的实现步骤如下:

                1. 超像素分割: 首先,图像被分割成许多紧密相连的区域,这些区域称为超像素 (superpixels)。 超像素分割可以使用各种算法,如基于图的分割(例如图割算法) 或基于像素相似性的分割(例如SLIC算法)或者每个不同颜色的区 域代表一个超像素 。

                2. 相似性合并: 算法使用不同的合并策略来将这些超像素合并成更大的区域。这些 合并策略通常考虑颜色、纹理、大小和形状等特征的相似性。 合并策略包括贪婪合并、聚类合并、多尺度合并等,以便在不同尺 度上捕获不同类型和大小的目标。

                3. 生成候选区域:最终,Selective Search算法生成2000个左右的候选区域,每个区 域都有不同的形状、大小和位置。 这些候选区域被认为是图像中可能包含目标的位置,它们接下来会 被送入CNN进行特征提取和分类,以确定它们是否包含真正的目 标,并且进一步被用来进行目标检测。

         Selective Search算法的核心思想是通过多尺度和多种合并策略,快速生成 丰富的候选区域,覆盖图像中各种潜在目标的可能位置。

2.2、特征提取

        将2000个候选区域缩放到227*227的像素中,接着将缩放后的候选区域被 送入一个预训练的卷积神经网络(AlexNet)。

        最终得到一个2000*4096的大矩阵

2.3、分类

        使用支持向量机(SVM)对每个候选区域进行分类,具体过程为:

1. 将2000*4096特征与20个SVM组成的权重矩阵(4096*20)相乘,得 到2000*20的矩阵;

2. 获取2000*20维矩阵表示每个建议框是某个目标类别的得分;

3. 对上述2000*20维矩阵中每一列,即每一类进行非极大值抑制剔除重叠 建议框,得到该列即该类中得分最高的一些建议框。

        每个目标类别通常对应一个独立的支持向量机(SVM)分类器。 这意味着如果有N个不同的目标类别,就会训练和使用N个单独的SVM 分类器来对候选区域进行分类。Pascal VOC有20类,所以是20。

        但是在例如Pascal VOC中微调时,实际上有21类,因为还有一类是背景, 即负样本。

         负样本是根据IoU选择的,如果预选框和GT BOX的IOU小于一定的阈 值,那么就会被认为是负样本。

负样本的作用

1、负样本在训练分类器时起到了重要作用,帮助模型学习如何区分目 标物体与非目标物体。分类器需要通过负样本学习背景的特征,以便 在推理阶段准确地将目标区域与背景区分开来。

2、训练过程中,平衡的正负样本比例有助于避免模型过度偏向负样本 而导致的分类器不平衡问题,从而提高模型的泛化能力和准确性。

2.4、回归 

        使用回归器对每个候选区域的边界框进行微调,以更准确地定位物体,即 实际上SS的候选框(2000个)的位置也就是NMS处理后剩余的建议框(并 没有2000个了)的位置并不是那么准确,所以需要进行调整。

具体步骤

        1. 将所有的建议框和GT BOX进行IoU计算,小于某个阈值的直接删掉。

        2. 使用20个回归器对4096维的数据进行计算(Pascal VOC是21个)。

        这些公式用于将网络预测的相对变化(偏移量)转换为绝对的边界框坐标 和尺寸。

三、R-CNN缺点

1. 预测速度比较慢:CPU上53秒/张,GPU上13秒/张。

2. 需要的内存较大:一个候选框4096维,一张图2000个候选框,如果有 1000张图,如果每个数是float32浮点型, 即每个数占用4字节(32 位) ,每个候选框占用内存为2096*4=16384个字节,换算成MB就是 16384/(1024^2)=0.015625MB, 那1张图所占的内存为0.015625*2000=31.25MB, 1000张图所占的内存为31.25*1000=31.25GB。

四、R-CNN过程总结

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

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

相关文章

极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道

5月28日下午,锐捷网络在京举办以“光,本该如此‘简单’”为主题的发布会,正式发布极简以太彩光网络解决方案4.0。作为“彩光”方案的全新进化版本,极简以太彩光4.0从用户需求出发,聚焦场景洞察,开启了一场从底层基因出发的极简革命,通过架构、部署、运维等多维度的创新升级,以强…

国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航

在电动车、储能电站、不间断电源(UPS)等设备中,蓄电池作为关键的储能单元,其运行状态直接关系到设备的稳定性和使用寿命。而准确监测蓄电池的负载情况,是保障其安全、高效运行的关键。霍尔电流传感器 AH811凭借独特的技…

TortoiseSVN账号切换

SVN登录配置及账号切换 本文主要为了解答svn客户端如何进行账号登录及切换不同权限账号的方式。 一、环境准备与客户端安装 安装TortoiseSVN客户端 ​​下载地址​​:TortoiseSVN官网 ​​安装步骤​​: 双击安装包,按向导完成安装后&#x…

2025年05月28日Github流行趋势

项目名称:agenticSeek 项目地址url:https://github.com/Fosowl/agenticSeek项目语言:Python历史star数:10352今日star数:2444项目维护者:Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

篇章五 数据结构——链表(一)

目录 1.ArrayList的缺陷 2. 链表 2.1 链表的概念及结构 2.2 链表结构 1. 单向或者双向 2.带头或者不带头 3.循环或者非循环 2.3 链表的实现 1.完整代码 2.图解 3.显示方法 4.链表大小 5. 链表是否存在 key 值 6.头插法 7.尾插法 8.中间插入 9.删除key值节点 10.…

一文清晰理解目标检测指标计算

一、核心概念 1.交并比IoU 预测边界框与真实边界框区域的重叠比,取值范围为[0,1] 设预测边界框为,真实边界框为 公式: IoU计算为两个边界框交集面积与并集面积之比,图示如下 IoU值越高,表示预测边界框与真实边界框的对…

Artificial Analysis2025年Q1人工智能发展六大趋势总结

2025年第一季度人工智能发展六大趋势总结 ——基于《Artificial Analysis 2025年Q1人工智能报告》 趋势一:AI持续进步,竞争格局白热化 前沿模型竞争加剧:OpenAI凭借“o4-mini(高智能版)”保持领先,但谷歌&…

高效管理 Python 项目的 UV 工具指南

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…

初识vue3(vue简介,环境配置,setup语法糖)

一,前言 今天学习vue3 二,vue简介及如何创建vue工程 Vue 3 简介 Vue.js(读音 /vjuː/,类似 “view”)是一款流行的渐进式 JavaScript 框架,用于构建用户界面。Vue 3 是其第三代主要版本,于 …

LeetCode-链表操作题目

虚拟头指针,在当前head的前面建立一个虚拟头指针,然后哪怕当前的head的val等于提供的val也能进行统一操作 203移除链表元素简单题 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(…

【ARM】MDK浏览信息的生成对于构建时间的影响

1、 文档目标 用于了解MDK的代码浏览信息的生成对于工程的构建是否会产生影响。 2、 问题场景 客户在MDK中使用Compiler 5对于工程进行构建过程中发现,对于是否产生浏览信息会对于构建时间产生一定的影响。在Options中Output栏中勾选了Browse Information后&#…

py爬虫的话,selenium是不是能完全取代requests?

selenium适合动态网页抓取,因为它可以控制浏览器去点击、加载网页,requests则比较适合静态网页采集,它非常轻量化速度快,没有浏览器开销,占用资源少。当然如果不考虑资源占用和速度,selenium是可以替代requ…

docker B站学习

镜像是一个只读的模板,用来创建容器 容器是docker的运行实例,提供了独立可移植的环境 https://www.bilibili.com/video/BV11L411g7U1?spm_id_from333.788.videopod.episodes&vd_sourcee60c804914459274157197c4388a4d2f&p3 目录挂载 尚硅谷doc…

SpringBoot高校宿舍信息管理系统小程序

概述 基于SpringBoot的高校宿舍信息管理系统小程序项目,这是一款非常适合高校使用的信息化管理工具。该系统包含了完整的宿舍管理功能模块,采用主流技术栈开发,代码结构清晰,非常适合学习和二次开发。 主要内容 这个宿舍管理系…

ICASSP2025丨融合语音停顿信息与语言模型的阿尔兹海默病检测

阿尔兹海默病(Alzheimers Disease, AD)是一种以认知能力下降和记忆丧失为特征的渐进性神经退行性疾病,及早发现对于其干预和治疗至关重要。近期,清华大学语音与音频技术实验室(SATLab)提出了一种将停顿信息…

LabVIEW杂草识别与精准喷洒

基于LabVIEW构建了一套集成机器视觉、智能决策与精准控制的农业杂草识别系统。通过高分辨率视觉传感器采集作物图像,利用 LabVIEW 的 NI Vision 模块实现图像颜色匹配与特征分析,结合 Arduino 兼容的工业级控制硬件,实现杂草定位与除草剂精准…

学习日记-day20-6.1

完成目标&#xff1a; 知识点&#xff1a; 1.集合_Collections集合工具类 方法:static <T> boolean addAll(Collection<? super T> c, T... elements)->批量添加元素 static void shuffle(List<?> list) ->将集合中的元素顺序打乱static <T>…

【音视频】 FFmpeg 解码H265

一、概述 实现了使用FFmpeg读取对应H265文件&#xff0c;并且保存为对应的yuv文件 二、实现流程 读取文件 将H265/H264文件放在build路径下&#xff0c;然后指定输出为yuv格式 在main函数中读取外部参数 if (argc < 2){fprintf(stderr, "Usage: %s <input file&…

软件测试|FIT故障注入测试工具——ISO 26262合规下的智能汽车安全验证引擎

FIT&#xff08;Fault Injection Tester&#xff09;是SURESOFT专为汽车电子与工业控制设计的自动化故障注入测试工具​&#xff0c;基于ISO 26262等国际安全标准开发&#xff0c;旨在解决传统测试中效率低、成本高、安全隐患难以复现的问题&#xff0c;其核心功能包括&#xf…

3D拟合测量水杯半径

1&#xff0c;目的。 测量水杯的半径 如图所示&#xff1a; 2&#xff0c;原理。 对 3D 点云对象 进行圆柱体拟合&#xff0c;获取拟合后的半径。 3&#xff0c;注意事项。 在Halcon中使用fit_primitives_object_model_3d进行圆柱体拟合时&#xff0c;输出的primitive_para…