Objection Detection 手记

简介: 本文介绍了四个目标检测的经典算法:Faster R-CNN、FPN、SSD和RetinaNet。Faster R-CNN是两阶段算法,包括CNN特征提取、RPN(候选框生成)和RoI Pooling+Classifier。FPN通过高层到低层的信息传递增强特征金字塔,提高小物体检测性能。SSD是一阶段算法,直接在多尺度特征图上预测默认边界框。RetinaNet采用FPN结构和Focal Loss解决类别不平衡问题,优化one-stage检测。5月更文挑战第8天

Objection Detection 手记

目标检测实现图像中目标的分类任务和bounding box位置框检测任务。

md-2020-10-05-21-34-13.png

本文分享了整理的目标检测经典算法的关键步骤和实现需要注意的地方。包括

  • Faster R-CNN
  • FPN
  • SSD
  • RetinaNet

    1. Faster R-CNN

    Faster R-CNN是经典的two-stage的目标检测算法。

md-2020-10-05-21-37-15.png

Faster R-CNN是一个看似是end-to-end的过程, 由3个部分组成

  • 特征提取层CNN: 通常是vgg16, resnet也是可以
  • RPN:region proposal network, 候选框生成
  • RoI Pooling + Classifier, 分类和bbox回归

md-2020-10-05-21-46-54.png

1.1 特征提取层CNN

  • 可以看出对于输入图像PxQ, 需要缩放至固定大小MxN,然后将MxN图像送入网络
  • CNN的conv层需要保持feature map大小为MxN,只在pooling层进行下采样,这样保证可以最后一个conv层的feature map的每个点可以完美映射到原图中(M/16,N/16)

1.2 RPN: 候选框生成

RPN网络是feature Map后加一个3x3 filter(vgg)的卷积层,在输出的512的feature Map(原文是256,主要看特征提取feature Map的大小),分别加一个分类层和bbox回归层。

md-2020-10-05-21-53-46.png

  • anchor boxes:3x3 filter(vgg)的卷积层后的每一个点可以映射到原图中的k种不同尺度类型box候选框。 默认是3个尺度:128/156/512, 3个长宽比:1:1/1:2/2:1, 9个anchor boxes, k=9;以vgg(512)为例, 在原图会生成约4600个候选框。不同的任务这个可以进行调整修改
  • 分类: 这里采用是1x1的卷积,输出是k个不同尺度类型的二分类结果(前景和背景)
  • box位置回归:同样是1x1的卷积,输出是k个不同尺度类型的位置(x,y, w, h)

需要注意的是3x3卷积的输出也要保证输出feature map channels大小和特征提取的feature map channels大小一致,这样才可以映射会原图。

关于训练:

  • 对原图进行类别和位置打标,得到k中不同尺度的类别和位置信息。
  • 其中前景和背景类别,通过计算与groud truth的bbox的iou,通过阈值来判断前景和背景
  • 位置信息记录的是偏移信息
  • 因为背景和前景类型不平衡,论文采用随机采用256个样本(前景:背景=1:1)进入RPN训练

1.3 RoI Pooling + Classifier

RPN之后得到候选的框,需要进行refine;

md-2020-10-05-22-53-21.png

  • RoI pooling: RPN之后得到的候选框,进行挑选后(阈值和极大值抑制操作等)roi区域,resize到pooling size后,形成固定程度的特征
  • 之后若干dense层后接一个分类层和bbox回归层

1.4 小结

faster rcnn 之所以是两阶段的,是因为先要进程RPN的网络,然后RPN的网络的结果在进入最终的ROI pooling的分类回归层。训练的每一个batch的都要经过两个网络,特别是RPN之后需要对batch进行预测,然后进行调整roi等操作。

https://github.com/moyiliyi/keras-faster-rcnn/blob/master/train_frcnn.py

2. FPN

FPN从高层携带信息传给低层,再分层预测,本文作者的创新之处就在于既使用了特征金字塔,又搞了分层预测。

md-2020-10-05-23-02-16.png

高层到低层的融合,在feature map的叠加,为了保证feature map大小一致, 高层需要上采样,同时低层进行一次1x1 卷积后相加。

md-2020-10-05-23-09-43.png

FPN在faster R-CNN的应用,在特征金字塔上的每个特征进行单一尺度候选框选择。 这样也可以实现不同尺度的候选框的选择,同时对小物体的检测有一定的鲁棒性,因为有在低层特征进行候选框选择。

md-2020-10-05-23-45-50.png
md-2020-10-05-23-52-47.png

3. SSD

SSD的核心是在不同尺度的特征特征图上采用卷积核来预测一系Default Bounding Boxes的类别、坐标偏移

md-2020-10-05-23-42-38.png
md-2020-10-06-00-39-56.png
md-2020-10-06-00-32-52.png

4. RetinaNet

RetinaNet主要是为了Focal loss设计的one-stage的目标检测结构。总体结构上还是采用FPN的样式,只是再各个尺度上接了分类和bbox回归的子网络,注意两个子网络是独立的,不共享参数。

md-2020-10-06-00-00-46.png

备注下,focal loss 主要是在交叉熵loss中加了系数控制,使得网络能更加关注困难样本。针对目标检测任务而言,背景样本非常多,前景样本相对少; 交叉熵loss在背景样本的loss往往不会为0,大量非0 loss叠加导致总体loss也会很大,这样总体loss中的前景样本的比重就变得微弱,梯度下降不会太关注前景样本的。focal loss 使得简单样本分对情况下,loss接近于0,总体loss更加关注那些分错的样本。

md-2020-10-06-00-12-12.png

那么关键是RetinaNet如何进行候选框选择呢?
p3到p7,对应的尺度32到512, 和原来FPN不同的p3到p5对应的是c3到c5, p6和p7分别是c5再两次下采样的得到的。
md-2020-10-06-00-19-15.png

目录
相关文章
|
2月前
|
机器学习/深度学习 编解码 算法
论文精度笔记(二):《Deep Learning based Face Liveness Detection in Videos 》
论文提出了基于深度学习的面部欺骗检测技术,使用LRF-ELM和CNN两种模型,在NUAA和CASIA数据库上进行实验,发现LRF-ELM在检测活体面部方面更为准确。
27 1
论文精度笔记(二):《Deep Learning based Face Liveness Detection in Videos 》
|
7月前
|
算法 BI 计算机视觉
[Initial Image Segmentation Generator]论文实现:Efficient Graph-Based Image Segmentation
[Initial Image Segmentation Generator]论文实现:Efficient Graph-Based Image Segmentation
63 1
|
机器学习/深度学习 算法 计算机视觉
NeRF-Pose: A First-Reconstruct-Then-Regress Approach for Weakly-supervised 6D Object Pose Estimation
NeRF-Pose: A First-Reconstruct-Then-Regress Approach for Weakly-supervised 6D Object Pose Estimation
265 0
|
机器学习/深度学习 数据挖掘
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
57 1
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
|
机器学习/深度学习 编解码 数据可视化
Speech Emotion Recognition With Local-Global aware Deep Representation Learning论文解读
语音情感识别(SER)通过从语音信号中推断人的情绪和情感状态,在改善人与机器之间的交互方面发挥着至关重要的作用。尽管最近的工作主要集中于从手工制作的特征中挖掘时空信息,但我们探索如何从动态时间尺度中建模语音情绪的时间模式。
144 0
|
机器学习/深度学习 算法 计算机视觉
【计算机视觉 | 目标检测】Open-vocabulary Object Detection via Vision and Language Knowledge Distillation
在这项工作中,我们考虑借用预训练的开放词汇分类模型中的知识来实现open vocabulary检测。
|
机器学习/深度学习 算法 计算机视觉
Automatic Detection of Welding Defects Using Faster R-CNN
专家需要正确检测测试结果,手动解释超过500个区块的结构的无线电图形测试图像需要大量时间和成本。
103 0
|
机器学习/深度学习 数据可视化 算法
FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding
新出现的兴趣已被用于识别以前看不见的对象,因为训练示例很少,称为少镜头对象检测 (FSOD)。最近的研究表明,良好的特征嵌入是获得良好的少样本学习性能的关键。我们观察到具有不同 Intersection-ofUnion (IoU) 分数的对象提议类似于对比方法中使用的图像内增强。我们利用这种类比并结合监督对比学习,在 FSOD 中实现更稳健的对象表示。
209 0
|
机器学习/深度学习 算法 数据挖掘
A Generative Adversarial Network-based Deep Learning Method for Low-quality Defect ImageReconstructi
本文提出了一种基于生成对抗网络 (GAN) 的 DL 方法,用于低质量缺陷图像识别。 GAN用于重建低质量缺陷图像,并建立VGG16网络识别重建图像。
153 0
|
机器学习/深度学习 存储 传感器
Automated defect inspection system for metal surfaces based on deep learning and data augmentation
简述:卷积变分自动编码器(CVAE)生成特定的图像,再使用基于深度CNN的缺陷分类算法进行分类。在生成足够的数据来训练基于深度学习的分类模型之后,使用生成的数据来训练分类模型。
156 0