深度学习笔记之使用Faster-Rcnn进行目标检测 (原理篇)

简介:

Object Detection发展介绍

  Faster rcnn是用来解决计算机视觉(CV)领域中Object Detection的问题的。经典的解决方案是使用: SS(selective search)产生proposal,之后使用像SVM之类的classifier进行分类,得到所有可能的目标. 
使用SS的一个重要的弊端就是:特别耗时,而且使用像传统的SVM之类的浅层分类器,效果不佳。 
鉴于神经网络(NN)的强大的feature extraction特征,可以将目标检测的任务放到NN上面来做,使用这一思想的目标检测的代表是: 
RCNN Fast-RCNNFaster-RCNN YOLO等 

  

  简单点说就是:

  • RCNN 解决的是,“为什么不用CNN做detection呢?”
  • Fast-RCNN 解决的是,“为什么不一起输出bounding box和label呢?”
  • Faster-RCNN 解决的是,“为什么还要用selective search呢?”

 

 

 

 

Faster-Rcnn原理简介

  鉴于之上的分析,想要在时间上有所突破就要在如何更快的产生proposal上做工夫。 
Faster使用NN来做region proposal,在Fast-rcnn的基础上使用共享卷积层的方式。作者提出,卷积后的特征图同样也是可以用来生成 region proposals 的。通过增加两个卷积层来实现Region Proposal Networks (RPNs) , 一个用来将每个特征图 的位置编码成一个向量,另一个则是对每一个位置输出一个 objectness score 和 regressed bounds for k region proposals.

            Faster model

 

 

 

 

RPN

  RPN的作用有以下几个:

(1) 输出proposal的位置(坐标)和score 
(2) 将不同scale和ratio的proposal映射为低维的feature vector 
(3) 输出是否是前景的classification和进行位置的regression

 

 

  这里论文提到了一个叫做Anchor的概念,作者给出的定义是:

The k proposals are parameterized relative to k reference boxes, which we call anchors

  

  我的理解是:不同ratio和scale的box集合就是anchor, 对最后一层卷积生成的feature map将其分为n*n的区域,进行不同ratio和scale的采样.

                RPN

 

 

 

 

RPN的cls和reg

  RPN输出对于某个proposal,其是属于前景或者背景的概率(0 or 1),具体的标准论文里给出的是:

  • 和所有的ground-truth的IoU(Intersection-over-union)小于0.3视为negative(背景)
  • 和任意的ground-truth的IoU大于0.7视为positive(前景)
  • 不属于以上两种情况的proposal直接丢掉,不进行训练使用

 

 

  对于regression,作用是进行proposal位置的修正:

  • 学习k个bounding-box-regressors
  • 每个regresso负责一个scale和ratio的proposal,k个regressor之间不共享权值

 

 

RPN Training

  两种训练方式: joint trainingalternating training 
两种训练的方式都是在预先训练好的model上进行fine-tunning,比如使用VGG16、ZF等,对于新加的layer初始化使用random initiation,使用SGD和BP在caffe上进行训练

 

 

alternating training

  首先训练RPN, 之后使用RPN产生的proposal来训练Fast-RCNN, 使用被Fast-RCNN tuned的网络初始化RPN,如此交替进行

 

joint training

  首先产生region proposal,之后直接使用产生的proposal训练Faster-RCNN,对于BP过程,共享的层需要combine RPN loss和Faster-RCNN los

 

 

Result

  结果自然不用说,肯定是state-of-art,大家自己感受下吧

result



本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6973201.html,如需转载请自行联系原作者

相关文章
|
25天前
|
机器学习/深度学习 监控 自动驾驶
深度学习之2D目标检测
2D目标检测是深度学习中的一个关键任务,旨在识别图像中的目标对象,并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。以下是对深度学习中2D目标检测的详细介绍,包括其基本概念、主要方法、常见模型、应用场景、优势和挑战。
22 4
|
5天前
|
机器学习/深度学习 自然语言处理 搜索推荐
深度学习中的自注意力机制:原理与应用
在深度学习领域,自注意力机制(Self-Attention Mechanism)已经成为一种强大的工具,它允许模型在处理序列数据时更加高效和灵活。本文将深入探讨自注意力机制的工作原理、数学基础以及在不同应用场景下的表现。我们将通过具体案例分析,展示自注意力如何提升神经网络对长距离依赖的捕捉能力,以及它在自然语言处理(NLP)、计算机视觉(CV)等领域的应用成效。
11 0
|
1月前
|
机器学习/深度学习 传感器 算法
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
|
1月前
|
机器学习/深度学习 存储 算法
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
|
1月前
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
1月前
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
1月前
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的高压输电线绝缘子缺陷智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
基于YOLOv8深度学习的高压输电线绝缘子缺陷智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
|
1月前
|
机器学习/深度学习 人工智能 安全
实战 | 基于YOLOv8深度学习的反光衣检测与预警系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、人工智能
实战 | 基于YOLOv8深度学习的反光衣检测与预警系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、人工智能
|
1月前
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的脑肿瘤智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、智慧医疗(2)
基于YOLOv8深度学习的脑肿瘤智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、智慧医疗
|
1月前
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的脑肿瘤智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、智慧医疗(1)
基于YOLOv8深度学习的脑肿瘤智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、智慧医疗