当前位置: 首页 > ai >正文

目标检测我来惹1 R-CNN

目标检测算法:

识别图像中有哪些物体和位置

目标检测算法原理:

 记住算法的识别流程、解决问题用到的关键技术

目标检测算法分类:

两阶段:先区域推荐ROI,再目标分类

region proposal+CNN提取分类的目标检测框架

RCNN FASTER RCNN

端到端:一个网络,输入到输出:类别加位置

yolo SSD

目标检测的任务:

分类原理:得到每个类别的概率,取最大概率

CNN--卷积神经网络

输入层+卷积、激活、池化+全连接层+输出

激活函数:relu、输出:softmax得出概率

损失函数:交叉熵损失函数--衡量

图片中只有一个目标:分类+定位

分类评估指标:

指标说明
分类准确率(Accuracy)正确分类的目标数 / 所有预测目标数(仅当类别预测数量和真实相同且位置匹配时才有意义)
Precision(精确率)预测为该类中有多少是对的
Recall(召回率)实际该类中你检测到了多少

定位评估指标:

指标说明
IoU(Intersection over Union)预测框和真实框的重合度

目标框:bounding box

名称含义
Ground Truth bounding box人工标注框真实值
Predicted bounding box预测标注框预测值
IoU交并比真实框和预测框的重叠程度

交集/并集

重合面积除以两个框的所有面积

 

分类+定位的思路:

让网络多输出一个全连接层

1、类别概率值 softmax--分类损失函数:交叉熵损失函数

2、输出四个位置坐标-回归损失:L2 loss

位置坐标处理:每个位置除以图像的像素值--归一化

任务阶段是否需要归一化?
训练前准备数据✅ 建议:提前归一化 GT 框(输入 label 时)
模型输出✅ 输出的是 [0, 1] 范围的预测值(便于训练)

多个目标的任务!--目标检测

R-CNN基础算法

region proposal 候选区域方法

以神经网络为基础的两阶段 目标检测模型。

步骤(测试过程)

1.找出图像中可能存在的候选区域ROI,得出2000个候选区域

选择性搜索SS筛选区域

2.统一图片大小,输入CNN网络提取特征,得出2000个特征向量

使用AlexNet网络,统一候选区域大小227*227warped region

统一大小操作:crop和wrap,减少图像的变形

CNN网络提取出的特征向量保存在磁盘中

对 2000 个候选框,每个区域提一个 4096 维的特征 → 形成一个 2000 × 4096 的特征矩阵

3.20个SVM进行分类,得到2000*20的得分矩阵

SVM特征向量训练分类器:二分类

20代表数据集中需要检测20个类别,

每个分类器判断2000个候选区域的特征向量

第一个分类器判断:是猫?不是?那是背景

第二个分类器:是狗?不是?

输出2000 × 20 的得分矩阵(每一行是该区域对每个类别的置信度)

4.进行NMS非极大值抑制,提出候选框

NMS:筛选候选框,得到非重叠、高置信度的目标框

比较IoU >0.5删去

5.修正候选区域,对bbox回归微调

回归过程:用于修正筛选的候选区域,使它回归ground truth

线性回归:特征值是候选区域,目标值是对应的GT。

建立回归方程学习参数

 训练过程:

预训练+微调

🔹 预训练阶段:

  • ImageNet 数据集 训练 CNN 模型(如 AlexNet、ResNet)

  • 有一个现有的模型和参数

🔹 微调阶段:

  • 替换最后一层输出(从1000类 → 目标检测的20类)

  • 使用 R-CNN 的候选区域图像、正负样本标签输入到model1中

  • 再继续训练 CNN(特别是全连接层部分)

🔹 训练SVM特征向量分类器+bbox regressor

每个类别训练一个分类器

表现:在voc2007上准确度66%

缺点:训练阶段多;训练耗时;

总结:

http://www.xdnf.cn/news/10368.html

相关文章:

  • 嵌入式学习笔记 - FreeRTOS v9.0.0 与v10.0.1不同版本占用资源对比
  • 2025——》NumPy中的np.random.randn使用/在什么场景下适合使用np.random.randn?NumPy标准正态分布生成全解析
  • [SAP] 矩阵复制(Matrix Copy)
  • C#里与嵌入式系统W5500网络通讯(4)
  • Python Day39 学习(复习日志Day4)
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二十九) -> 开发云数据库
  • [ElasticSearch] RestAPI
  • 数据存储与运算
  • 多端学习方案起笔
  • Linux基础 文件描述符,重定向及缓冲区理解
  • MCU如何从向量表到中断服务
  • Goreplay最新版本的安装和简单使用
  • asyncpg - Python异步PostgreSQL客户端库
  • 4、获取树莓派温度
  • Jenkins:自动化流水线的基石,开启 DevOps 新时代
  • 【Linux网络编程】数据链路层
  • 6个月Python学习计划 Day 11 - 列表推导式、内置函数进阶、模块封装实战
  • 让编程更智能高效:探索Claude Code工具的强大功能
  • Qt源码分析:QDataStream
  • 多模态大语言模型arxiv论文略读(103)
  • 功能丰富的PDF处理免费软件推荐
  • 设计模式——命令设计模式(行为型)
  • while循环判断数字位数
  • Axure组件即拖即用:垂直折叠菜单(动态展开/收回交互)
  • day16 leetcode-hot100-31(链表10)
  • DAY40 训练和测试
  • Vue 核心技术与实战智慧商城项目Day08-10
  • 麦克风和电脑内播放声音实时识别转文字软件FunASR整合包V5下载
  • 关于langchain使用API加载model的方式
  • Java并发编程实战 Day 3:volatile关键字与内存可见性