目标检测 的各种网络模型理论

目标检测问题定义

目标检测是在图片中对可变数量的目标进行查找和父类

  • 目标种类问题
  • 目标尺度问题
  • 外在环境干扰问题

目标检测问题方法:
传统目标检测方法到深度学习目标检测方法的变迁
在这里插入图片描述

目标检测问题方法:

深度学习的目标检测方法:

  • One-stage(YOLO和SSD系列)
  • Two-stage(Faster RCNN系列)

目标检测的的任务

  • 输入:图片
  • 输出:物体类别,位置坐标
  • xmin,ymin,xmax,ymax:物体位置的左上角、右下角坐标

目标定位的简单实现思路:

  • 添加一段全连接层输出4个位置,做损失计算
  • 早期的目标检测:

添加两个全连接层:FC1,FC2

  • FC1:作为类别输出
  • FC2:作为中国物体位置数值的输出

在这里插入图片描述


两种Bounding box名称
  • Ground-truth bounding box: GT图片真实目标位置(标记结果)
  • Predict bounding box:预测的框位置
  • 掌握分类
  • 父类与定位:图片中只有一个物体需要检测
  • 目标检测:图片由多个物体需要检测

R-CNN

  • 对多个目标的情况,就不能以固定个数输出物体的位置

目标检测-Overfeat模型

滑动窗口
  • 首先定义若干个大小窗口,k个
  • k中每个窗口都要滑动图片,每个串钩滑动M次
  • K*M

Overfeet模型总结

  • 暴力破解方法
  • 计算消耗大

目标检测-R-CNN模型

  • CVPR 2014
  • 候选区方法(region proposal method):提供了额外物体检测的一个共重要思路

在这里插入图片描述

  • 步骤:

  • 1、对于一张图片,找出默认2000个候选区

  • 2、2000个候选区的大小变换,输入AlexNet当中,得到特征向量

  • 【2000,4096】

  • 3、经过20个类别的SVM分类器,对于2000个候选区域做判断,得到【2000,20】得分矩阵

  • 4、2000个候选区域做NMS,取出不好的,重叠度搞的一些候选区域,得到剩下分数高,结果好的框

  • 修正候选框,bbox的回归调微

候选区域(region of interest(ROI))得出

  • SelectiveSearch在一张图片上提取出来约2000个候选区
  • 由于长宽不定,不能直接输入AlexNet
  • 2000个候选区做大小变换

特征向量训练分类SVM

  • R-CNN选用SVM进行二分类。将入检测20个类别那么会提供20个不同类别的SVM分类器了,么个分类都会对2000个候选区域的特征向量分别判断一次,这样得出【2000,20】的得分矩阵

非最大抑制(NMS)

  • 目的

  • 筛选候选区域,目标是一个物体只保留一个最优的框,来抑制那些冗余的候选框

  • RCNN预测2000个候选框,得到三个,比如有3个ground truth 比较准确的候选框

在这里插入图片描述

迭代过程:

  • 1、对于所有的2000个候选区域得分进行概率筛选,0.5

  • 2000—》5个

  • 2、剩余 的候选框

  • 对于每个候选框找到自己对应的GT

  • 3、第一轮:杜宇右边车辆,假设B得分最高的,与B的IoU>0.5删除。现在与B计算IoU,DE结果>0.5,删DE,B作为一个预测结果

第二轮:对于左变车辆,AC中,A的得分最高,与A计算IoU,C的结果>0.5,删

除C,A作为一个结果

  • 最终结果:理想状态,每个Ground truth 都有一个候选框预测

候选框修正

  • 为了让候选框标注更加准确率,去修正原来的位置

  • A是候选框,G是目标GT框

  • 让A与G做回归训练,得到四个参数

  • RCNN输出:一张图片预测一个X候选框,x x w =y_loacte

  • y_locate:=是真正算法输出的位置

IoU交并比

  • 取值是在【0,1】之间。
  • 位置的考量

平均精确率(mean average precison )map

改进-SPPNet

  • SPPNet主要存在两点改进地方,提出了SPP层

  • 减少卷积计算
    在这里插入图片描述

在这里插入图片描述

  • 1、图片输入到网格先得到一个feture map
  • 2、原图中通过SS得到的候选区域直接映射feature map中对应位置
  • 3、映射过来的特征,经过SPP层(空间金字塔变换结构),S输出固定大小的特征向量

映射
经SS选出来的候选区后,找到候选区的特征值的映射

在这里插入图片描述

在这里插入图片描述

  • 论文当中S=16=2x2x2x2

  • 原图:特征图中xmin,ymin=[xmin/16]+1,ymin/16+1

  • 特征图:xmax,ymax=[xmax/16]-1,ymax/16-1

  • 3、映射过来的(假如还是2000个)候选区域的特征,经过SPP层(空间金字塔变换层),S输出固定大小的特征向量

Spatial pyramid pooling

  • 候选区域的特征图换成固定大小的特征向量
  • spp layer 会将每一个候选区域分成1x1 2x2 4x4 三张图
  • (16+4+1)x256=21x256=5376
  • Spatial bins (空间盒个数):1+4+16=21

在这里插入图片描述


Fast R-CNN

改进:

  1. 提出一个Roi pooling

  2. 分类是用softmax计算:k个类别加上“背景”类

  3. 与SPPNet一样的地方

  4. 首先将整个图片输入到一个基础卷积网络,得到整张图的feature map

  5. 将选择性搜索算法的结果region proposal(RoI)映射到feature map 中

RoI pooling

  • 为了减小计算时间并且得出固定长度的向量
  • 使用一种4x4的盒子
  • 因此Fast-R-CNN要比SPPNet快很多的因为这里的原因

特点:

  • 训练会比较统一:废除了svm以及sppnet

  • roi pooling layer + soft max

  • 多任务损失 Multi-task loss

  • 平均绝对误差(MAE)损失即L1损失+ 交叉熵损失

  • 缺点:

  • 使用Selective Search提取Region proposals 没有实现真正意义上的端到端,操作也十分耗时

Faster-R-CNN

  • 候选区域筛选融合到网络当中

  • 四个基本步骤(候选区域生成,特征提取,分类,位置精确)终于被统一到一个深度网络框架

  • 区域生成网络(RPN)+Fast R-CNN

  • RPN替代了SS选择性搜索算法

  • RPN网络通过生成region proposals

  • 通过softmax判断anchors属于foreground或者background

  • bounding box regression 修正获得精确proposals

  • 得到默认300个候选区域给roi pooling继续后面fast rcnn的步骤

RPN的原理

  • 用nxn(默认3x3=9)的大小窗口去扫描特征图得到k个候选框窗口

  • 每个特征图中像素对应的9个窗口大小?

  • 三种尺度【128,256,512】,三种长宽比【1:1,1:,2:1】

  • 3x3=9不同大小的候选宽

  • 窗口输出【N,256】-------》分类:判断是否背景

  • 回归位置:N个候选框与自己对应目标位置GT做回归,修正位置

  • 得到更好的候选框提供给RoI pooling使用

Faster RCNN训练

  • RPN训练

  • 分类:二分类,softmax ,logisticregression

  • 候选框的调整

  • Fast RCNN部分的训练

  • 预测类别训练:softmax

  • 还有预测位置的训练:均方误差

YOLO(you only look once)

一个网格搞定一切,GoogleNet +4个卷积+2个全连接层

在这里插入图片描述

流程:

  • 单元格(grid cell)

  • 7 x 7=49个像素值,理解层49个单元格

  • 1、每个单元格负责预测一个物体类别,并且直接预测物体的概率

  • 2、每个单元格:两个(默认)bbox位置,两个置信度confidence

  • 一个bbox:xmin,ymin,xmax,ymax,confidence

  • 两个bbox:4+1+4+1=10个值

  • 30:10个,20个(20代表20类的预测结果)、

  • 网格筛选

  • 一个网格会预测两个Bbox,在训练时我们只有一个Bbox专门负责预测概率(一个Objet 一个Bbox)

  • 20个类别概率代表中国网络当中的一个bbox

  • 一个confidence score

  • 如果grid cell 里面没有object ,confidence为0

  • 如果有,测confidence score等于预测的box和ground truth的IoU乘积

  • 两个bbox 的4个值都与GT进行IoU计算得到两个IoU值

  • YOLO框,概率值都直接由网络输出7x7x30(默认给30个值赋了具体定义)
    在这里插入图片描述

训练

  • 预测框对应的目标值标记

总结:

  • 优点:速度快

  • 缺点:

  • 准确率会打折扣

  • YOLO对相互靠的很近的物体(挨在一起中点都落在同一格子的情况),还又很小的群体检测想过不好,这是因为一个网格中只预测了两个值


SSD(Single shot MultiBox Detector)

SSD的特点在于:

  • SSD结合了YOLO里面的回归思想和Faster-RCNN的Anchor机制,使用全图哥哥位置的多尺度区域进行回归,即保持了YOLO速度快的特点,也保证了窗口预测的跟Faster R-CNN一样精确
  • SSD的核心是在不同程度的特征图上常用卷积来预测一些列Default Bounding Boxes的类别和坐标偏移

结构:

在这里插入图片描述

  • SSD结合了YOLO中的回归思想和Faster-RCNN红的Anchor机制
  • 不同尺度的特征特征图上采用卷积来预测一些列Default Bounding Boxes的类别、坐标偏移
  • 不同尺度feature map所有特征点上使用PriorBx层(Detector&classifier)

Detector & Classifier

  • 1、得到的default boxes

  • PriorBox层:生成default boxes,默认候选框

  • 候选框生成结果之后

  • 做微调,利用3个variabce做回归调整候选框

  • 1、Conv3x3:生成localization,4个位置偏移

  • 2、Conv3x3:confidence,21个类别的置信度(要区分出背景)
    在这里插入图片描述

训练过程:

1、输入------》输出-----》结果为ground truth样本回归损失计算------》反向传播,更新权值

  • 1、样本标记:8732个候选框default hoxes ,得到正负样本
  • 正:负=1:3
  • SoftMax loss (Faster R-CNN是log loss),位置回归则是采用smooth L1 loss(与FasterR-CNN一样

test流程

  • 输入-》输出-》nms-》输出## 目标

这里只是理了下各种目标检测的模型理论,没有涉及到代码,大多是基于Python的神经网络框架来建立。网上有很多已经基于理论完善了的神经网络结构,进行微调就可以训练出来可用的模型。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值