SSD目标检测算法原理(上)

一、目标检测概述

1.1 项目演示介绍

在这里插入图片描述

项目架构

  • 数据采集层: 数据标注、数据的存储格式

  • 深度模型层:数据预处理,GPU训练得到模型

    • tensorflow serving 进行模型部署
    • web后台
  • 用户层: 网页、小程序、检测识别结果

项目安排三阶段

在这里插入图片描述

1.2 图片识别背景

图片识别常见示例

在这里插入图片描述

图像识别的三大任务:

  • 目标识别: 输出类别
  • 目标检测: 输出类别已经在物体在图片当中的位置
  • 目标分割: 把物体形状描述出来,背景进行剔除

图像识别的发展

  • 通用场景: 谷歌、阿里、百度提供的API,普及范围比较广,一般性的图像识别
  • 垂直场景:
    – 医疗领域:医疗影像的检测
    – 林木产业:木板树种的检测
    – 其他垂直领域:轮胎类型等。。。。

1.3 目标检测定义

识别图片中有哪些物体以及物体的位置(坐标位置)
在这里插入图片描述

位置信息的表示

在这里插入图片描述

极坐标表示示例

在这里插入图片描述

中心点坐标 表示示例

在这里插入图片描述
格式: x_center | y_center | box_weight | box_height

目标检测的发展历史

在这里插入图片描述

二、目标检测算法原理

2.1 任务描述

  • 目标
    –了解目标洁厕算法分类
    –知道目标检测常见指标IoU
    –了解目标定位的简单实现方式

2.2 目标检测算法必备基础

  • 两步走的目标检测: 先进性区域推荐,而后进行目标分类
    – 代表:R-CNN SPP-net Fast R-CNN Faster R-CNN

  • 端到端的目标检测: 采用一个网络一步到位
    – 代表:YOLO SSD

    pass:
    卷积层是深度学习中的一种基础层,最主要的功能是:
    特征提取:卷积层可以通过卷积核在输入数据上进行卷积操作,从而提取出数据中的特征。这些特征可以表示数据的局部信息,如图像中的边缘、角点等。
    池化层
    平均池化:计算图像区域的平均值作为该区域池化后的值。
    最大池化:选图像区域的最大值作为该区域池化后的值。
    主要功能:降维,特征压缩,减少网络模型计算量,可以扩大感受野

常见的模型

在这里插入图片描述

图片分类
评估指标 acc
在这里插入图片描述

目标检测
评估指标 IOU在这里插入图片描述

目标的位置框 :Bounding box
在目标检测中,有两种框:

  • Ground-trurh bounding box:图片中真是标记的框
  • Predicted bounding box: 预测的时候标记的框

IoU(交并比)的解释:
在这里插入图片描述
两个区域的重叠程度overlap
简述: 交集/并集

2.3目标检测算法模型输出

在原有基础上增加一个全连接层

  • FC1: 作为类别的输出
  • FC2:作为这个物体位置数值的输出
    在这里插入图片描述
    对于分类概率的评价指标,使用的是交叉熵损失 softmax
    对于位置信息的回归评价指标,使用的是MSE均方误差损失 L2损失

在这里插入图片描述
在这里插入图片描述

存在问题

图片中假设存在多个物体的时候,你的网络输出多少不确定,全连接层回归
输出几个坐标不确定。

在这里插入图片描述

目标检测 -overfeat模型

目标检测的暴力方法,是从左到右,从上到下滑动窗口,利用分类识别目标。
为了在不同观察距离处检测不同的目标类型,我们使用不同大小的宽高比的窗口。如下图所示:
在这里插入图片描述
在这里插入图片描述

模型构造大致如下: 滑动窗口大小为k

在这里插入图片描述

取出子图,并标记是否是数据

在这里插入图片描述

overfeat模型总结

在这里插入图片描述

R-CNN模型

完整的R-CNN的结构

在这里插入图片描述

步骤

在这里插入图片描述

pass:
CNN提取2000×4096维的矩阵
20个SVM分类器,获得2000×20维的矩阵
NMS对每一列(列对应的类)进行非极大抑制,剔除重叠的建议框

候选区域

选择性搜索 SelectiveSearch – SS
在这里插入图片描述

warp比crop缩放后失真程度更小

在这里插入图片描述

步骤一中:
通过选择性搜索(SS)算法,进行预选框的筛选
大小统一的框使用的是 warp图片缩放的方式

在这里插入图片描述

特征提取

步骤二中:
CNN提取特征,用的是AlexNet的结构,输入要求 277×277
提取的特征会保存在磁盘中
数据维度 (2000,4096) 如下图所示

20个类别是指,你训练的数据集一共就有20个类别,根据你的数据集的类别数量进行调整

在这里插入图片描述

列是候选区域,行是类别特征

在这里插入图片描述

非极大抑制 (NMS)

在这里插入图片描述

非极大抑制的过程

在这里插入图片描述

修正候选区域

在这里插入图片描述
在这里插入图片描述

预测值是A,目标是G,进行修正后得到 G’
如下图所示:
在这里插入图片描述
在这里插入图片描述

R-CNN的训练过程

正负样本准备+预训练+微调网络+训练SVM+训练边框回归器

正负样本准备

在这里插入图片描述

预训练

CNN模型层数多,模型容量大,通常会采用2012年的AlexNet来学习特征,包含5个卷积层和2个全连接,比如著名的ImageNet比赛的数据集,来训练AlexNet,保存其中的模型参数

微调
类似于迁移学习
在这里插入图片描述

总结:

  1. 正负样本标记
  2. 预训练:别人已经在大数据集上训练好的CNN网络模型model1
  3. 微调: 利用标记好的样本,输入到model1当中,继续训练,得出model2

在这里插入图片描述

R-CNN的测试过程

  1. 输入一张图片,利用selective search得到2000个region proposal
  2. 对说有的region proposal变换得到固定尺寸,并作为预训练好的CNN网络输入,每个候选框得到4096的特征
  3. 对已经训练好的每个类别的svm分类器对提取到的特征打分,所以SVM的weight matrix是4096 N,N是类别数
  4. 采用NMS(非极大抑制)去除候选框
  5. 得到region proposal进行回归预测,微调

R-CNN在VOC2007数据集上平均精确度达到66%

缺点:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lijiamingccc/article/details/129734846