深度学习与图神经网络核心技术实践应用高级研修班-day4基于深度学习的目标检测(object_detection)(代码片段)

ZSYL ZSYL     2022-12-25     742

关键词:

基于深度学习的目标检测(object_detection)


1. 目标检测相关介绍


目标检测要解决的问题

  1. 适应不同尺度
  2. 多样化


2. RCNN系列模型

(1) 输入测试图像
(2) 利用Selective Search算法在图像中从下到上提取2000个左右的可能包含物体的候选区域
(3) 因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放成统一的227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征
(4) 将每个Region Proposal提取到的CNN特征输入到SVM进行分类


R-CNN:训练过程

步骤一

  • 训练一个分类模型。

步骤二

  • 对该模型做fine-tuning
  • 将分类数从1000改为20
  • 去掉最后一个全连接层

步骤三特征提取

  • 提取图像的所有候选框(选择性搜索)
  • 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,

将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘


步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative


步骤五:使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。


R-CNN:关键性技术


Select Search 算法

step0:生成区域集R
step1:计算区域集R里每个相邻区域的相似度S=s1,s2, 
step2:找出相似度最高的两个区域,将其合并为新集,添加进R 
step3:从S中移除所有与step2中有关的子集
step4:计算新集与所有子集的相似度
step5:跳至step2,直至S为空

Fast-rcnn


Fast R-CNN的网络有两个输出层,一个softmax,一个bbox regressor(相对的R-CNN,SPP Net中分类和回归是两个部分,这里集成在了同一个网络中)。而且加入了一个RoIpooling layer(类似于一个尺度的SPP layer)。

注意Fast R-CNN提取建议区域的方法依然是select search。

Fast-RCNN:关键性技术


ROI Pooling:

输入图片size不同导致feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。

ROI pooling采用SPP Net的方式实现。

Fast-rcnn


Fast-RCNN:关键性技术

SPP Net

  • 只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。


Fast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢?

解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。

做这样的任务的神经网络叫做Region Proposal Network(RPN)。

具体做法:

  • 将RPN放在最后一个卷积层的后面
  • RPN直接训练得到候选区域

网络结构:

region proposal + CNN分类的这种目标检测框架中,region proposal质量好坏直接影响到目标检测任务的精度。

Region Proposal Networks (RPN)

3 ∗ 3 3*3 33滑窗对应的每个特征区域同时预测输入图像3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)的region proposal,这种映射的机制称为anchor。所以对于这个 40 ∗ 60 40*60 4060的feature map,总共有约20000( 40 ∗ 60 ∗ 9 40*60*9 40609)个anchor,也就是预测20000个region proposal.


Region Proposal Networks (RPN)

在feature map上滑动窗口

  • 建一个神经网络用于物体分类+框位置的回归
  • 滑动窗口的位置提供了物体的大体位置信息
  • 框的回归提供了框更精确的位置


3. YOLO系列模型

YOLOYou Only Look Once: Unified, Real-Time Object Detection

核心思想

YOLO 的核心思想就是利用整张图作为网络的输入,直接在输出层回归bounding box(边界框) 的位置及其所属的类别。


网络架构


BBox实现策略

YOLO 将一幅图像分成 SxS 个网格,如果某个目标的中心落在这个网格中,则这个网格就负责预测这个 目标。每个网格要预测 B 个 bounding box,每个 bounding box 除了要回归自身的位置之外,还要附带预测一个 confidence 值。这个 confidence 代表了所预测的 box 中含有 目标 的置信度和这个B box 预测的准确度这两重信息。


其中如果有 object 落在一个 grid cell 里,Pr(Object)取 1,否则取 0。

P(Class|object)

每个小格会对应C个概率值,找出最大概率对应的类P(Class|object)如图,认为小格中包含该物体或者该物体的一部分。在测试时,每个网格预测的 class 信息和 box预测的 confidence信息相乘,就得到每个 bounding box 的 class-specific confidence score,如下公式所示。



YOLO的输出


YOLO的训练

Loss 设计的思考

损失函数的设计目标就是让坐标,confidence,classification 这个三个方面达到很好的平衡。

简单的全部采用了sum-squared error loss来做这件事会有以下不足:

(1)8维的localization error和20维的classification error同等重要显然是不合理的。

(2) 如果一些栅格中没有object,那么就会将这些栅格中的bounding box的confidence 置为0,相比于较少的有object的栅格,这些不包含物体的栅格对梯度更新的贡献会远大于包含物体的栅格对梯度更新的贡献,这会导致网络不稳定甚至发散。

解决方案如下: 更重视8维的坐标预测,给这些损失前面赋予更大的权重 ,对没有object的box的confidence loss赋予小的权重。对不同大小的bbox预测中,小box预测偏相同的尺寸对IOU的影响更大。 为了缓和这个问题,将box的width和height取平方根代替原本的height和width。

如图:small bbox的横轴值较小,发生偏移时,反应到y轴上的loss(图绿色)比big box(图红色)要大。


Loss 方程

对于不存在对应目标的边界框,其误差项就是只有置信度,左标项误差是没法计算的。而只有当一个单元格内确实存在目标时,才计算分类误差项,否则该项也是无法计算的。

论文中将一张图像分为7×7=49个栅格,每一个栅格预测B=2个boxes(每个box有 5个预测值),同时C=20个类别。最后的预测是7×7×30 S * S * ( B * 5 + C) 的Tensor。


YOLO的预测

网络架构


对于boxes首先将小于置信度阈值的值归0,然后分别对置信度值采用NMS,这里NMS处理结果不是剔除,而是将其置信度值归为0。

最后才是确定各个box的类别:每个预测框根据类别置信度选取置信度最大的那个类别作为其预测标签,当其置信度值不为0时,才做为检测结果输出。

YOLO vs RCNN


Yolo在与其他算法的对比


深度学习与图神经网络核心技术实践应用高级研修班-day1深度学习的发展历史(完整版)

...发展历史1.深度学习发展历史2.深度学习的发展趋势3.人工神经网络4.模型与算法4.1前馈神经网络4.2前馈神经网络特点4.3前馈神经网络结构4.4BP神经网络4.5BP网络结构4.6BP网络学习算法4.6.1信号的前向传递过程4.6.1误差方向传导过程1.... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day4深度强化学习(deepq-learning)

深度强化学习(DeepQ-learning)1.深度强化学习简介2.DQN算法解析3.DQN在游戏中的应用4.代码讲解4.1数据预处理4.2网络结构4.3Exploration&Exploitation4.4经验回放机制4.5经验存储4.6经验回放1.深度强化学习简介传统的强化学习通常... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1典型深度神经网络模型

典型深度神经网络模型1.AlexNet模型1.1AlexNet:网络结构1.2AlexNet:特点1.3AlexNet:Dropout层1.4AlexNet:实验结果2.VGG(VisualGeometryGroup)2.1VGG特点:3*3卷积核2.2VGG特点:1*1卷积核2.3VGG网络结构3.ResNet3.1ResNet的诞生背景4.GoogLe 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1受限波尔兹曼机和深度信念网络

深度学习的常用模型及方法-受限波尔兹曼机和深度信念网络1.受限玻尔兹曼机1.1受限玻尔兹曼机原理1.2受限玻尔兹曼机实现2.深度信念网络2.1深度信念网络原理1.受限玻尔兹曼机受限玻尔兹曼机(RBM,RestrictedBoltzmannmachine&#... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1tensorflow和pytorch(代码片段)

深度学习与图神经网络-Tensorflow和Pytorch1.TensorFlow和Pytorch2.TensorFlow简介3.TensorFlow的API4.Pytorch简介5.Python安装6.TensorFlow安装7.Pytorch安装1.TensorFlow和Pytorch2.TensorFlow简介TensorFlow最初是由GoogleBrain团队(隶属于Goo 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1小样本学习与元学习

深度学习的常用模型及方法-小样本学习与元学习1.小样本学习1.12-way5-shot示例1.2基于模型的方法1.3基于度量的方法1.4基于优化的方法1.5数据集1.6基于混合注意力的原型网络2.元学习2.1元学习基础知识2.2元学习实际应用2.3元学习经... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day3对抗生成网络(generativeadversarialnetworks)

...N的原理1.8GAN的特性1.9深度GAN1.10GAN的基本框架1.11基于递归神经网络的GAN2.判别模型3.GAN的应用实例-图像超分辨率4. 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day2基于keras的深度学习程序开发(代码片段)

基于Keras的深度学习程序开发及模型构建1.Keras简介2.Keras模块3.Keras模型组织方式4.数据集导入(MNIST)5.网络层6.激活函数7.优化器(随机梯度下降优化器)8.损失函数9.初始化器10.正则化器11.案例代码11.1导入库函数11.2设置参数... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day2循环神经网络(rnn)

RNN循环神经网络1.RNN循环神经网络1.1循环神经网络(RNN)——网络结构1.2反向传播算法——链式法则1.3反向传播算法——参数更新1.4随时间反向传播(BPTT)2.RNN循环神经网络改进2.1长短期记忆网络(LSTM)——网络结... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1卷积神经网络和循环神经网络

深度学习的常用模型及方法-卷积神经网络和循环神经网络1.卷积神经网络(CNN)1.1CNN的生物学基础1.2CNN的历史2.循环神经网络(RNN)2.1网络结构1.卷积神经网络(CNN)每一个Convolutionlayer(卷积层)都... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1注意力机制(attention)

注意力机制1.Attention注意力2.Encoder-Decoder框架3.Attention的本质4.SelfAttention模型1.Attention注意力Attention:从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。2.Encoder-Decoder框架3.Attention的本... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1卷积神经网络(cnn详解)

卷积神经网络1.从神经元到多层神经网络1.1深度学习方法->反向传播1.2常见损失函数1.2.1均方误差1.2.2交叉熵损失函数2.卷积神经网络2.1卷积神经网络的产生背景2.2卷积层2.3滤波器与通道数2.4池化层2.5全连接层2.6激活函数层2.73DCNN... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day3去噪自编码器(denoising)

去噪自编码器(Denoising)1.问题背景2.问题定义3.实验方案3.1数据来源3.2获取带噪声图片3.3获取带噪声图片3.4模型实现3.5Encoder实现3.6Encoder实现4.实验效果1.问题背景简介自编码器(AutoEncoder)是深度学习中的⼀类无... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day4基于深度学习的图像分类(image_classification)(代码片段)

基于深度学习的图像分类1.图像分类任务2.常用数据集及模型介绍2.1发展简介2.2模型介绍3.基于深度学习模型逻辑3.1基本算法过程3.2多组卷积+激活+池化效果4.模型及代码分析4.1AlexNet(2012)4.2VGGNets(2014)4.3Res... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day3基于深度学习的视频行为识别(action_recognition)

基于深度学习的视频行为识别1.基于深度学习的视频行为识别2.基于C3D的视频行为识别方法3.基于LSTM的视频行为识别方法4.基于Attention的行为识别方法1.基于深度学习的视频行为识别视频行为识别视频行为识别是指给一个视频片段... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day4基于深度学习的目标检测(object_detection)(代码片段)

基于深度学习的目标检测(object_detection)1.目标检测相关介绍2.RCNN系列模型3.YOLO系列模型1.目标检测相关介绍目标检测要解决的问题适应不同尺度多样化2.RCNN系列模型(1)输入测试图像(2)利用SelectiveSearch算法在图像中从下到... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day3图神经网络(gnn)(代码片段)

图神经网络基础和基本思想1.图神经网络1.1图神经网络的定义和目标1.2图神经网络的思想和工作原理1.3图神经网络的应用场景2.图卷积神经网络2.1图卷积神经网络的定义2.2图卷积神经网络的卷积方式2.3卷积神经网络与图卷积神经... 查看详情

深度学习与图神经网络核心技术实践应用高级研修班-day1数据理解和处理(代码片段)

数据理解和处理0.数据理解和处理1.结构化数据2.图像数据3.时序信号0.数据理解和处理结构化数据图像数据时序信号1.结构化数据结构化数据也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式... 查看详情