【深度学习】目标检测神经网络1/2

目标检测神经网络

概念

模型分类有三种:图像分类即输出图像类别和概率;单目标检测,输出目标的概率和位置;多目标检测,同时输出多个目标的分类、位置、概率。

位置检测分为两种形式:一种是矩形框;另一种是关键点。

交并比,Intersection Over Union,模型推理的矩形框与真值矩形框的重叠度,用于判断结果精度。

非极大值抑制:从同一目标上的多个矩形框筛选最好的一个。

算法流程:

  1. 剔除概率小于阈值的框
  2. 从剩余的框中选择概率最大的
  3. 剔除与前框IOU大于阈值的框,重复步骤2,直到唯一

NMS iteratively removes lower scoring boxes which have an IoU greater than iou_threshold with another (higher scoring) box.

典型方法介绍

从流程上可分为一步、两步检测方法两大类,前者以YOLO系列等模型为代表,后者即RCNN系列,YOLO的主要流程:

  1. 将图像划分GxG个网格
  2. 对每一个网格图像做CNN预测
  3. 对重叠的框运行NMS

本篇主要介绍RCNN系列。

Region-based CNN系列

RCNN系列是典型的两步检测:先找ROI,再对ROI识别。
用颜色、纹理(灰度)直方图判断两个候选区域是否相近。
图像尺度是有限的,所以用随机选区域做目标检测是可行的。
用CNN对每个候选框提取固定长度特征向量。
将不同大小的候选框做缩放,RCNN论文采用各项异性缩放、padding=16的精度最好。
RCNN基本流程:
a. 提取2k个候选区域
b. 合并候选区域
c. 对区域做填充、缩放,提取卷积特征
d. 用各类各自的SVM判断是否为某一类型。为什么用SVM而不是分类网络,负样本的定义是与GT的IOU<0.3的Bbox,数据量较少,标注比较宽松,CNN容易过拟合。
e. 优化BBox

对上千个ROI做CNN推理,计算量大,无法满足效率要求。

Fast-RCNN

用整张图像的CNN推理解决RCNN的低效。
结构:
图像 > CNN(Conv + Max pooling) > feature map
region proposal + feature map > ROI pooling > feature vector > 2 sibling FC layers
其中,
FC > softmax > cls
FC > bbox (4 values)

ROI pooling 是max pooling,FastRCNN论文把一个ROI划分为7*7个子窗口,每个子窗口做max-pooling,输出特征向量。

示例,设图像尺寸为40x40,CNN提取的featureX的尺寸为4x4,设图像上ROI的左上、右下点坐标为(0,0,20,20)、(0,10,30,30),则应从X[0:3,0:3]和[1:4,0:4]做max-pooling。

Faster-RCNN

使用Region Proposal Network替换selective search,实现region proposal,模型其他结构不变。

Region Proposal Network

“Region Proposal algorithms hypothesize object locations. An RPN is a fully convolutional network that simultaneously predicts object bounds and objectness scores at each position. On top of these convolutional features, we construct an RPN by adding a few additional convolutional layers
that simultaneously regress region bounds and objectness scores at each location on a regular grid.”

对feature map做卷积,获取一个新的通道为c的feature map,每个像素生成一系列不同尺寸和宽高比的anchor box,各个box中心像素的长度为c的特征向量推理objectness,回归其坐标,采用非极大值抑制合并重叠的目标,输出目标候选框进入ROI pooling。

代码

原版

rbgirshick使用caffe框架,feature map的通道维数512,经过RPN的第一层卷积,平行过分类层和坐标回归层;分类时HW不变,通道数变为18,指示9个anchor的objectness,分为bg与fg;回归坐标时HW不变,通道数变为36,即9个anchor的坐标。在RoI-Head网络中,将RoI区域对应的feature map进行截取,而后利用RoI pooling层输出7*7大小的feature map。

mmdetection

TwoStageDetector衍生Fast-RCNN
残差计算在函数forward_train()

Related Works

Object Proposal

As external modules independent of detectors.
Grouping super-pixels: Selective Search
Sliding windows: EdgeBoxes

Deep Networks for Object Detection

OverFeat uses a fully-connected layer to predict bounding-box coordinates. The FC is turned into a convolutional layer for multiple class-specific objects.
MultiBox generates region proposals with a network whose last FC predicts multiple class-agnostic boxes.
We discuss OverFeat and MultiBox in more depth later in context with our method.

参考:

  1. RCNN论文
  2. Fast-RCNN论文
  3. Faster-RCNN论文
  4. rbgirshick的Fast-RCNN

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

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

相关文章

如何分辨Mac设备X86或ARM

在终端中输入如下命令可以获取到当前 Mac 设备是 X86 还是 ARM 类型 uname -a 以上便是此次分享的全部内容&#xff0c;希望能对大家有所帮助!

Vue响应式内容丢失处理

对数组和对象进行不当的修改会使Vue的对象丢失响应式&#xff0c;这时可以直接console.log丢失的对象&#xff0c;看是否有getter和setter 对于数组和对象&#xff0c;只有使用 Vue 提供的一些方法&#xff08;如 push()、pop()、splice()、set() 等&#xff09;进行修改才会触…

linux循环之for循环

1.循环介绍 循环就是迭代(重复)一些命令的代码块&#xff0c;如果循环控制条件不满足的话&#xff0c;就结束循环 2.for循环语法 for 循环控制条件 do commands done #当“循环控制条件”不满足条件&#xff0c;结束for循环 3.for循环样例 [rootkibana ~]# cat for-1.…

css深度选择器 /deep/ 在89版本后就失效了

css深度选择器 /deep/ 在89版本后就失效了 前言&#xff1a;在高版本中&#xff08;89版本以后&#xff09;css使用/deep/样式就失效了 原因&#xff1a;css深度选择器 /deep/ 在89版本后就不支持了 解决办法&#xff1a;使用scss预编译 <style lang"scss" sc…

DxO PureRAW:赋予RAW图像生命,打造非凡视觉体验 mac/win版

DxO PureRAW 是一款专为RAW图像处理而设计的软件&#xff0c;旨在帮助摄影师充分利用RAW格式的优势&#xff0c;实现更加纯净、细腻的图像效果。该软件凭借其强大的功能和易于使用的界面&#xff0c;成为了RAW图像处理领域的佼佼者。 DxO PureRAW 软件获取 首先&#xff0c;Dx…

几种电脑提示mfc140.dll丢失的解决方法,以及如何预防mfc140.dll丢失

mfc140.dll真是一个超级关键的动态链接库文件&#xff01;一旦这个文件不翼而飞&#xff0c;可能会导致一些程序无法顺利运行&#xff0c;甚至给系统带来麻烦。但别担心&#xff01;遇到mfc140.dll文件丢失的情况&#xff0c;我们有一堆应对措施可以立马施行&#xff0c;确保问…

计算机网络-物理层

物理层 基本概念传输媒体信道复用频分复用&#xff08;FDM&#xff09;时分复用&#xff08;TDM&#xff09;波分复用&#xff08;WDM&#xff09;码分复用&#xff08;CDM&#xff09; 宽带接入技术ADSL技术光纤同轴混合网(HFC网)FTTx技术 数据通信常识 上次我们已经大致学习了…

探秘Netty:打造高性能网络通信利器

目录 Netty真强大啊&#xff01;TCP拆包与粘包长连接握手认证心跳机制断线重连机制消息重发机制读写超时机制离线消息线程池结语感谢您的阅读&#xff01; Netty真强大啊&#xff01; Netty是一个基于Java的异步事件驱动的网络应用框架&#xff0c;被广泛应用于高性能、高可靠…

06 - 镜像管理

1 了解镜像 Docker镜像是一个特殊的文件系统&#xff0c;除了提供容器运行时所需的程序、库、资源、配置等文件外&#xff0c;还包含了一些为运行时准备的一些配置参数&#xff08;如匿名卷、环境变量、用户等&#xff09;。 但注意&#xff0c; 镜像不包含任何动态数据&#…

【探索AI】二十五 深度学习之第8周:深度学习项目实战

项目名称&#xff1a;基于深度学习的图像分类系统 一、项目背景 随着大数据和人工智能技术的快速发展&#xff0c;图像分类技术在各个领域得到了广泛应用&#xff0c;如安防监控、医疗诊断、自动驾驶等。本项目旨在利用深度学习技术构建一个高效的图像分类系统&#xff0c;实…

C++高级面试题:请解释 C++ 中的递归模板(Recursive Templates)

请解释 C 中的递归模板&#xff08;Recursive Templates&#xff09; 递归模板&#xff08;Recursive Templates&#xff09;是一种使用模板递归定义的技术&#xff0c;在编译时生成具有不同结构的代码。这种技术通常用于处理数据结构或实现算法&#xff0c;其中需要对数据进行…

Mysql数据迁移3个快速方法与数据库恢复

目录 Mysql数据迁移3个快速方法与数据库恢复 方法1 选中表复制粘贴 方法2 克隆 方法3 DTS迁移【推荐】 数据库误删恢复方法 Mysql数据迁移3个快速方法与数据库恢复 前言&#xff1a;日常开发中&#xff0c;项目测试发布到生产或者复制多一套程序出来&#xff0c;经常免不…

QT C++实践| 连接数据库的登录界面实现| 附源码

前言 在之前的两篇博客中QT C实战&#xff1a;实现用户登录页面及多个界面跳转、QT C实践|超详细数据库的连接和增删改查操作|附源码分别详细讲解了&#xff1a;登录界面的制作&#xff08;UI布局、页面跳转、登录逻辑等&#xff09;、QT如何连接Mysql数据库&#xff0c;并进行…

node的概念

node和浏览器有什么区别和联系&#xff0c;及node进行服务端开发的本质 Node.js和浏览器在JavaScript运行环境方面存在一些区别和联系。 区别&#xff1a; 运行环境&#xff1a;Node.js是一个服务器端JavaScript运行环境&#xff0c;而浏览器是一个客户端JavaScript运行环境…

EPSON RA8000CE (RTC模块)压电侠

RA8000CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块。它包括各种功能&#xff0c;如具有闰年校正的秒到年时钟/日历&#xff0c;时间警报&#xff0c;唤醒计时器&#xff0c;时间更新中断&#xff0c;时钟输出和时间戳功能&#xff0c;可以在外部或内部事件…

C++--调整数组顺序使奇数位于偶数前面

题目&#xff1a; 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有的奇数位于数组的前半部分&#xff0c;所有的偶数位于数组的后半部分&#xff0c;并保证奇数和奇数&#xff0c;偶数和偶数之间的相对位置不变。 方法一&#xff1a; …

2024年最新苹果cms MXoneV10 10.8版本模板独家

2024年最新苹果cms MXoneV10 10.8版本模板独家 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88891237 更多资源下载&#xff1a;关注我。

python+django_vue旅游酒店预订出行订票系统pycharm项目lw

a.由于对管理信息方面的内容了解尚浅且没有足够的经验&#xff0c;因而很难对数据庞大的线上旅行信息管理系统建立完善的数据库。 b.线上旅行信息管理系统拥有很大的信息量&#xff0c;其中包括数据库的前期开发和后期更新&#xff0c;因此对数据库的安全性&#xff0c;一致性和…

Flinksql实时计算——group by key和 group by key 带窗口聚合有什么不同

在 Flink SQL 中,GROUP BY key 和 GROUP BY key 带窗口聚合的主要区别在于它们如何处理数据的时间维度和计算结果的粒度。 简单的 GROUP BY key:当使用简单的 GROUP BY 对 key 进行聚合时,你会得到一个按指定 key 分组的静态聚合结果。这个聚合是基于 key 的所有历史数据进行…