网站怎么申请官网,怎么能让我的网站被百度收录,中国数据网,wordpress ppt插件目录标题 参考目标检测定义深度学习对目标检测的作用单目标检测多任务框架多任务损失预训练模型姿态估计 多目标检测问题滑动窗口#xff08;Sliding Window#xff09;滑动窗口缺点 AdaBoost#xff08;Adaptive Boosting#xff09;参考 区域建议 selective search 思想慢… 目录标题 参考目标检测定义深度学习对目标检测的作用单目标检测多任务框架多任务损失预训练模型姿态估计 多目标检测问题滑动窗口Sliding Window滑动窗口缺点 AdaBoostAdaptive Boosting参考 区域建议 selective search 思想慢速R-CNN慢速R-CNN思路边界框回归Bbox reg慢速R-CNN缺点 Fast R-CNN改进一先提取特征后区域建议改进二全连接神经网络改进三裁剪缩放特征RoI Pool为什么需要RoI Pool区域裁剪Rol PoolRol Align Fast R-CNN的问题 Fast R-CNN vs 慢速R-CNNFaster R-CNNRPNRegion Proposal Network区域建议Region Proposal Network运行分为两个阶段Faster R-CNN速度 目标检测: 影响精度的因素 ... 参考
【计算机视觉】计算机视觉与深度学习-07-目标检测-北邮鲁鹏老师课程笔记 计算机视觉与深度学习 北京邮电大学 鲁鹏 清晰版合集完整版
目标检测定义 目标检测的目标是确定图像中存在的目标的类别并在图像中标记出它们的位置通常使用边界框来表示目标的位置和大小。 单目标检测分类定位
深度学习对目标检测的作用
深度学习通过使用深层神经网络模型可以从原始像素级别上学习和提取图像特征从而实现目标检测。
单目标检测
将定位任务建模为回归问题!
多任务框架
一个任务是分类。 另一个任务是定位。
多任务损失
网络训练的目标是降低总损失所以 softmax loss 和 L2 loss 将同时减小也可以为 softmax loss 和 L2 loss 分别设置一个权重通过改变权重调整 softmax loss 和 L2 loss 在总损失中所占的比重。
预训练模型
目标检测中一般不从头开始训练网络而是使用ImageNet上预训练的模型。 一般分三个阶段
1、分类训练阶段
在这个阶段通常使用预训练的分类模型如在ImageNet上预训练的模型来进行训练。该模型已经在大规模图像分类任务上学习到了丰富的图像特征。然后将最后的全连接层替换成适应目标检测任务的新的全连接层并使用目标检测数据集进行训练。这个阶段的目标是学习分类任务所需的特征表示。
2、定位训练阶段
在这个阶段固定预训练模型的大部分层并仅仅调整输出层和一些顶层特征层。然后使用目标检测数据集进行训练让模型学习如何准确地定位目标。这个阶段的目标是学习目标的位置信息。
3、分类和定位一起训练阶段
在这个阶段不仅训练分类任务还同时训练目标的位置信息。在模型中同时使用分类和定位损失函数并根据这两个任务的权重进行综合训练。这个阶段的目标是综合考虑分类和定位任务使模型能够准确地检测并定位目标。
姿态估计 姿态估计Pose Estimation是计算机视觉中的一个重要任务旨在从图像或视频中推断出人体、物体或其他目标的姿态信息包括位置、方向和关节角度等。 单目标检测的思路还应用于单人体姿态估计与box coordinates不同的是在人体上标注关键点然后通过训练与标答进行对比。 目标检测 首先使用目标检测算法来检测图像中的人体目标。目标检测算法可以是传统的方法如基于特征的方法或深度学习方法如基于卷积神经网络的方法。检测到的人体目标将作为后续姿态估计的输入。 关键点定位 对于每个检测到的人体目标需要进一步定位其关键点例如人体姿态估计中的关节点。可以使用关键点检测算法如姿态估计算法或关键点检测算法来定位人体关键点。这些算法可以是传统的机器学习方法也可以是基于深度学习的方法。 姿态估计 一旦获得了人体关键点的位置可以使用姿态估计算法来推断人体的姿态信息如人体的位置、旋转和关节角度等。姿态估计算法可以基于几何模型、优化方法或深度学习方法。根据应用需求可以选择合适的姿态表示形式如关节角度、骨架模型或三维姿态等。 后处理与应用 最后可以对估计的姿态结果进行后处理如滤波或平滑操作以提高估计的准确性和稳定性。得到最终的姿态估计结果后可以将其应用于各种应用领域如动作识别、运动分析、虚拟现实、增强现实等。
多目标检测
问题
困境每张图像期望输出的维度都不一样。 神经网络的标答是预先建立好的因为多目标检测中目标数量并不确定输出的维度不确定就无法建立Correct box标答如果使用单目标检测的训练方法无法建立多目标检测的表达训练将不能进行。
滑动窗口Sliding Window 在图像上以不同的尺度和位置滑动固定大小的窗口然后在每个窗口上应用分类器或特征提取方法来判断窗口内是否存在目标。滑动窗口方法可以用于检测不同尺寸的目标并且可以通过滑动步长控制检测的精度和速度。 将图像中所有可能的区域都给到分类器进行分类只留下能正确分类的窗口。 困境CNN需要对图像中所有可能的区域不同位置、尺寸、长宽比进行分类计算量巨大
滑动窗口缺点
穷举图像中成千上万的区域进行分类对于神经网络计算量很大。
针对这个问题提出了一种新的思想先从图像中产生一些候选区域再进行分类而不是穷举图像中所有区域。例如selective search
AdaBoostAdaptive Boosting
AdaBoost是一个非常快的分类器可以对图像上的区域进行穷举后分类。
参考
AdaBoost算法超详细讲解
AdaBoost 是一种集成学习算法用于提高分类器的性能。它通过迭代训练一系列弱分类器如决策树、支持向量机等每次迭代都根据前一轮分类结果对样本进行调整使得难以分类的样本获得更高的权重从而加强对这些样本的分类能力。最终通过组合多个弱分类器AdaBoost 可以产生一个强大的分类器。
区域建议 selective search 思想
针对穷举图像所有区域神经网络分类计算量大这个问题提出了一种新的思想先从图像中产生一些候选区域再进行分类而不是穷举图像中所有区域。例如selective search。 选择性搜索Selective Search选择性搜索是一种经典的区域建议算法。它基于图像的颜色、纹理、边缘等信息在不同尺度和层次上进行区域合并和分割生成一系列候选区域。
selective search思想是在R-CNN的论文中提出的。
慢速R-CNN
基于区域的目标检测算法。
慢速R-CNN思路
1 利用区域建议产生感兴趣的区域。存入硬盘 2 对区域进行缩放。 3 将图像区域送入卷积网络进行特征提取。存入硬盘 4 使用支持向量机对区域进行分类同时进行边界框回归修正学习。
边界框回归Bbox reg 区域建议生成的区域可能有损失效果不好进行边界框回归就是为了修正区域建议生成的区域与真实区域的偏差。 边框回归(Bounding Box Regression)详解 对于上图绿色的框表示Ground Truth, 红色的框为Selective Search提取的Region Proposal。那么即便红色的框被分类器识别为飞机但是由于红色的框定位不准(IoU0.5) 那么这张图相当于没有正确的检测出飞机。 如果我们能对红色的框进行微调 使得经过微调后的窗口跟Ground Truth 更接近 这样岂不是定位会更准确。 确实Bounding-box regression 就是用来微调这个窗口的。
慢速R-CNN缺点
问题计算效率低下每张图像大约有2k个区域需要卷积网络进行特征提取重叠区域反复计算。
Fast R-CNN
在Fast R-CNN中首先通过卷积神经网络CNN提取整个图像的特征图。然后针对每个感兴趣区域Region of InterestRoI通过RoI池化层将其映射为固定大小的特征图。这样可以避免在每个RoI上进行独立的卷积操作从而大大减少了计算量。
接下来将RoI映射后的特征图输入到全连接层中进行目标分类和边界框回归。分类部分使用softmax函数对RoI进行多类别分类而边界框回归则用于预测目标的位置和大小。 Fast R-CNN的训练是端到端的可以通过反向传播同时优化特征提取网络和分类/回归网络。这种端到端的训练方式比R-CNN中的多阶段训练更加高效。
改进一先提取特征后区域建议
如果先进行区域建议后进行特征提取计算量比较大。因此先对整个图片进行卷积提取特征后在特征图上进行区域扣取。
改进二全连接神经网络
改进三裁剪缩放特征RoI Pool
为什么需要RoI Pool
先来看一个问题对于传统的CNN如AlexNet和VGG当网络训练好后输入的图像尺寸必须是固定值同时网络输出也是固定大小的vector or matrix。如果输入图像大小不定这个问题就变得比较麻烦。有2种解决办法
从图像中crop一部分传入网络。将图像warp成需要的大小后传入网络。 两种办法的示意图如图可以看到无论采取那种办法都不好要么crop后破坏了图像的完整结构要么warp破坏了图像原始形状信息。
回忆RPN网络生成的proposals的方法对positive anchors进行bounding box regression那么这样获得的proposals也是大小形状各不相同即也存在上述问题。所以Faster R-CNN中提出了RoI Pooling解决这个问题。不过RoI Pooling确实是从Spatial Pyramid Pooling发展而来。
通过RoI Pooling即使大小不同的proposal输出结果都是固定大小实现了固定长度输出。
参考一文读懂Faster RCNN
区域裁剪 Rol Pool 区域顶点规整到网格交点上有偏移 然后进行处理 Rol Pool处理前不同的区域特征的空间尺寸可能不一致但是处理后的所有区域特征尺寸都是一样的。
问题: 处理后的区域特征会有轻微的对不齐
Rol Align 区域顶点不规整到网格交点上无偏移 在每个区域中选择几个关键点关键点个数是可自定义的是超参数。 RoI Align 解决了传统 RoI Pooling 中的精度损失和空间错位问题。它通过使用双线性插值的方式精确地计算感兴趣区域内每个位置的特征值。具体而言RoI Align 将感兴趣区域划分为更细的小格然后在每个小格内使用双线性插值计算对应位置的特征值。最后这些特征值通过平均池化得到感兴趣区域的特征表示。 双线性插值 在每个小格内使用双线性插值来计算对应位置的特征值。双线性插值利用小格内的四个相邻像素的特征值通过加权平均来估计目标位置的特征值。 双线性插值通过使用周围四个最近的数据点来估计目标位置的值。假设我们要在一个二维网格上进行插值其中四个最近的数据点的坐标为 (x1, y1)、(x1, y2)、(x2, y1) 和 (x2, y2)目标位置的坐标为 (x, y)。双线性插值的计算步骤如下
计算水平方向上的插值
a. 在 x 轴上对数据点 (x1, y1) 和 (x2, y1) 进行线性插值得到两个插值结果 f 1 f ( x 1 ) ( x − x 1 ) ∗ ( f ( x 2 ) − f ( x 1 ) ) / ( x 2 − x 1 ) f_1 f(x1) (x - x1) * (f(x2) - f(x1)) / (x2 - x1) f1f(x1)(x−x1)∗(f(x2)−f(x1))/(x2−x1) f 2 f ( x 1 ) ( x − x 1 ) ∗ ( f ( x 2 ) − f ( x 1 ) ) / ( x 2 − x 1 ) f_2 f(x1) (x - x1) * (f(x2) - f(x1)) / (x2 - x1) f2f(x1)(x−x1)∗(f(x2)−f(x1))/(x2−x1)。 b. 在 x 轴上对数据点 (x1, y2) 和 (x2, y2) 进行线性插值得到两个插值结果 f 3 f ( x 1 ) ( x − x 1 ) ∗ ( f ( x 2 ) − f ( x 1 ) ) / ( x 2 − x 1 ) f_3 f(x1) (x - x1) * (f(x2) - f(x1)) / (x2 - x1) f3f(x1)(x−x1)∗(f(x2)−f(x1))/(x2−x1) f 4 f ( x 1 ) ( x − x 1 ) ∗ ( f ( x 2 ) − f ( x 1 ) ) / ( x 2 − x 1 ) f_4 f(x1) (x - x1) * (f(x2) - f(x1)) / (x2 - x1) f4f(x1)(x−x1)∗(f(x2)−f(x1))/(x2−x1)。
计算垂直方向上的插值
a. 在 y 轴上对插值结果 f1 和 f2 进行线性插值得到结果 f 12 f 1 ( y − y 1 ) ∗ ( f 2 − f 1 ) / ( y 2 − y 1 ) f_{12} f_1 (y - y_1) * (f_2 - f_1) / (y_2 - y_1) f12f1(y−y1)∗(f2−f1)/(y2−y1)。 b. 在 y 轴上对插值结果 f3 和 f4 进行线性插值得到结果 f 34 f 3 ( y − y 1 ) ∗ ( f 4 − f 3 ) / ( y 2 − y 1 ) f_{34} f_3 (y - y_1) * (f_4 - f_3) / (y_2 - y_1) f34f3(y−y1)∗(f4−f3)/(y2−y1)。
最终的插值结果为在垂直方向上插值得到的 f 12 f_{12} f12和 f 34 f_{34} f34的线性插值结果 f f 12 ( y − y 1 ) ∗ ( f 34 − f 12 ) / ( y 2 − y 1 ) f f_{12} (y - y_1) * (f_{34} - f_{12}) / (y_2 - y_1) ff12(y−y1)∗(f34−f12)/(y2−y1)。
Fast R-CNN的问题
selective search 区域建议 耗时过高几乎等于单张图片的检测时间。
Fast R-CNN vs 慢速R-CNN Fast R-CNN 相对于慢速 R-CNN 有几个改进点
特征共享Fast R-CNN 在整个图像上只进行一次卷积运算而慢速 R-CNN 需要为每个候选区域分别进行卷积运算。这意味着 Fast R-CNN 可以共享卷积层的计算从而更高效地提取特征。单次前向传播Fast R-CNN 可以通过单次前向传播同时计算所有候选区域的特征和分类结果而慢速 R-CNN 需要为每个候选区域独立地进行前向传播效率较低。损失函数Fast R-CNN 引入了多任务损失函数同时优化目标分类和边界框回归而慢速 R-CNN 仅使用分类损失函数。
Faster R-CNN
参考一文读懂Faster RCNN 在结构上在中间特征层后加入区域建议网络RPNRegion Proposal Network 产生候选区域其他部分保持与Fast R-CNN一致即扣取每个候选区域的特征然后对其进行分类。
RPNRegion Proposal Network
在目标检测任务中RPN的作用是在输入图像上提出可能包含目标的候选框或称为候选区域。RPN是一个小型的神经网络它以滑动窗口的方式在特征图上滑动并为每个位置生成多个不同尺度和长宽比的候选框。
RPN的输入是经过卷积神经网络如VGG、ResNet等提取的特征图。特征图具有丰富的语义信息可以帮助RPN更好地定位目标。RPN在特征图上应用一个小型的卷积滑动窗口并对每个窗口位置生成多个anchors。
对于每个anchorRPN会通过卷积和全连接层进行处理并输出两个值 1表示该anchor是否包含目标的概率通常是二分类问题 2对应目标边界框的修正信息用于调整候选框的位置和形状。
通过这个过程RPN能够生成大量的候选框并为每个候选框提供目标概率和边界框的修正信息。然后根据这些概率和修正信息可以对候选框进行筛选和精细调整选出最具有潜力的候选区域。
RPN所生成的候选区域随后被传递给后续的分类器和边界框回归器进行目标分类和精确定位。
区域建议Region Proposal Network
实际使用中对于每个特征图上的每个位置我们通常会采用k个不同尺寸和分辨率的锚点区域anchor boxes
四种损失联合训练 • RPN分类损失(目标/非目标 • RPN边界框坐标回归损失 • 候选区域分类损失 • 最终边界框坐标回归损失
运行分为两个阶段 第一阶段候选区域生成
在第一阶段Faster R-CNN使用Region Proposal Network (RPN) 来生成候选区域。
RPN通过在输入图像上滑动窗口并在不同位置和尺度上生成一系列的候选框也称为锚框或anchors这些候选框可能包含目标。对于每个候选框RPN预测其包含目标的概率以及对应目标边界框的修正信息。
第二阶段目标分类和边界框回归
在第二阶段Faster R-CNN使用先前生成的候选区域作为输入对这些候选区域进行目标分类和边界框回归。通常这个阶段包括一个用于特征提取的卷积神经网络如VGG、ResNet等以及用于目标分类和边界框回归的全连接层。这些层将从候选区域中提取的特征映射与目标类别进行关联并对边界框进行微调以更准确地定位目标。
Faster R-CNN速度 目标检测: 影响精度的因素 …