SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation----2016 SegNet论文解读

news/2024/11/7 9:32:42/

SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

Abstract

我们提出了一种新颖实用的深度全卷积神经网络体系结构,用于语义像素分割,称为SegNet。这个核心的可训练分段引擎由一个编码器网络,一个相应的解码器网络以及一个逐像素分类层组成。编码器网络的架构在拓扑上与VGG16网络中的13个卷积层相同[1]。解码器网络的作用是将低分辨率编码器特征图映射到全输入分辨率特征图,以进行像素分类。 SegNet的新颖之处在于解码器对其较低分辨率的输入特征图进行升采样的方式。具体地,解码器使用在相应编码器的最大合并步骤中计算的合并索引来执行非线性上采样。这消除了学习上采样的需要。上采样的地图是稀疏的,然后与可训练的滤波器卷积以生成密集的特征图。我们将我们提出的架构与广泛采用的FCN [2]以及著名的DeepLab-LargeFOV [3],DeconvNet [4]架构进行了比较。这种比较揭示了实现良好的分割性能所涉及的内存与准确性之间的权衡。

SegNet主要是由场景理解应用程序驱动的,因此,它被设计为在推理过程中的内存和计算时间方面都非常有效。 与其他竞争架构相比,它的可训练参数数量也明显更少,并且可以使用随机梯度下降进行端到端训练。 我们还在道路场景和SUN RGB-D室内场景分割任务上执行了SegNet和其他体系结构的受控基准测试。 这些定量评估表明,与其他架构相比,SegNet在竞争性推理时间和最有效的推理存储方面提供了良好的性能。 我们还在以下位置提供了SegNet的Caffe实现和Web演示: http://mi.eng.cam.ac.uk/projects/segnet/.

Index Terms:深度卷积神经网络,语义像素分割,室内场景,道路场景,编码器,解码器,合并,上采样。

1 INTRODUCTION

语义分割具有广泛的应用,从场景理解,推断对象之间的支持关系到自动驾驶。依赖于低级视觉提示的早期方法已迅速被流行的机器学习算法所取代。特别是,深度学习最近在手写数字识别,语音,将整个图像分类和检测图像中的对象方面取得了巨大的成功[5],[6]。现在,人们对语义像素标注[7] [8],[9],[2],[4],[10],[11],[12],[13],[3],[14],[15],[16]充满兴趣。然而,这些最近的一些方法试图直接采用针对类别预测而设计的深层体系结构来进行像素标记[7]。结果虽然令人鼓舞,但看起来很粗糙[3]。这主要是因为最大池化和子采样降低了特征图的分辨率。我们设计SegNet的动机源于将低分辨率功能映射到输入分辨率以进行像素分类的需求。此映射必须产生对准确的边界定位有用的特征。

我们的架构SegNet被设计为一种高效的架构,用于逐像素语义分割。它主要是由需要了解外观(道路,建筑物),形状(汽车,行人)并了解不同类别(例如道路和人行道)之间的空间关系(上下文)的能力的道路场景理解应用程序激发的。在典型的道路场景中,大多数像素属于大类,例如道路,建筑物,因此网络必须产生平滑的分割。尽管尺寸很小,引擎也必须能够根据其形状描绘对象。因此,在提取的图像表示中保留边界信息很重要。从计算的角度来看,网络在推理过程中的存储和计算时间方面都必须高效。使用高效的权重更新技术(例如随机梯度下降(SGD)[17])来端对端训练以便共同优化网络中所有权重的能力是一个额外的好处,因为它更容易重复。 SegNet的设计源于满足这些标准的需求。

SegNet中的编码器网络在拓扑上与VGG16 [1]中的卷积层相同。我们删除了VGG16的完全连接层,这使得SegNet编码器网络比许多其他最近的体系结构[2],[4],[11],[18]明显更小且更易于训练。 SegNet的关键组件是解码器网络,该网络由与每个编码器相对应的一个解码器层次结构组成。其中,适当的解码器使用从相应编码器接收的最大池索引来对其输入特征图进行非线性上采样。这个想法的灵感来自为无监督特征学习设计的体系结构[19]。在解码过程中重用最大池索引有一些实际的优势。 (i)改善边界描绘,(ii)减少启用端到端训练的参数数量,并且(iii)这种上采样形式可以合并到任何编码器-解码器体系结构中,例如[2],[10 ],只需稍作修改。

在这里插入图片描述
本文的主要贡献之一是我们对SegNet解码技术和广泛使用的全卷积网络(FCN)的分析[2]。这是为了传达设计分段架构所涉及的实际取舍。最新的用于分割的深度架构具有相同的编码器网络,即VGG16,但在解码器网络,训练和推理的形式上有所不同。另一个共同的特征是它们具有数亿个数量级的可训练参数,因此在进行端到端训练时会遇到困难[4]。训练这些网络的困难导致了多阶段训练[2],将网络附加到诸如FCN [10]之类的预先训练的体系结构中,使用了诸如区域建议推理之类的辅助手段[4],分类的不连续训练和细分网络[18],以及使用其他培训数据进行预培训[11] [20]或进行全面培训[10]。此外,提高性能的后处理技术[3]也很流行。尽管所有这些因素都可以提高具有挑战性的基准测试的性能[21],但不幸的是,从其定量结果来看,很难弄清实现良好性能所需的关键设计因素。因此,我们分析了其中一些方法[2],[4]中使用的解码过程,并揭示了它们的优缺点。

我们评估SegNet在两个场景分割任务上的性能,CamVid道路场景分割[22]和SUN RGB-D室内场景分割[23]。多年来,Pascal VOC12 [21]一直是细分的基准挑战。但是,此任务的大部分具有一个或两个前景类,周围背景千差万别。这暗示了用于检测的技术,如最近在去耦的分类分段网络[18]上的工作所示,其中可以使用大量的弱标记数据来训练分类网络,并且可以改善独立的分段网络的性能。文献[3]的方法还使用分类网络的特征图和独立的CRF后处理技术进行分割。通过使用其他推理辅助工具(例如区域提案[4],[24])也可以提高性能。因此,这与场景理解的概念不同,后者的思想是利用对象和其他空间上下文的共现来执行鲁棒的分割。为证明SegNet的有效性,我们提供了道路场景分割的实时在线演示,将其分成11个部分自动驾驶感兴趣的类别(请参见图1中的链接)。图1显示了一些示例结果,这些结果是从Google随机采样的道路场景图像和SUN RGB-D数据集[23]的室内测试场景产生的。

在本文的其余部分安排如下。 在第2节中,我们回顾了相关的最新文献。 我们将在第3节中描述SegNet架构及其分析。 在第4节中我们评估了SegNet在室外和室内场景数据集上的性能。 接下来在第5节中是关于我们的方法的一般性讨论,并指出了未来的工作。我们在第6节中总结。

2 LITERATURE REVIEW(文献综述)

语义像素分割是研究的一个活跃主题,其挑战性的数据集[21],[22],[23],[25],[26]为其提供了动力。在深度网络到来之前,性能最好的方法主要取决于手工设计的功能,这些功能可独立对像素进行分类。通常,图像块被馈送到分类器中,例如。随机森林[27],[28]或Boosting [29],[30]来预测中心像素的类概率。基于外观[27]或SfM和外观[28],[29],[30]的特征已被用于CamVid道路场景理解测试[22]。然后,通过使用成对或更高阶的CRF [29],[30]来平滑来自分类器的这些每像素噪声预测(通常称为一元项),以提高准确性。较新的方法旨在通过尝试预测中所有像素的标签而不是仅中心像素来产生高质量的一元图像。这改善了基于随机森林的一元图像的结果[31],但薄结构类的分类很差。从CamVid视频中计算出的密集深度图也已被用作使用随机森林进行分类的输入[32]。另一种方法则主张结合使用流行的手工设计特征和时空超像素化技术来获得更高的精度[33]。 CamVid测试[30]上性能最好的技术通过将对象检测输出与CRF框架中的分类器预测结合起来,解决了标签频率之间的不平衡问题。所有这些技术的结果表明需要改进分类功能。

自从NYU数据集发布以来,室内RGBD像素级语义分割也得到了普及[25]。该数据集显示了深度通道对改进分割的有用性。他们的方法使用RGB-SIFT,depth-SIFT和像素位置等功能作为神经网络分类器的输入,以预测像素一元。然后,使用CRF对嘈杂的一元数进行平滑处理。使用更丰富的功能集(包括LBP和区域分割)进行了改进,以获得更高的准确性[34],随后进行了CRF。在最近的工作中[25],使用RGB和基于深度的线索的组合一起推断了类别细分和支持关系。另一种方法专注于实时联合重建和语义分割,其中随机森林被用作分类器[35]。 Gupta等。 [36]在执行类别分割之前使用边界检测和层次分组。所有这些方法的共同属性是使用手工设计的功能对RGB或RGBD图像进行分类。

深度卷积神经网络用于对象分类的成功最近促使研究人员将其特征学习功能用于结构化预测问题,例如分割。也已经尝试将为对象分类而设计的网络应用于分割,特别是通过在块中复制最深层的特征以匹配图像尺寸[7],[37],[38],[39]。然而,由此产生的分类是块状的[38]。使用递归神经网络的另一种方法[40]合并了几个低分辨率预测,以创建输入图像分辨率预测。这些技术已经是对手工设计特征的一种改进[7],但是它们划定边界的能力很差。

专为分段设计的较新的深层架构[2],[4],[10],[13],[18]通过学习将低分辨率图像表示解码或映射到像素级,从而提高了最新技术水平预测。在所有这些架构中产生这些低分辨率表示的编码器网络是VGG16分类网络[1],它具有13个卷积层和3个完全连接的层。通常在大型ImageNet对象分类数据集中对编码器网络权重进行预训练[41]。 解码器网络在这些架构之间有所不同,并且是负责为每个像素生成多维特征以进行分类的部分。

完全卷积网络(FCN)架构[2]中的每个解码器都学习对其输入特征图进行上采样,并将它们与相应的编码器特征图结合起来,以产生到下一个解码器的输入。它是一种架构,在编码器网络(134M)中具有大量可训练的参数,但在解码器网络(0.5M)中却很小。该网络的整体规模很大,因此很难对相关任务进行端到端培训。因此,作者使用了分阶段的培训过程。此处,解码器网络中的每个解码器都逐渐添加到现有的经过训练的网络中。网络不断增长,直到观察不到性能进一步提高**。在三个解码器之后,这种增长就停止了,因此忽略高分辨率特征图肯定会导致边缘信息的丢失[4]。**除了与训练有关的问题外,还需要在解码器中重用编码器功能图,从而使其在测试时间占用大量内存。我们将更详细地研究此网络,因为它是其他近期体系结构的核心[10],[11]。

通过为FCN附加递归神经网络(RNN)[10]并在大型数据集上对其进行微调,可以进一步改善FCN的预测性能[21],[42]。 RNN层在利用FCN的特征表示功能的同时,模仿了CRF的清晰边界描绘功能。它们显示出比FCN-8显着的改进,但也表明当使用更多的训练数据来训练FCN-8时,这种差异会减小。当CRF-RNN与FCN-8这样的体系结构共同训练时,它的主要优势就显现出来了。最近的其他结果也显示了联合训练有帮助的事实[43],[44]。有趣的是,反卷积网络[4]的性能明显优于FCN,尽管要付出更复杂的训练和推理的代价。然而,这提出了一个问题,即随着核心前馈分割引擎变得更好,CRF-RNN的感知优势是否会降低。无论如何,CRF-RNN网络都可以附加到包括SegNet在内的任何深度细分架构中。

多尺度深层架构也正在被追求[13],[44]。它们有两种风格:(i)使用少量比例的输入图像和相应的深度特征提取网络,以及(ii)组合来自单个深度架构不同层的特征图的那些[45] [11]。共同的想法是使用在多个尺度上提取的特征来提供局部和全局上下文[46],早期编码层的使用特征图保留了更多的高频细节,从而导致了更清晰的类边界。这些架构中的一些由于其参数大小而难以训练[13]。因此,采用了多阶段训练过程以及数据增强。使用多个卷积路径进行特征提取的推断也很昂贵。其他人[44]将CRF附加到他们的多尺度网络并联合训练它们。但是,这些在测试时不是前馈的,需要优化以确定MAP标签。

最近提出的一些用于分割的深度架构在推理时间上不是前馈[4],[3],[18]。它们需要基于CRF的MAP推理[44],[43]或区域提案等辅助工具[4]进行推断。我们认为,使用CRF所获得的性能提升是由于其核心前馈分段引擎中缺乏良好的解码技术。另一方面,SegNet使用解码器来获取特征以进行精确的像素分类。

在这里插入图片描述
图2. SegNet架构的示意图。 没有完全连接的层,因此只是卷积。 解码器使用来自其编码器的传输池索引对输入进行上采样,以生成稀疏特征图。 然后,它与可训练的滤波器组进行卷积以精化特征图。 最终的解码器输出特征图会馈送到soft-max分类器,以进行像素分类。

最近提出的解卷积网络[4]及其半监督变体解耦网络[18]使用编码器特征图的最大位置(池索引)在解码器网络中执行非线性上采样。这些体系结构的作者独立于SegNet(首次提交给CVPR 2015 [12]),提出了在解码器网络中进行解码的想法。但是,它们的编码器网络由来自VGG-16网络的完全连接的层组成,该层由其整个网络的大约90%的参数组成。这使得对其网络的培训非常困难,因此需要其他帮助,例如使用区域建议来进行培训。此外,在推理过程中会使用这些建议,这会大大增加推理时间。从基准测试的角度来看,这也使得在没有其他帮助的情况下很难评估其体系结构(编码器-解码器网络)的性能。在这项工作中,我们丢弃了VGG16编码器网络的完全连接的层,这使我们能够使用SGD优化的相关训练集来训练网络。最近的另一种方法[3]显示了在不牺牲性能的情况下显着减少参数数量,减少内存消耗和缩短推理时间的好处。

我们的工作受到了Ranzato等人提出的无监督特征学习体系结构的启发。 [19]。关键学习模块是编码器-解码器网络。编码器由带滤波器组的卷积,逐元素tanh非线性,最大池化和子采样组成,以获取特征图。对于每个样本,在合并期间计算出的最大位置的索引将存储并传递到解码器。解码器通过使用存储的合并索引对特征图进行上采样。它使用可训练的解码器滤波器组对这个上采样的地图进行卷积,以重建输入图像。该体系结构用于分类的无监督预训练。某种相似的解码技术用于可视化训练的卷积网络[47]进行分类。 Ranzato等人的体系结构。主要侧重于使用小输入补丁的逐层特征学习。 Kavukcuoglu等人对此进行了扩展。等[48]接受完整图像尺寸作为学习分层编码器的输入。但是,这两种方法都没有尝试将深度编码器-解码器网络用于无监督的特征训练,因为它们在每次编码器训练后都丢弃了解码器。在这里,SegNet与这些体系结构不同,因为深度编码器-解码器网络针对有监督的学习任务而共同训练,因此,解码器在测试时间内是网络的组成部分。

使用深度网络进行逐像素预测的其他应用是图像超分辨率[49]和来自单个图像的深度图预测[50]。 [50]中的作者讨论了学习从低分辨率特征图上采样的需求,这是本文的主题。

3 ARCHITECTURE

**SegNet具有一个编码器网络和一个相应的解码器网络,后面是最终的按像素分类层。**此体系结构如图3所示。编码器网络由13个卷积层组成,这些卷积层对应于VGG16网络[1]中为对象分类而设计的前13个卷积层。因此,我们可以根据在大型数据集上进行分类训练的权重来初始化训练过程[41]。我们也可以丢弃完全连接的层,以便在最深的编码器输出端保留更高分辨率的特征图。与其他最新架构[2],[4](请参阅表6)相比,这也大大减少了SegNet编码器网络中的参数数量(从134M减少到14.7M)。每个编码器层都有一个对应的解码器层,因此解码器网络具有13个层。最终的解码器输出被馈送到多类soft-max分类器,以独立产生每个像素的类概率。

编码器网络中的每个编码器都与滤波器组进行卷积,以生成一组特征图。然后将它们批量标准化[51],[52]。然后,应用基于元素的整流线性非线性(ReLU)max(0,x)。随后,执行具有2×2窗口和跨度2(非重叠窗口)的最大合并,并且将结果输出以2倍因子进行二次采样。最大合并用于在输入图像中的较小空间移位上实现平移不变性。子采样会导致特征图中每个像素的输入图像上下文较大(空间窗口)。尽管多层最大池化和子采样可以相应地实现更多的平移不变性以进行鲁棒分类,但会损失特征图的空间分辨率。越来越多的有损(边界细节)图像表示对于边界轮廓至关重要的分割不利。因此,必须在执行子采样之前在编码器特征图中捕获并存储边界信息。如果推理期间的内存不受限制,则可以存储所有编码器功能图(二次采样后)。在实际应用中通常不是这种情况,因此我们提出了一种更有效的方式来存储此信息。它涉及仅存储最大池索引,即针对每个编码器特征图存储每个池窗口中最大特征值的位置。原则上,可以为每个2×2合并窗口使用2位来完成此操作,因此与以浮点精度存储特征图相比,存储效率要高得多。正如我们稍后在工作中显示的那样,这种较低的内存存储会导致精度略有下降,但仍适合实际应用。

解码器网络中的适当解码器使用来自相应编码器特征图的存储的最大池索引,对其输入特征图进行上采样。此步骤将生成稀疏特征图。这种SegNet解码技术如图3所示。然后将这些特征图与可训练的解码器滤波器组卷积以生成密集的特征图。然后对这些图分别应用批处理归一化步骤。请注意,对应于第一个的解码器编码器(最接近输入图像)会生成多通道特征图,尽管其编码器输入具有3个通道(RGB)。这与网络中的其他解码器不同,后者生成的特征图的大小和通道数与其编码器输入相同。最终解码器的输出处的高维特征表示将被馈送到可训练的soft-max分类器。此soft-max对每个像素进行独立分类。 soft-max分类器的输出是概率的K通道图像,其中K是类别数。预测的分割对应于在每个像素处具有最大概率的类别。

我们在这里补充说,另外两个体系结构DeconvNet [53]和U-Net [16]与SegNet共享相似的体系结构,但有一些区别。 DeconvNet具有更大的参数化,需要更多的计算资源并且更难于端到端训练(表6),这主要是由于使用了完全连接的层(尽管以卷积方式)。我们将在本文的第4部分中报告与DeconvNet的一些比较。

与SegNet相比,U-Net [16](为医学成像社区建议)不重用池索引,而是将整个特征图(以更多的内存为代价)传输到相应的解码器,然后将它们连接起来进行上采样(通过去卷积)解码器功能图。与VGG网络架构一样,U-Net中没有conv5和max-pool 5块。另一方面,SegNet使用来自VGG net的所有预训练卷积层权重作为预训练权重。

3.1 Decoder Variants解码器变体

许多分段架构[2],[3],[4]共享相同的编码器网络,并且它们仅以其解码器网络的形式变化。 其中,我们选择将SegNet解码技术与广泛使用的全卷积网络(FCN)解码技术进行比较[2],[10]。

为了分析SegNet并将其性能与FCN(解码器变体)进行比较,我们使用较小版本的SegNet,即SegNet-Basic 1,它具有4个编码器和4个解码器。**SegNet-Basic中的所有编码器均执行最大池化和二次采样相应的解码器使用接收到的最大池索引对输入进行上采样。**在编码器和解码器网络中的每个卷积层之后都使用批处理归一化。卷积后不使用任何偏置,并且解码器网络中不存在ReLU非线性。此外,选择所有编码器和解码器层上恒定的7×7内核大小,以提供较宽的上下文以进行平滑标记,即,可以将最深层特征图(第4层)中的像素追溯到上下文中的上下文窗口。输入图像为106×106像素。 SegNet-Basic的体积很小,因此我们可以探索许多不同的变体(解码器)并在合理的时间内对其进行训练。类似地,我们创建了FCN-Basic,这是我们分析的FCN的可比较版本,它与SegNet-Basic共享相同的编码器网络,但在其所有解码器中都使用了FCN解码技术(参见图3)。

图3的左侧是SegNet(也是SegNet-Basic)使用的解码技术,在该过程中没有学习涉及上采样步骤。但是,上采样的映射图与可训练的多通道解码器滤波器卷积在一起,以增强其稀疏输入的密度。每个解码器滤波器具有与上采样特征图数量相同的通道数量。较小的变体是解码器滤波器是单通道的,即它们仅卷积其对应的上采样特征图。此变量(SegNet-Basic SingleChannelDecoder)大大减少了可训练参数的数量和推理时间。

在图3的右边是FCN(也是FCN-Basic)解码技术。 FCN模型的重要设计元素是编码器特征图的降维步骤。这压缩了编码器特征图,然后在相应的解码器中使用。编码器特征图(例如64个通道)的降维是通过将它们与1×1×64×K可训练滤波器进行卷积来实现的,其中K是类别数。压缩的K通道最终编码器层特征图是解码器网络的输入。在该网络的解码器中,使用固定或可训练的多通道上采样内核通过逆卷积执行上采样。我们将内核大小设置为8×8。这种上采样方式也称为反卷积。请注意,相比之下,SegNet使用可训练的解码器滤波器进行多通道卷积是在上采样以浓缩特征图之后执行的。 FCN中的上采样特征图具有K个通道。然后将其逐元素添加到相应的分辨率编码器特征图,以生成输出解码器特征图。使用双线性插值权重初始化上采样内核[2]。

FCN解码器模型需要在推理过程中存储编码器特征图。对于嵌入式应用程序,这可能会占用大量内存;例如以32位浮点精度存储180×240分辨率的FCN-Basic第一层的64个特征图需要11MB。可以使用11个特征图的降维方法将其缩小,这需要约1.9MB的存储空间;另一方面,SegNet的池索引的存储成本几乎可以忽略不计(如果每2×2池窗口使用2位存储,则为.17 MB) 。我们还可以创建FCN-Basic模型的变体,该模型放弃编码器特征图添加步骤,仅学习上采样内核(FCN-Basic-NoAddition)。

除了上述变体之外,我们还使用固定的双线性插值权重研究上采样,因此无需学习上采样(双线性插值)。在另一个极端,我们可以在SegNet解码器的每一层上将64个编码器特征图添加到相应的输出特征图,以创建SegNet(SegNet-Basic-EncoderAddition)占用更多内存的变体。这里使用了两个用于上采样的合并索引,然后是卷积步骤以使其稀疏输入致密,然后将其逐元素添加到相应的编码器特征图中以产生解码器输出。

另一个且占用更多内存的FCN-Basic变体(FCN-Basic-NoDimReduction)是不对编码器特征图执行降维的地方。这意味着与FCN-Basic不同,最终的编码器特征图在传递给解码器网络之前不会压缩到K个通道。因此,每个解码器末尾的通道数与相应的编码器(即64)相同。

我们还尝试了其他通用变体,其中特征图通过复制[7]或通过使用固定(且稀疏)的索引数组进行升采样而仅被升采样。 与上述变型相比,它们的性能相当差。 在编码器网络中没有最大池化和子采样的变体(解码器是冗余的)会消耗更多的内存,花费更长的时间进行收敛并且性能很差。 最后,请注意,为了鼓励复制结果,我们发布了所有变体2的Caffe实现。
在这里插入图片描述
图3. SegNet和FCN [2]解码器的示意图。 a,b,c,d对应于特征图中的值。 SegNet使用最大池索引对特征图进行上采样(不学习),并与可训练的解码器滤波器组进行卷积。 FCN通过学习去卷积输入特征图来进行上采样,并添加相应的编码器特征图以产生解码器输出。此特征图是相应编码器中最大池化层(包括子采样)的输出。 请注意,FCN中没有可训练的解码器过滤器。
在这里插入图片描述

3.2 Training**

我们使用CamVid道路场景数据集对解码器变体的性能进行基准测试。此数据集很小,由367个训练图像和233个测试RGB图像(白天和黄昏场景)以360×480分辨率组成。面临的挑战是将道路,建筑物,汽车,行人,标志,杆子,人行道等11类分类。我们对RGB输入执行局部对比度归一化[54]。

编码器和解码器的权重全部使用He等人(2003年)描述的技术进行初始化。 [55]。为了训练所有变体,我们使用SegNet-Basic的Caffe实现[56],使用固定学习率0.1和动量0.9 [17]的随机梯度下降(SGD)。我们训练变体,直到训练损失收敛为止。在每个时期之前,对训练集进行混洗,然后依次拾取每个小批量(12个图像),从而确保每个图像在一个时期中仅使用一次。我们选择在验证数据集上表现最高的模型。

我们使用交叉熵损失[2]作为训练网络的目标函数。在一个小批量生产中,对所有像素的损耗进行求和。当训练集中每个类别的像素数量变化较大时(例如,道路,天空和建筑物像素主导CamVid数据集),则需要根据真实类别对损失进行加权加权。这称为类平衡。我们使用中值频率平衡[13],其中在损失函数中分配给一个类的权重是在整个训练集上计算出的类频率的中值除以该类频率的比率。这意味着训练集中的较大类别的权重小于1,最小类别的权重最高。我们还尝试了在没有类别平衡的情况下或等效地使用自然频率平衡的情况下训练不同的变体。

3.3 Analysis

为了比较不同解码器变体的量化性能,我们使用了三种常用的性能度量:全局精度(G),它测量数据集中正确分类的像素的百分比,类平均精度(C)是整个范围内预测精度的平均值Pascal VOC12挑战[21]中使用的所有类和所有类的平均联合相交(mIoU)。 mIoU度量比类平均准确度更严格的度量,因为它会惩罚假阳性预测。但是,mIoU度量并未直接通过类平衡交叉熵损失进行优化。

**基准度量中最常用的是mIoU指标,即Jacard指数。**但是,Csurka等。 [57]请注意,该指标并不总是与高质量分割的人类定性判断(等级)相对应。他们举例说明mIoU有利于区域平滑度,并且不评估边界精度,FCN的作者最近也提到了这一点[58]。因此,他们建议使用基于伯克利轮廓匹配分数的边界度量对mIoU度量进行补充,该分数通常用于评估无监督图像分割质量[59]。 Csurka等。 [57]只是将其扩展到语义分割,并表明与mIoU度量结合使用的语义轮廓精度的度量更符合人类对分割输出的排名。

计算语义轮廓分数的关键思想是评估F1量度[59],该计算涉及在给定像素容限距离的情况下,计算预测真相类别边界与地面真伪类别边界之间的精度和查全率。我们使用图像对角线的0.75%作为容差距离。对地面真实性测试图像中存在的每个类别的F1量度进行平均,以生成图像F1量度。然后,我们计算整个测试集平均值,以图像F1度量的平均值表示边界F1-度量(BF)。

在对CamVid验证集进行优化的每1000次迭代之后,我们测试每个体系结构变体,直到训练损失收敛为止。训练小批量大小为12时,这大约对应于每33个历时(通过)测试一次训练集。在验证集的评估中,我们选择全局精度最高的迭代。我们将在暂存的CamVid测试集中报告这三个性能指标。尽管我们在训练变体时使用类平衡,但是实现高全局精度以实现整体平滑分割仍然很重要。另一个原因是,细分对自动驾驶的贡献主要是用于划分类别,例如道路,建筑物,人行道,天空。这些类别支配图像中的大多数像素,并且较高的全局精度对应于这些重要类别的良好分割。我们还观察到,当班级平均水平最高时报告数值性能通常可能对应于较低的全局准确度,表明感知上有噪声的分段输出。

在表1中,我们报告了分析的数值结果。我们还显示了可训练参数的大小以及最高分辨率特征图或池索引存储存储器,即最大池化和子采样后的第一层特征图。我们显示了使用Caffe实施的前向通过的平均时间,使用具有cuDNN v3加速功能的NVIDIA Titan GPU在360×480输入上平均进行了50次测量。我们注意到,SegNet变体中的上采样层并未使用cuDNN加速进行优化。我们显示了所选迭代中所有变体的测试和训练结果。结果也以表格形式列出,而没有用于训练和测试准确性的类平衡(自然频率)。下面我们用类平衡分析结果。

从表1中,我们看到,基于双线性插值的上采样在没有任何学习的情况下,基于所有精度度量,其表现最差。所有其他将学习用于上采样的方法(FCN-Basic及其变体),或者在上采样后学习解码器滤波器的方法(SegNet-Basic及其变体),其性能都明显更好。这强调需要学习用于分段的解码器。其他作者在将FCN与SegNet类型的解码技术进行比较时收集的实验证据也证明了这一点[4]。

当我们比较SegNet-Basic和FCN-Basic时,我们发现在所有精度指标上,两者在该测试中的表现均相同。区别在于SegNet在推理期间使用的内存更少,因为它仅存储最大池索引。另一方面,FCN-Basic完整存储编码器功能图,这会占用更多内存(多11倍)。 SegNet-Basic的解码器在每个解码器层中都有64个特征图。相比之下,使用降维的FCN-Basic在每个解码器层中具有更少(11)个特征图。这减少了解码器网络中的卷积数,因此FCN-Basic在推理(正向传递)过程中更快。从另一个角度来看,SegNet-Basic中的解码器网络使它总体上比FCN-Basic更大。在相同的迭代次数下,它具有更大的灵活性,因此比FCN-Basic具有更高的训练精度。总的来说,当推理时间存储受到限制但推理时间可能会受到一定程度的影响时,我们看到SegNet-Basic优于FCN-Basic。

尽管SegNet的解码器更大,但SegNet-Basic的解码器与FCN-Basic-NoAddition最为相似,两者都可以学习生成密集的特征图,或者直接学习像FCN-Basic-NoAddition一样进行反卷积,或者通过首先进行升采样,然后与经过训练的解码器滤波器进行卷积。 SegNet-Basic的性能优越,部分是由于其更大的解码器尺寸。与FCN-Basic相比,FCN-Basic-NoAddition的准确性也较低。这表明捕获编码器功能图中存在的信息以提高性能至关重要。特别要注意的是,这两个变体之间的BF测量值大幅下降。这也可以解释SegNet-Basic优于FCN-Basic-NoAddition的部分原因。

FCN-Basic-NoAddition-NoDimReduction模型的大小比SegNet-Basic稍大,因为最终的编码器特征图未压缩以匹配类K的数量。这样就可以对模型的大小进行公平的比较。在测试中,此FCN变体的性能比SegNet-Basic差,但在相同训练次数下其训练精度也较低。这表明使用较大的解码器是不够的,但是捕获编码器特征图信息以更好地学习也很重要,尤其是细粒度的轮廓信息(请注意BF测量的下降)。在这里,有趣的是,与更大的模型(例如FCN-Basic-NoDimReduction)相比,SegNet-Basic具有令人称奇的训练准确性。

FCN-Basic-NoAddition和SegNet-Basic-SingleChannelDecoder之间的另一个有趣比较表明,使用最大池索引进行上采样和使用整体较大的解码器可带来更好的性能。这也为SegNet提供了一种很好的分段架构,尤其是在需要在存储成本,准确性与推理时间之间寻求折衷的情况下。最好的情况是,当内存和推理时间都不受限制时,较大的模型(例如FCN-Basic-NoDimReduction和SegNet-EncoderAddition)都比其他变量更准确。特别是,在具有高BF分数的FCN-Basic变体中,FCN-Basic模型中的降维降低导致最佳性能。这再次强调了分段架构中内存和准确性之间的权衡。

表1的最后两列显示了不使用类平衡(自然频率)时的结果。在这里,我们可以观察到,在不加权的情况下,所有变体的结果都较差,特别是对于类平均准确度和mIoU度量。由于大多数场景都是由天空,道路和建筑物像素主导的,因此在没有加权的情况下,全局精度是最高的。除此之外,从变体的比较分析得出的所有推论对于自然频率平衡也是如此,包括BF测量的趋势。 SegNet-Basic的性能与FCN-Basic一样好,并且优于较大的FCN-Basic-NoAddition-NoDimReduction。较大但效率较低的模型FCN-Basic-NoDimReduction和SegNet-
EncoderAddition的性能优于其他变体。

现在,我们可以总结以下几点一般性分析。

1.完整存储编码器功能图时,可获得最佳性能。 这最清楚地反映在语义轮廓轮廓度量标准(BF)中。

2.当推理过程中的内存受到限制时,可以存储编码器特征图的压缩形式(降维,最大池索引)并与适当的解码器(例如SegNet类型)一起使用以提高性能。

3.较大的解码器可提高给定编码器网络的性能。

4 BENCHMARKING

我们使用Caffe实现3在两个场景分割基准上量化SegNet的性能。第一项任务是道路场景分割,这对于各种与自动驾驶相关的问题具有当前的实际意义。第二项任务是室内场景分割,这是几种增强现实(AR)应用程序立即引起关注的。两项任务的输入RGB图像均为360×480。

我们将SegNet与其他适用于细分的深度架构的基准进行了比较,例如FCN [2],DeepLab-LargFOV [3]和DeconvNet [4]。我们的目标是了解在相同数据集上进行端到端训练时这些体系结构的性能。为了启用端到端训练,我们在每个卷积层之后添加了批归一化[51]层。对于DeepLab-LargeFOV,我们将最大合并3步幅更改为1,以实现最终预测分辨率45×60。我们将DeconvNet的完全连接层的特征尺寸限制为1024,以便能够以与其他模型相同的批量大小进行训练。在此请注意,DeepLab-LargeFOV [3]的作者还报告说,通过减少完全连接的层的大小。

为了执行受控基准,我们使用了相同的SGD求解器[17],其固定学习速率为10 -3,动量为0.9。在整个数据集中进行了100多个时期的优化,直到没有观察到进一步的性能提高为止。在所有模型的更深的卷积层的末尾添加了0.5的丢失,以防止过度拟合(例如,请参见http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html
咖啡原型)。对于具有11个类别的道路场景,我们使用的最小批量为5;对于具有37个类别的室内场景,我们使用的迷你批量为4。

4.1 Road Scene Segmentation

许多道路场景数据集可用于语义解析[22],[26],[60],[61]。其中,我们选择使用CamVid数据集[22]对SegNet进行基准测试,因为它包含视频序列。这使我们能够将我们提出的架构与使用运动和结构的架构进行比较[28],[29],[30]和视频片段[33]。我们还将[22],[26],[60],[61]结合在一起形成3433张图像的整体,以训练SegNet以获得其他基准。对于道路场景分割的网络演示(请参见脚注3),我们将CamVid测试集包含到此更大的数据集中。在这里,我们想指出的是,针对SegNet和本文中使用的其他竞争性体系结构,还执行了另一项针对道路场景的最新且独立的基准测试[62]。但是,基准没有得到控制,这意味着每种体系结构都使用单独的配方进行了培训,该配方具有不同的输入分辨率,有时还包括验证集。因此,我们相信可以使用我们更受控制的基准来补充他们的努力。

SegNet预测与其他深层体系结构的定性比较可以在图4中看到。定性结果表明,所提出的体系结构能够对道路场景中的较小类别进行细分,同时能够对整个场景进行平滑的细分。确实,在受控基准设置下,SegNet与某些较大的型号相比,表现出卓越的性能。 DeepLab-LargeFOV是最有效的模型,尽管损失了较小的类,但使用CRF后处理可以产生有竞争力的结果。具有学习反卷积的FCN明显优于固定双线性上采样。 DeconvNet是最大的模型,培训效率最低。它的预测不会保留小类。

我们还使用此基准首先将SegNet与几种非深度学习方法进行比较,包括随机森林[27],Boosting [27],[29]和基于CRF的方法[30]。这样做是为了给用户一个视角与基于经典特征工程的技术相比,使用深层网络实现的精度提高的优势。

表2中的结果表明,与使用CRF的方法相比,SegNet-Basic,SegNet可获得竞争性结果。这显示了深度架构从输入图像中提取有意义的特征并将其映射到准确且平滑的类段标签的能力。此处最有趣的结果是,通过结合使用[22],[26],[60],[61]来训练SegNet而获得的大型训练数据集时,类平均和mIOU指标的性能得到了很大的提高。相应地,SegNet的定性结果(见图4)明显优于其他方法。它能够很好地细分大小类。我们在这里指出,我们在训练SegNet-Basic和SegNet时使用了中频分类[50]。此外,总体上来说,分割的平滑质量非常类似于CRF后处理所获得的质量。尽管使用较大的训练集可以提高结果的事实不足为奇,但是使用预训练的编码器网络和此训练集可以提高百分比,这表明该体系结构可以潜在地用于实际应用。我们对来自互联网的城市和高速公路图像的随机测试(见图1)表明,SegNet可以吸收大量的训练集并将其很好地推广到看不见的图像。这也表明,当有足够数量的训练数据可用时,可以减少先前(CRF)的贡献。

在表3中,我们将SegNet的性能与目前广泛采用的全卷积架构进行细分进行了比较。与表2中的实验相比,我们没有使用任何类平衡来训练包括SegNet在内的任何深度架构。这是因为我们发现很难训练具有中值频率平衡的较大模型(例如DeconvNet)。我们在40K,80K和> 80K迭代下对性能进行基准测试,这给出了最小批量大小和训练集大小大约对应于50,100和> 100个纪元。对于最后一个测试点,我们还报告了最大迭代次数(此处至少为150个纪元),超过该次数我们没有观察到精度提高或设置了过度拟合的情况。我们在训练阶段的三个阶段报告指标,以揭示指标如何随培训时间而变化,尤其是对于大型网络。重要的是要了解在提高准确性时是否需要额外的训练时间。还要注意,对于每次评估,我们都对数据集进行了完整的运行以获得批处理规范统计信息,然后使用此统计信息评估测试模型(请参见http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html代码)。在大型训练集上执行这些评估非常昂贵,因此我们仅在训练阶段的三个时间点报告指标。
在这里插入图片描述
图4. CamVid日间和黄昏测试样品的结果。 与某些大型模型在受控环境中进行训练相比,SegNet显示出卓越的性能,尤其是其具有划定边界的能力。 DeepLab-LargeFOV是最有效的模型,尽管损失了较小的类,但使用CRF后处理可以产生有竞争力的结果。 具有学习反卷积的FCN显然更好。 DeconvNet是训练时间最长的最大模型,但其预测使小班制松懈。 请注意,这些结果对应于表3中具有最高mIoU精度的模型。

在这里插入图片描述
从表3中我们可以立即看到,与其他模型相比,SegNet,DeconvNet在所有指标中均得分最高。 DeconvNet具有更高的边界描绘精度,但与DeconvNet相比,SegNet的效率要高得多。这可以从表6中的计算统计数据中看出。FCN,DeconvNet具有完全连接的层(变为卷积层),训练速度要慢得多在此我们也注意到,在拟合这些较大的模型时,过拟合不是问题,因为在与SegNet相当的迭代中,它们的度量显示出增加的趋势。

对于FCN模型学习,与使用双线性插值权重固定反卷积层相反,反卷积层可改善性能,尤其是BF得分。它还可以在更短的时间内获得更高的指标。这个事实与我们先前在第二节中的分析相吻合。 3.3。

令人惊讶的是,DeepLab-LargeFOV经过训练可以以45×60的分辨率预测标签,由于它是参数化方面最小的模型,并且具有如表6所示的最快训练时间,因此具有竞争优势。但是,边界精度为更差,这是其他架构所共有的。经过长时间的训练,DeconvNet的BF分数高于其他网络。鉴于我们的分析。 3.3及其共享SegNet类型体系结构的事实。

在DeepLab-LargeFOV-denseCRF的最后一个时间点可以看到密集CRF [63]后处理的影响。全局和mIoU都有改善,但全班平均水平有所降低。但是,BF分数获得了很大的提高。请注意,由于没有可用的验证集,因此密集的CRF超参数是通过昂贵的网格搜索过程在训练集的子集上获得的。

4.2 SUN RGB-D Indoor Scenes

SUN RGB-D [23]是一个非常具有挑战性的大型室内场景数据集,具有5285个训练图像和5050个测试图像。图像由不同的传感器捕获,因此具有各种分辨率。任务是对37个室内场景类进行细分,包括墙壁,地板,天花板,桌子,椅子,沙发等。由于对象类具有各种形状,大小和姿势,因此这一任务变得很困难。由于每个测试图像中通常存在许多不同的类别,因此存在频繁的部分遮挡。这些因素使这成为最困难的细分挑战之一。我们仅将RGB模式用于我们的培训和测试。使用深度模态将需要对体系结构进行修改/重新设计[2]。此外,当前相机的深度图像质量也需要仔细的后处理,以填补丢失的测量值。他们可能还需要使用许多帧的融合来稳健地提取特征以进行分割。因此,我们认为使用深度进行细分值得进行单独的工作,这不在本文的讨论范围之内。我们还注意到,较早的基准数据集NYUv2 [25]作为该数据集的一部分包括在内。

道路场景图像在感兴趣的类别及其空间布置方面均具有有限的变化。当从移动的车辆捕获时,摄像机的位置几乎总是与路面平行,从而限制了视点的变化。这使深度网络更容易学习稳健地对其进行分段。相比之下,室内场景的图像更为复杂,因为视点可以变化很大,并且场景中存在的类别数量及其空间布置的规律性都较小。另一个困难是由场景中对象类的大小变化很大引起的。图5中显示了来自最近的SUN RGB-D数据集的一些测试样本[23]。我们观察到一些场景的类别很少,而另一些场景的杂波则很密集(下排和右排)。在室内场景中,外观(纹理和形状)也可能有很大差异。因此,我们认为这是计算机视觉中的分割架构和方法所面临的最艰巨的挑战。其他挑战,例如Pascal VOC12 [21]显着的对象分割,已经占据了研究人员更多的位置[66],但是我们认为室内场景分割更具挑战性,并且在AR和机器人技术等方面具有更多实际应用。为了鼓励朝这个方向进行更多研究,我们在大型SUN RGB-D数据集上比较了众所周知的深度架构。

SegNet对不同类型的室内场景(例如卧室,客厅,实验室,会议室,浴室)的样本的定性结果如图5所示。我们看到,当不同类别的教室规模较大时,SegNet可以获得合理的预测。观点。这特别有趣,因为输入模态仅为RGB。 RGB图像还可用于分割较薄的结构,例如椅子和桌子的腿,灯等,这很难使用来自当前可用传感器的深度图像来实现。从图5的SegNet,DeconvNet的结果可以看出这一点。将装饰对象(如墙上的绘画)用于AR任务也很有用。但是,与室外场景相比,分割质量显然更嘈杂。当杂波增加时,质量会明显下降(请参阅中间列中的结果样本)。
在这里插入图片描述
在这里插入图片描述
表4中的定量结果表明,所有深层架构均具有较低的mIoU和边界指标。全球平均值和阶级平均值(与mIou相关性很好)也很小。在G,C,BF指标方面,SegNet优于所有其他方法,并且其mIoU略低于DeepLab-LargeFOV。作为一个独立的实验,我们使用中频分类平衡训练了SegNet [67],并且指标更高(请参见表4),这与我们在Sec中的分析相符。 3.3。有趣的是,除了DeepLab-LargeFOV-denseCRF的BF评分指标外,对于密集CRF使用基于网格搜索的最佳超参数会使所有情况恶化。也许可以找到更多的最佳设置,但是鉴于密集CRF的推理时间较长,因此网格搜索过程过于昂贵。

总体性能不佳的原因之一是此分割任务中的类太多,其中许多类只占图像的一小部分,并且很少出现。表5中报告的精度清楚地表明,较大的类别具有合理的准确性,而较小的类别具有较低的准确性。这可以通过使用更大尺寸的数据集和具有类分发意识的培训技术来改善。性能不佳的另一个原因可能是这些深层架构(均基于VGG架构[6])无法在室内场景中实现较大的可变性。我们这一推测是基于以下事实:最小模型DeepLab-LargeFOV在mIoU方面产生了最高的准确性,而相比之下,即使经过更长的培训(DeconvNet),在DeconvNet,FCN中较大的参数设置也无法提高性能。这表明,可能存在导致所有体系结构性能下降的常见原因。需要更多可控的数据集[68]来验证这一假设。

5 DISCUSSION AND FUTURE WORK

在这里插入图片描述
深度学习模型通常由于海量数据集的可用性以及扩展模型深度和参数化而取得了越来越大的成功。但是,在实践中,诸如训练和测试期间的内存和计算时间等因素是从大量模型中选择模型时要考虑的重要因素。训练时间成为重要的考虑因素,尤其是当性能提升与增加的训练时间不相称时(如我们的实验所示)。测试时间内存和计算负载对于在专用的嵌入式设备上部署模型至关重要,例如在AR应用程序中。从整体效率的角度来看,我们感到对于实时应用的更小,更多内存,更省时的模型的关注较少这是SegNet提案背后的主要动机,SegNet的提议比其他竞争性体系结构要小得多,速度更快,但是我们证明它对于执行诸如道路场景理解之类的任务非常有效。

诸如Pascal [21]和MS-COCO [42]之类的分割挑战是对象分割挑战,其中在任何测试图像中都存在一些类别。由于室内场景的高度可变性以及需要同时分割大量类别的场景,因此场景分割更具挑战性。室外和室内场景分割的任务也针对当前应用(例如自动驾驶,机器人技术和AR)进行了更实际的定位。

我们选择对各种深度细分架构(例如边界F1度量(BF))进行基准测试的指标是对现有指标的补充,这些指标更偏向于区域精度。从我们的实验和其他独立的基准[62]可以清楚地看出,从行驶中的汽车捕获的室外场景图像更容易分割,并且深层的结构表现出色。我们希望我们的实验能够鼓励研究人员将注意力集中在更具挑战性的室内场景分割任务上。

在对不同参数化的不同深度架构进行基准测试时,我们必须做出的重要选择是训练它们的方式。这些架构中的许多已经使用了许多支持技术和多阶段训练方法来获得数据集上的高精度,但是这使得很难收集有关它们在时间和内存限制下的真实性能的证据。取而代之的是,我们选择执行受控的基准测试,在该测试中,我们使用批处理归一化功能,以使用相同的求解器(SGD)进行端到端培训。但是,我们注意到这种方法无法完全消除模型与求解器(优化)在获得特定结果方面的影响。这主要是由于以下事实:训练这些网络涉及不完美的梯度反向传播,并且优化在极大维度上是非凸问题。认识到这些缺点,我们希望这种受控分析能够补充其他基准[62],并揭示不同知名架构所涉及的实际取舍。

对于未来,我们想利用对分析中收集的分段架构的理解,为实时应用程序设计更有效的架构。我们也有兴趣为深度细分架构[69],[70]的预测估计模型不确定性。

6 CONCLUSION

在这里插入图片描述
在这里插入图片描述
**我们介绍了SegNet,这是一种用于语义分割的深度卷积网络体系结构。 SegNet背后的主要动机是需要设计一种用于理解道路和室内场景的有效架构,该架构在内存和计算时间上都是有效的。**我们分析了SegNet,并将其与其他重要变体进行比较,以揭示在设计用于分段的体系结构时所涉及的实际取舍,特别是训练时间,内存与准确性。那些完整存储编码器网络功能图的体系结构可以发挥最佳性能,但是在推理期间会消耗更多的内存。另一方面,SegNet效率更高,因为它仅存储特征图的最大池索引,并在其解码器网络中使用它们来获得良好的性能。在大型且知名的数据集上,SegNet表现出色,在理解道路场景方面得分很高。深度细分架构的端到端学习是一个更加艰巨的挑战,我们希望看到更多关注此重要问题。


http://www.ppmy.cn/news/350618.html

相关文章

制作自己的segnet数据集_语义分割【论文解读】经典网络SegNet 值得仔细反复阅读...

摘要: 提出了一种新颖而实用的深度全卷积神经网络结构用于语义像素分割称为SegNet。这个核心的可训练分割引擎包括一个编码器网络,一个相应的解码器网络,以及一个像素级的分类层。编码器网络的架构与VGG16网络中的13个卷积层拓扑结构相同。解…

opencv训练自己的分类器,可替换各种目标识别

环境:opencv-4.0,python,c 方法:opencv_createsamples,opencv_traincascade,haar特征或者lbp特征cascade分类器 流程: 收集样本,处理样本训练分类器目标检测 收集样本,…

pc+树莓派+ opencv 分类器

基本文件 工具下载:https://download.csdn.net/download/weixin_42206625/12869520 在 pc 上安装 opencv 打开命令行 pip install opencv-python==4.1.2.30这里指定安装版本 正样本 首先用手机拍几十张上百张只有需识别对象的照片, 运行 正样本_txt生成.py 处理正样本,…

论文翻译(五):SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

文章目录 摘要1.介绍2.文献综述3.网络结构3.1解码器变体3.2训练3.3分析 4.基准测试4.1道路场景分割4.2SUN RGB-D室内场景 5.讨论和未来的工作6结论 摘要 我们提出了一种新的实用的语义像素级分割的深度全卷积神经网络结构称为SegNet。 这个核心的可训练分割引擎由一个编码器网…

opencv+python识别猪

背景:在车载监控回传的视频里判断该车里是否有猪 解决思路:在回传视频里做物体识别,如果有猪就框出来并且给出一个代表值 day1 2021-10-27 设想:物体识别,并且在图中框出来猪 1.找正样本 最开始对正样本负样本bla…

opencv_分类器训练指导

环境:opencv-4.0,python,c 方法:opencv_createsamples,opencv_traincascade,haar特征或者lbp特征cascade分类器 流程: 收集样本,处理样本 训练分类器 目标检测 一. 收集样本…

Opencv造出属于自己的xml训练器

一、基本步骤 1.利用python爬虫爬取(也可以手动收集)图片集,分为pos(正相关,要识别的)和neg(负相关,里面没有pos,一般是背景之类的无关图)一般1:…

UbuntuServer搭建打印服务器

打印服务器无疑需要的是CUPS(Common Unix Print System),配置及管理还是很简单。但安装驱动却是麻烦事,除非打印机驱动很容易得到,唉,本人就遇到了一麻烦事,服务器操作系统为Ubuntuserver 12.04.1 amd64,打…