你想做计算机视觉吗?今天,深度学习是必经之路。大规模数据集和深度卷积神经网络(CNN)的表示能力提供了超精确和强大的模型。但仍然只有一个挑战:如何设计模型?在像计算机视觉这样广泛而复杂的领域中,解决方案并不总是清晰明了。计算机视觉中的许多标准任务需要特别考虑:分类、检测、分割、姿势估计、增强和恢复以及动作识别。尽管最先进的网络表现出共同的模式,但它们都需要自己独特的设计。那么,我们如何为所有这些不同的任务建立模型呢?作者在这里向您展示如何用深度学习来做计算机视觉中的一切!分类计算机视觉以分类而闻名。图像分类网络从固定大小的输入开始。输入图像可以有任意数量的通道,但对于RGB图像通常为3个。在设计网络时,分辨率在技术上可以是任意大小,只要它足够大以支持将在整个网络中完成的下采样量。例如,如果您在网络中下采样4个像素,则您的输入大小应至少为42=16x16像素。随着我们深入网络,空间分辨率将降低,因为我们试图将所有信息压缩为一维向量表示。为了确保网络始终能够处理它提取的所有信息,我们增加了与深度成比例的特征图的数量,以适应??空间分辨率的降低。也就是说,我们在下采样过程中丢失了空间信息,为了适应这种损失,我们扩展了特征图来增加我们的语义信息。选择一定量的下采样后,将特征图矢量化并输入到一系列全连接层中。最后一层的输出与数据集中的类一样多。目标检测目标检测器有两种类型:一级和二级。它们都以锚框开始。这些是默认边界框。我们的检测器不是直接预测框,而是预测这些框与地面实况之间的差异。在两级检测器中,我们自然有两个网络:建议框网络和分类网络。当一个对象被认为可能存在时,框提议网络为边界框提供坐标。同样,这些是相对于锚框的。然后,分类网络获取每个边界框内的潜在对象进行分类。在单级检测器中,提议和分类器网络融合到一个阶段中。网络直接预测边界框坐标和该框内的类别。因为两个阶段融合在一起,初级检测器往往比次级检测器更快。但由于两个任务的分离,二级检测器具有更高的精度。FastRCNN二级目标检测架构SSD一级目标检测架构分割是计算机视觉中比较独特的任务之一,因为网络需要同时学习低级和高级信息。低级信息允许对图像中的每个区域和对象进行精确的逐像素分割,而高级信息直接对这些像素进行分类。这导致网络设计为将来自较早层和高分辨率(低级空间信息)的信息与更深层和低分辨率(高级语义信息)相结合。如下所示,我们首先通过标准分类网络运行图像。然后我们从网络的每个阶段提取特征,从而使用从低到高的信息。每个级别的信息在依次组合之前都是独立处理的。结合这些信息后,我们对特征图进行上采样,最终以全图像分辨率结束。有关分割如何与深度学习一起工作的更多详细信息,请查看这篇文章:https://towardsdatascience.com/semantic-segmentation-with-deep-learning-a-guide-and-code-e52fc8958823GCNSegmentationArchitecturePoseEstimationApose估计模型需要完成两个任务:(1)检测图像中每个身体部位的关键点;(2)弄清楚如何正确连接这些关键点。这是通过以下三个阶段完成的:使用标准分类网络从图像中提取特征。鉴于这些特征,可以训练一个子网络来预测一组二维热图。每个热图都与一个特定的关键点相关联,并包含每个图像像素关于关键点是否可能存在的置信度值。再次给出分类网络的特征,我们训练一个子网络来预测一组二维向量场,其中每个向量场编码关键点之间的关联度。然后,具有更高相关性的关键点被称为连接。具有以这种方式训练的子网络的模型可以共同优化关键点的检测并将它们连接在一起。OpenPose姿态估计架构增强和恢复增强和恢复网络是它们自己独特的野兽。我们不对此进行任何下采样,因为我们真正关心的是高像素/空间精度。下采样会真正杀死这些信息,因为它会减少我们为空间精度而拥有的像素数量。相反,所有处理都是在全图像分辨率下完成的。我们首先将我们想要增强/恢复的图像以全分辨率传递给我们的网络,而不进行任何修改。该网络仅由许多卷积和激活函数组成。这些块经常受到启发,有时直接复制最初为图像分类开发的块,例如残差块、密集块、挤压激励块等。最后一层没有激活函数,甚至没有sigmoid或softmax,因为我们想直接预测图像像素,而不需要任何概率或分数。这就是所有这些类型的网络。广泛的处理是在图像的全分辨率下完成的,以实现高空间精度,使用与其他任务相同的卷积。EDSR超分辨率架构动作识别动作识别是为数不多的需要视频数据才能正常运行的应用程序之一。为了对动作进行分类,我们需要了解场景随时间的变化,这自然会把我们引向视频。我们的网络必须经过训练才能学习时空信息,即空间的变化。最完美的网络是3D-CNN。顾名思义,3D-CNN是一种使用3D卷积的卷积网络。它们与常规CNN的不同之处在于卷积应用于3个维度:宽度、高度和时间。因此,每个输出像素都是通过基于其周围像素以及同一位置的前一帧和后一帧中的像素的计算来预测的。直接批量传送图片视频帧可以通过以下几种方式传送:1.直接批量传送,比如第一张图。由于我们正在传递一系列帧,因此空间和时间信息都可用。Singleframe+opticalflow(left)Video+opticalflow(right)2.我们还可以在流中传递单个图像帧(数据的空间信息)及其对应的来自视频的光流表示(数据的空间信息)时间信息)。我们将使用常规的2DCNN从两者中提取特征,然后将它们组合并将它们传递给我们的3DCNN,后者结合了两种类型的信息。3.将帧序列传递给一个3DCNN,并将视频的光流表示传递给另一个3DCNN。两个数据流都有可用的空间和时间信息。鉴于我们正在对视频的两种不同表示形式进行临时处理(均包含我们的所有信息),这是最慢的选项,但也可能是最准确的选项。所有这些网络都输出视频的动作分类。原文:https://towardsdatascience.com/how-to-do-everything-in-computer-vision-2b442c469928
