2

计算机视觉综述

 3 years ago
source link: https://panchuang.net/2021/06/27/%e8%ae%a1%e7%ae%97%e6%9c%ba%e8%a7%86%e8%a7%89%e7%bb%bc%e8%bf%b0-2/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

计算机视觉综述

fendouai • 2021年6月27日 am5:10 • Medium

计算机视觉是人工智能的一个领域,它训练计算机解释和理解视觉世界。机器可以准确地识别和定位物体,然后使用相机、视频和深度学习模型中的数字图像对它们“看到”的东西做出反应。

每个像素由8个数字(内存位)表示。在计算机科学中,每种颜色都由一个值表示。

计算机视觉可以分为图像分类、目标检测、分割(语义分割和实例分割)和图像生成(GAN)。

对图片分类的简单解释是,当计算机将图像分类到某一类别时。在下面的图片中,第一个对象的分类将是绵羊。位置或位置由图片中对象周围的框标识。

对象检测检测特定类的语义对象的实例。下面的图片中有3只羊。将它们(箱)分类为绵羊1、绵羊2和绵羊3。

每个像素都属于一个特定的类。在下面的图片中,班级是羊、草或路。类内的像素由相同的颜色表示。(羊是橙色的,道路是灰色的,草是绿色的)。这描述了语义分割。

对于实例分割,同一类的不同对象具有不同的颜色。(绵羊1=亮黄色,绵羊2=深黄色,绵羊3=橙色)

区别计算机视觉和图像处理图像处理的重点是对原始图像进行处理,以应用某种变换。通常,目标是改进图像或准备将其作为特定任务的输入,而在计算机视觉中,目标是描述和解释图像。例如,降噪、对比度或旋转操作(图像处理的典型组件)可以在像素级执行,并且不需要对图像进行复杂的把握,从而允许对图像中发生的事情有一定的了解。

图像处理的示例包括:

  • 规格化图像的光度特性,如亮度或颜色。
  • 裁剪图像的边界,例如使照片中的对象居中。
  • 从图像中去除数字噪声,例如来自微光级别的数字伪像。

1.神经网络

为了产生一些输出,输入数据应该只在正向馈送。在输出生成过程中,数据不能反向流动,否则会形成循环,无法生成输出。这种网络配置称为前馈网络。前馈网络有助于前向传播。在隐藏层或输出层中的每个神经元上,处理过程分两个步骤进行:

  • 预激活:它是输入的加权和,即权重w.r.t到可用输入的线性变换。基于该聚合和和激活函数,神经元决定是否进一步传递该信息。
  • 激活:将计算出的输入加权和传递给激活函数。激活函数是向网络添加非线性的数学函数。有四种常用和流行的激活函数-Sigmoid、双曲正切(Tanh)、RELU和Softmax。

反向传播是神经网络训练的本质。它是基于在前一个时期(即迭代)中获得的错误率(即损失)来微调神经网络的权重的实践。适当的权值调整确保了较低的错误率,增加了模型的泛化能力,使模型更加可靠。

这里有一个视频,绝对可以帮助你理解反向传播。video

$M A E=\frac{\sum_{i=1}^{n}\left|y_{i}-\hat{y}_{i}\right|}{n}$

另一方面,平均绝对误差是用预测和实际观测的绝对误差之和的平均值来衡量的。与MSE一样,这也是在不考虑其方向的情况下测量误差的大小。与MSE不同,MAE需要更复杂的工具(如线性规划)来计算梯度。另外,MAE对异常值的鲁棒性更强,因为它不使用平方。

离群值是指那些与给定数据集中存在的其他观测值明显不同的数据点。它可能是由于测量中的可变性和填充数据点时的错误解释而发生的。

$M S E=\frac{\sum_{i=1}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2}}{n}$

顾名思义,均方误差是指预测和实际观测之间的平方差的平均值。它只与平均误差大小有关,而与它们的方向无关。然而,由于平方,与偏差较小的预测相比,远离实际值的预测会受到严重的惩罚。另外,MSE有很好的数学特性,这使得计算梯度变得更容易。

$SVMLoss=\sum_{j\neq y_{i}}\max\Left(0,s_{j}-s_{y_{i}}+1\right)$

简单地说,正确类别的分数应该比所有错误类别的分数之和大一定的安全裕度(通常为1)。因此,铰链损耗用于最大边际分类(如下图,以最大化增量),最明显的是用于支持向量机。虽然不可微,但它是一个凸函数,使得机器学习领域中常用的凸优化算法很容易使用。

$CrossEntropyLoss=-\Left(y_{i}\log\Left(\hat{y}{i}\right)+\Left(1-y{i}\right)\log\Left(1-\hat{y}_{i}\right)\right)$

这是分类问题最常见的设置。当预测概率偏离实际标签时,交叉熵损失增加。

请注意,当实际标签为1(y(I)=1)时,函数的后半部分消失,而如果实际标签为0(y(I)=0),则丢弃前半部分。简而言之,我们只是将地面真相类的实际预测概率的对数相乘。其中一个重要的方面是,交叉熵损失严重地惩罚了那些有信心但错误的预测。

交叉熵有一些优点:交叉熵的损失严重地惩罚了那些有信心但错误的预测。然而,对于平方损失,它的梯度项中有$\hat{y}(1-\hat{y})$。当$\hat{y}$接近0.0或1.0时,更新速度变得非常慢。

平方误差损失梯度:两类情况

首先,预测函数为$y_i=\sigma(wx_i+b)$,损失函数为$J=\frac{1}{2}\Left(\hat{y}i-y{i}\right)^{2}$。对于函数$\sigma‘$:$\sigma^{\Prime}\Left(Wx_{i}+b\right)=\sigma\Left(Wx_{i}+b\right)=\sigma\Left(Wx_{i}+b\right),我们得到$J:\frac{d J}{d W}=\Left(\hat{y}{i}-y{i}\right)\sigma’(Wx_i+b)x_i$)\sigma‘(Wx_i+b\Right)\Left(1-\sigma\Left(Wx因此,我们可以得到:$\frac{dJ}{dW}=\Left(\hat{y}{i}-y{i}\right)\widdehat{y_{i}}\Left(1-\widehat{y_{i}}\right)x_{i}$。

很明显,当$\hat{y}$接近0.0或1.0时,$\hat{y}(1-\hat{y})$接近0,这不利于更新参数。

交叉熵损失的梯度:2级情景

首先,预测函数是$\widehat{y_{i}}=\sigma\left(x_{i}\right)=\sigma\left(W x_{i}+b\右)$,损失函数为$J=\SUM_{i=1}^{n}\Left[-y_{i}\LOG\left(\sigma\left(x_{i}\right)\right)-\left(1-y_{i}\right)\LOG\left(1-\sigma\left(x_{i}\right)\right)\right]$

我们得到$J:\frac{d J}{d W}=\sum_{i=1}^{n}\Left[-y_{i}\log\left(\sigma\left(x_{i}\right)\right)-\left(1-y_{i}\right)\log\left(1-\sigma\left(x_{i}\right)\right)\right]$$\frac{d J}{d W}=\sum_{i=1}^{n}\Left[-y_{i}\frac{\sigma\left(x_{i}\right)\left(1-\sigma\left(x_{i}\right)\right)x_{i}}{\sigma\left(x_{i}\right)}+\left(1-y_{i}\right)\frac{\sigma\left(x_{i}\right)\left(1-\sigma\left(x_{i}\Right)\Right)x_{i}}{1-\sigma\Left(x_{i}\Right)}\Right]$$\frac{d J}{d W}=\sum_{i=1}^{n}\left[-y_{i}\left(1-\sigma\left(x_{i}\right)\right)x_{i}+\Left(1-y_{i}\Right)\sigma\Left(x_{i}\Right)x_{i}\right]$$\frac{d J}{d W}=\sum_{i=1}^{n}\Left[-y_{i}x_{i}+y_{i}\sigma\Left(x_{i}\right)x_{i}+\sigma\Left(x_{i}\right)x_{i}-y_{i}\sigma\Left(x_{i}\right)x_{i}\right]$}{d W}=\sum_{i=1}^{n}\left[\left(\sigma\left(x_{i}\right)-y_{i}\right)x_{i}\right]=\sum_{i=1}^{n}\left(\widehat{y_{i}}-y_{i}\right)x_{i}$

我们可以很容易地看到,上面提到的问题被避免了。

所以,我的建议是对于回归问题,平方损失是更好的选择。对于分类,交叉熵/铰链损失更适合分类。

这个博客将帮助你全面了解防止穿得过紧的方法。blog

这通常被称为在超参数空间中“搜索”最佳值。在下面的可视化中,$x$和$y$维度表示两个超参数,$z$维度表示由$x$和$y$定义的体系结构的模型分数(由某些评估度量定义)。

构建此类模型时,需要考虑的两个重要超参数是:

  • 有多少估计器(即,决策树)我应该使用吗?
  • 每个诊断树的最大允许深度是多少?

网格搜索可以说是最基本的超参数调优方法。使用此技术,我们只需为提供的所有超参数值的每个可能组合构建一个模型,评估每个模型,并选择产生最佳结果的体系结构。

每个模型都将与训练数据相匹配,并根据验证数据进行评估。如您所见,这是对超参数空间的详尽采样,效率可能非常低。

随机搜索与网格搜索的不同之处在于,我们不再为每个超参数提供一组离散的值来探索;相反,我们为每个超参数提供一个统计分布,从中可以随机抽样值。

在下面的示例中,我们在一个超参数空间中进行搜索,其中一个超参数对优化模型分数的影响明显更大-每个轴上显示的分布表示模型的分数。在每种情况下,我们都在评估九种不同的模型。网格搜索策略明目张胆地错过了最优模型,并且花费了多余的时间来探索不重要的参数。在此网格搜索过程中,我们隔离每个超参数,并在保持所有其他超参数不变的情况下搜索可能的最佳值。对于正在研究的超参数对结果模型分数影响很小的情况,这会导致努力的浪费。相反,随机搜索大大提高了探索力,可以集中精力为重要的超参数寻找最优值。

如您所见,此搜索方法在假设并非所有超参数都同等重要的情况下工作得最好。虽然情况并不总是如此,但这个假设对大多数数据集都是正确的。

前两种方法分别进行实验,使用不同的超参数值建立模型,并记录每个超参数值的模型性能。因为每个实验都是单独执行的,所以很容易将此过程并行化。然而,由于每个实验都是孤立进行的,我们无法使用一个实验的信息来改进下一个实验。贝叶斯优化属于一类序贯基于模型的优化(SMBO)算法,它允许人们使用我们上一次迭代的结果来改进下一次实验的抽样方法。

我们将首先定义一个用超参数$\lambda$构造的模型,在训练之后,根据某个评估度量给它打分$v$。接下来,我们使用先前评估的超参数值来计算超参数空间的后验期望。然后,我们可以根据这个后验期望选择最优的超参数值作为下一个候选模型。我们反复重复这个过程,直到收敛到最优。

我们将使用高斯过程对模型分数在超参数空间中的先验概率进行建模。此模型实质上将用于使用超参数值$λ_{1,…i}$和相应分数$v_{1,…到目前为止,我们已经观察到在超参数空间上近似一个连续的分数函数。该近似函数还包括我们估计的确定性程度,我们可以使用它来识别将产生比当前分数最大预期改善的候选超参数值。期望改进网络的公式被称为我们的获取函数,它代表了我们的得分函数在超参数空间上的后验分布。

此博客将向您概述CNN架构,如LeNet-5、AlexNet、VGG-16、Inception-v1、Inception-v3、ResNet-50、Xception、Inception-v4、Inception-ResNets、ResNeXt-50。blog

在机器学习的背景下,注意力是一种模仿认知注意力的技术,其定义是选择并集中于相关刺激的能力。换句话说,注意力是一种试图强化重要部分而淡化无关信息的方法。

注意力模型有四大类。每个类别都有不同类型的注意模型。虽然这些类别是相互排斥的,但我们可以使用不同类别的组合来应用注意力模型。因此,这些类别也可以被认为是维度。

  • 序列数:在不同注意模型中,来自编解码器的候选状态和查询状态属于两个不同的输入和输出序列。共同注意模型同时具有多个输入序列。注意力权重是基于所有输入序列学习的。共同注意模型可以用于图像输入。在推荐和文本分类问题中,输入是按顺序进行的,但输出不是顺序。对于这样的问题,在候选状态和查询状态都属于同一输入序列的情况下使用自我注意。
  • 抽象数量:具有单级抽象的注意力模型只计算原始输入序列的注意力权重。多级抽象注意模型将注意力应用于输入序列上的多个抽象级别。在这种类型的关注中,较低抽象级别的上下文向量成为高级抽象的查询状态。这类模型可以进一步分为自上而下或自下而上的模型。
  • 位置数:在这类注意力模型中,根据计算注意力函数的输入序列位置对模型进行进一步分类。在软注意模型中,上下文向量是使用输入序列的所有隐藏阶段的加权平均来计算的。这些模型使神经网络能够有效地从反向传播中学习。然而,这会导致二次计算损失。在硬注意模型中,上下文向量是使用在输入序列中随机采样的隐藏状态来构建的。全局注意模型类似于软注意模型,而局部注意模型介于软注意机制和硬注意机制之间。
  • 表征的数量:多表征注意模型通过多个特征表征确定输入序列的不同方面。使用关注度将权重重要性分配给这些多个特征表示,以确定哪些方面最相关。在多维关注中,生成权重以确定输入序列的每个维度的相关性。这些模型用于自然语言处理应用。

2.图像处理

图像只不过是介于0到255之间的数字(或像素)的二维数组。它由数学函数f(x,y)定义,其中x和y是水平和垂直的两个坐标。

任意点的f(x,y)值就是图像该点的像素值。

在此步骤中,我们将图像数据集的路径存储到一个变量中,然后创建一个函数将包含图像的文件夹加载到数组中。

我们可以选择的工具有很多,对于Kera,我们可以使用熊猫;对于pytorch,官方图像导入库更方便。

一些由相机捕获并输入到我们的AI算法的图像大小各不相同,因此,我们应该为所有输入到我们的AI算法的图像建立一个基本大小。

由于场景背后涉及的数学运算主要基于导数,因此边缘检测结果对图像噪声高度敏感。去除图像上的噪声的一种方法是应用高斯模糊对其进行平滑。高斯模糊(也称为高斯平滑)是由高斯函数模糊图像的结果。它是图形软件中广泛使用的效果,通常用于降低图像噪声。这种模糊技术的视觉效果是类似于通过半透明屏幕观看图像的平滑模糊,与通常照明下由失焦镜头或物体阴影产生的波克效果明显不同。为此,利用高斯核(3×3、5×5、7×7等…)应用图像卷积技术。内核大小取决于预期的模糊效果。基本上,内核越小,模糊就越不明显。

尺寸为(2k+1)×(2k+1)的高斯过滤核的方程为:$H_{i j}=\frac{1}{2\pi\sigma^{2}}\exp\Left(-\frac{(i-(k+1))^{2}+(j-(k+1))^{2}}{2\sigma^{2}\右);1\leq i,j\leq(2k+1)

在应用高斯模糊之后,我们得到以下结果:

梯度计算步骤通过使用边缘检测算子计算图像的梯度来检测边缘强度和方向。

边缘对应于像素强度的变化。要检测到它,最简单的方法是应用滤镜,在水平(X)和垂直(Y)两个方向上突出显示此强度变化。

当图像平滑时,导数ix和iy w.r.t.计算了x和y。它可以通过将i分别与Sobel内核Kx和Ky卷积来实现:$K_{x}=\Left(\Begin{array}{ccc}-1&0&1\-2&2&2&2&1&0&1\end{array}\right),K_{y}=\Left(\Begin{array}{ccc}1&2&1\0&0&0\-2&-1\end{array}\right)$

然后,坡度的震级G和坡度对齐如下计算:$\Begin{θ}|G|&=\sqrt{i_{x}^{2}+i_{y}^{2}}\\theta(x,y)&=\arctan\Left(\frac{i_{y}}{i_{x}}\Right)\End{Alignment}$

下面是如何将Sobel滤镜应用于图像,以及如何获取强度和边缘方向矩阵:

结果几乎和预期的一样,但是我们可以看到,有些边缘很厚,有些边缘很薄。非最大抑制步骤将帮助我们减轻较厚的压力。

理想情况下,最终图像应该有薄边。因此,我们必须执行非最大抑制来细化边缘。其原理很简单:该算法遍历梯度强度矩阵上的所有点,找出边缘方向上值最大的像素。

让我们举一个简单的例子:

左上角的红色方框出现在上面的图像上,表示正在处理的渐变强度矩阵的强度像素。相应的边方向由角度为-π弧度(+/-180度)的橙色箭头表示。

边缘方向是橙色虚线(从左到右水平)。该算法的目的是检查同一方向上的像素是否比正在处理的像素更强或更弱。在上面的示例中,正在处理像素$(i,j)$,同一方向上的像素以蓝色$(i,j-1)$和$(i,j+1)$突出显示。如果这两个像素中的一个比正在处理的像素更强烈,则只保留更强烈的一个。像素$(i,j-1)$似乎更强烈,因为它是白色的(值为255)。因此,当前像素$(i,j)$的强度值被设置为0。如果在边缘方向上没有像素具有更强烈的值,则保留当前像素的值。

现在我们来关注另一个例子:

在这种情况下,方向是橙色虚线对角线。因此,该方向上最强烈的像素是像素$(i-1,j+1)$。

让我们把这个总结一下。每个像素有两个主要标准(以弧度表示的边缘方向和像素强度(介于0-255之间))。基于这些输入,非最大值抑制步骤为:

  • 创建初始化为与原始梯度强度矩阵大小相同的0的矩阵;
  • 根据角度矩阵中的角度值识别边缘方向;
  • 检查同一方向的像素是否比当前处理的像素具有更高的强度;
  • 返回使用非最大值抑制算法处理过的图像。

结果是边缘更细的相同图像。然而,我们仍然可以注意到关于边缘强度的一些变化:一些像素似乎比其他像素更亮,我们将尝试用最后两个步骤来弥补这一缺点。

双阈值步骤旨在识别3种像素:强、弱和不相关:

  • 强像素是强度非常高的像素,我们确信它们对最终边缘有贡献。
  • 弱像素是这样的像素,其强度值不足以被视为强像素,但又不小到足以被认为与边缘检测无关。
  • 其他像素被认为与边缘无关。

现在您可以看到双重阈值是什么:

  • 高阈值用于识别较强的像素(强度高于高阈值)
  • 低阈值用于识别不相关的像素(强度低于低阈值)
  • 强度在两个阈值之间的所有像素都被标记为弱的,滞后机制(下一步)将帮助我们识别哪些可以被认为是强的,哪些被认为是不相关的。

此步骤的结果是只有2个像素强度值(强和弱)的图像:

3.目标检测

目标检测是以最高精度实时发现图像或视频中的所有可能的真实世界目标(如人脸、鲜花、汽车等)的过程。

这包括为对象定位和对象识别而设计和演示的R-CNN、Fast R-CNN和FAST-RCNN技术。

R-CNN系统由三个主要模块组成。最重要的模块使用一种称为选择性搜索的分割算法提取大约2000个区域提案,以找出图像的哪些部分最有可能包含对象。选择性搜索应用了多种不同的策略,因此它可以处理尽可能多的图像条件。该算法用不同比例的窗口扫描图像,并寻找具有相同颜色和纹理的相邻像素,同时还考虑了闪电条件。

第二个模块是一个大型卷积神经网络,它从选择性搜索返回的每个建议中提取固定长度的特征向量。无论大小或纵横比如何,候选区域都会经历图像变形以具有所需的输入大小。最后,最后的模块使用特定类别的线性支持向量机对每个区域进行分类。

R-CNN的训练和测试非常慢,按照今天的标准也不是很准确。然而,这是为Fast R-CNN和目前最先进的更快的R-CNN和Mask R-CNN铺平道路的一个基本方法。

FAST R-CNN是由R-CNN的作者之一提出的,是一个有价值的继任者。与R-CNN相比的一大改进是,Fast R-CNN在网络的一次正向遍历中计算整个输入图像的卷积特征映射,而不是为每个区域方案进行~2000次正演,从而使其速度更快。另一个改进是,该体系结构是端到端训练的,具有多任务损失,从而使训练更简单。

Fast R-CNN的输入是一张图像,以及一组对象提案。首先,它们通过一个全卷积网络得到卷积特征映射。接下来,对于每个对象建议,使用感兴趣区域(ROI)池层从特征地图提取固定长度的特征向量。FAST R-CNN使用完全连通的层将这些感兴趣区域映射成特征向量,最终输出Softmax概率和边界框,它们分别是对象的类别和位置。

它由两个模块组成:被称为区域提案网络(RPN)的CNN和快速R-CNN检测器。这两个模块合并到单个网络中,并进行端到端培训。

更快的R-CNN的作者在设计RPN时从注意力机制中获得了灵感,以强调输入图像中的重要内容。创建区域方案是通过在网络的最后一个共享卷积层上滑动一个小网络来完成的。小型网络需要卷积特征映射的(n×n)窗口作为输入。每个滑动窗口被映射到一个低维特征,因此就像以前一样,它被馈送到两个完全连接的层:盒分类层和盒回归层。

值得一提的是,边界框是相对于手工拾取的参考框(称为锚点)参数化的。换句话说,RPN预测四个校正坐标将锚点移动到正确位置并调整其大小,而不是图像上的坐标。更快的R-CNN默认使用3个比例和3个纵横比,导致每个滑动窗口有9个锚点。

更快的R-CNN被认为是最先进的,它当然是物体检测的最佳选择之一。然而,它不提供对检测到的对象的分割,即它不能定位对象的确切像素,而只是定位其周围的边界框。在许多情况下,这是不必要的,但当它是需要的时候,Mask R-CNN应该是第一个想到的。

Facebook AI Research(FAIL)的Mask R-CNN作者扩展了更快的R-CNN来执行实例分割,以及类和边界框。实例分割是对象检测和语义分割的结合,这意味着它既检测到一张图像中的所有对象,又对每个实例进行分割,同时将其与实例的睡觉区分开来。

Mask R-CNN的第一阶段(区域建议)与其前身相同,而在第二阶段,它平行于类和边界框输出每个ROI的二进制掩码。此二进制掩码表示像素是否为任何对象的一部分,而不考虑类别。像素的类将简单地由它们所在的边界框指定,这使得模型更容易训练。

第二阶段的另一个不同之处在于,Fast R-CNN中引入的ROI池化层(RoIPool)被RoIAlign取代。使用RoIPool执行实例分割会导致许多像素方向的不准确,即与原始图像相比,特征图未对齐。这是因为RoIPool对感兴趣的区域执行量化,包括在生成的功能地图中将浮点值舍入为十进制值。另一方面,改进的RoIAlign通过完全避免任何量化,而不是使用双线性插值来计算输入特征的精确值,从而正确地将提取的特征与输入对齐。

我们现在正在将重点从以精度为导向的解决方案切换到以速度为导向的解决方案。你只看一次(YOLO)是当今最流行的物体检测方法,这是有充分理由的。它能够以最小的延迟处理实时视频,同时保持相当的准确性。顾名思义,它只需要一次前向传播就可以检测出一幅图像中的所有目标。

最后一次迭代是YOLOv3,与前一个版本相比,它更大,在小对象上更精确,但在大对象上略差。在YOLOv3中,使用了Darknet-53(具有剩余连接的53层CNN),这与YOLOv2之前的Darknet-19(19层CNN)相比是一个相当大的飞跃。YOLOv3

与以前的YOLO版本输出边界框、置信度和类别不同,YOLOv3在网络的不同深度上以3个不同的比例预测边界框。图像上的最终对象检测是使用非最大抑制(NMS)来决定的,NMS是一种简单的方法,可以移除彼此重叠超过预定义的交集(IOU)阈值的边界框。在这种重叠冲突中,YOLO分配的置信度最大的包围盒获胜,其他包围盒被丢弃。

就像在更快的R-CNN中一样,框值是相对于参考锚点的。然而,它不是对任何任务都有相同的手工挑选的锚,而是在训练数据集上使用k-均值聚类来找到任务的最佳锚。YOLOv3的默认锚点数量是9个。Softmax没有用于类别预测,而是多个独立的逻辑分类器,使用二进制交叉熵损失进行训练,这可能也会让人感到惊讶。

单次放炮多盒探测器(SSD)在YOLO之后几个月问世,是一种有价值的替代品。与YOLO类似,目标检测在网络的单个前向传播中完成。这个端到端的CNN模型将输入图像通过一系列卷积层,生成沿途不同尺度的候选边界框。

作为训练的基础事实,SSD将被标记的对象视为正例,而与正例不重叠的任何其他边界框都是反例。事实证明,以这种方式构建数据集会使其非常不平衡。为此,SSD在执行NMS之后立即应用了一种称为硬否定挖掘的方法。硬否定挖掘是一种只选取置信度最高的否定样本的方法,使得正负样本的比例最多为1:3,这使得优化速度更快,训练阶段更稳定。

在上图(可以在官方论文中找到)中,我们可以看到主干网络是VGG-16。然而,如今我们经常可以看到带有ResNet、Inception甚至MobileNet主干的SSD。

Detectron2是Facebook AI Research的下一代库,提供最先进的检测和分割算法。Detectron2

此外,更多细节将写在这个博客-2020年的目标检测和跟踪中。blog — Object Detection and Tracking in 2020.

4.图像分割

图像分割是对图像中的区域进行标记的过程,通常精确到像素级。有两种常见的图像分割类型:

  • 实例分段:此过程为一个或多个对象类的每个单独实例提供不同的标签。在包含多个人的全家福照片中,这种类型的模型会自动用不同的颜色突出显示每个人。
  • 语义分割:此过程根据图像所代表的对象或纹理的类别来标记图像的每个像素。例如,城市街道场景图像中的像素可能被标记为“人行道”、“人行道”、“建筑物”、“行人”或“车辆”。

细分模型适用于各种任务,包括:

  • 自动驾驶汽车:我们需要让汽车具备必要的感知能力,以了解它们的环境,这样自动驾驶汽车才能安全地融入我们现有的道路。
  • 医学影像诊断:机器可以增强放射科医生进行的分析,大大减少运行诊断测试所需的时间。

H.Noh等人。(2015)已经发布了由两个链接部分组成的端到端模型。第一部分是采用VGG16架构的卷积网络。它将实例建议作为输入,例如由对象检测模型生成的边界框。该方案通过卷积网络进行处理和变换,以生成特征向量。

第二部分是反卷积网络,以特征向量为输入,生成每个类别的像素概率图。去卷积网络使用针对最大激活的解集来保持信息在地图中的位置。第二个网络还使用将单个输入与多个特征地图相关联的去卷积。去卷积在保持信息密集的同时扩展了特征地图。

作者分析了反褶积特征图,他们注意到低级别的特征图是特定于形状的,而高级别的特征图有助于对建议进行分类。最后,当一幅图像的所有方案都被整个网络处理后,将这些地图进行拼接,得到完全分割的图像。该网络在2012年的Pascal VOC细分挑战赛中获得了72.5%的MIU。

U-Net建立在从上面开始的完全卷积网络之上。它是为了医学目的而建造的,用来发现肺部或大脑中的肿瘤。它还包括编码器和解码器,编码器将输入图像下采样为特征映射,解码器使用学习的反卷积层将特征映射上采样为输入图像大小。

U-Net为解决这一信息丢失问题提供了一种新的途径。如上图所示,它建议将信息从编码器中对应的下采样层发送到解码器中的每个上采样层,从而捕获更精细的信息,同时也保持较低的计算量。由于编码器开始处的层具有更多的信息,它们将通过提供与输入图像相对应的精细细节来支持解码器的上采样操作,从而极大地提高了结果。

更多细节都写在这个博客里。Pytorch-semseg旨在反映PyTorch中流行的语义分割体系结构。此外,下面是语义分割的完整列表。blog. Pytorch-semseg a full list

5.图像生成(GAN)

产生式对抗网络是一类功能强大的神经网络,具有广泛的应用前景。它们本质上是由两个神经网络组成的系统-生成器和鉴别器-相互决斗。在这里,甘肃实验室就是它的展示台。GAN lab

这是甘肃风景的地图:

这个博客会让你对GAN有一个全面的了解。这里列出了令人敬畏的GAN应用程序和演示以及GAN Zoo的精选列表。blog list of awesome GAN applications and demonstrations GAN Zoo

最初发表于https://github.com.https://github.com

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/27/%e8%ae%a1%e7%ae%97%e6%9c%ba%e8%a7%86%e8%a7%89%e7%bb%bc%e8%bf%b0-2/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK