【《基于深度学习的图像标注系统的设计与实现》23000字】_第1页
【《基于深度学习的图像标注系统的设计与实现》23000字】_第2页
【《基于深度学习的图像标注系统的设计与实现》23000字】_第3页
【《基于深度学习的图像标注系统的设计与实现》23000字】_第4页
【《基于深度学习的图像标注系统的设计与实现》23000字】_第5页
已阅读5页,还剩50页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于深度学习的图像标注系统的设计与实现目录TOC\o"1-3"\h\u232991绪论 3308101.1研究背景和意义 358911.2国内外研究现状 431811.3本文研究内容 6224511.4本文组织结构 7215732相关理论及技术 8247182.1深度学习 877192.2CNN(卷积神经网络) 9175892.2.1卷积层 10242992.2.2池化层 1089182.2.3全连接层 12109762.2.4卷积神经网络结构 12135832.2.5卷积神经网络的训练过程 1257702.3目标检测 14320472.3.1检测窗口选择 14180342.3.2特征提取 15224692.3.3分类器 16282632.3.4深度学习目标检测方法 16217232.5本章小结 17173813图像标注系统需求分析 17274693.1系统概述 18175213.2可行性分析 1810553.2.1经济可行性分析 18307723.2.2技术可行性分析 1913463.2.3社会需求可行性分析 19230733.2功能性需求 20326683.2.1图像识别 2067403.2.2图像自动标注 206053.2.3图像自定义标注 20216683.3非功能性需求 21260773.4用例分析 21257153.5本章小结 22129604图像标注系统总体设计 2321084.1总体设计 23115654.2系统架构 24231664.3前端与后台设计 2555884.4详细设计 2548364.4.1图像识别设计 26255154.4.2图像自动标注设计 28230134.4.3自定义标注设计 30154144.5本章小结 3126115图像标注系统的实现 31137285.1图像识别实现 31221785.1.1resnet网络 3280465.1.2数据集准备 35165142.1.3图像数据增强 36117915.1.4网络训练 37270005.1.5识别 4019845.2基于FasterRCNN的多标签自动标注 40259375.2.1FasterR-CNN网络 40259985.2.2数据预处理 4249845.2.3网络训练 42208705.2.4预测 4512555.3基于YOLOv3SPP的多标签自动标注 4649495.3.1YOLOv3SPP网络 46232425.3.2数据集准备 4799505.3.3网络训练 48110655.34预测 49134615.3图像自定义标注实现 4993865.4本章小结 514166图像标注系统测试 51117896.1测试数据及环境 51158836.1.1测试数据 51288496.1.2测试环境 5124516.2功能测试 52251836.2.1图像识别模块 5230286.2.2图像自动标注模块 53228706.2.3自定义标注模块 5489286.3对比测试 55166446.6本章小结 588997总结与展望 58321807.1总结 58165827.2展望 591绪论1.1研究背景和意义随着科学技术的进步,人类已经开始迈入了一个新的人工智能时代,工程师们可以充分利用互联网和大数据,学习和模仿人类的行为,使得产品更加智能。自20世纪90年代至21世纪初,科研人员更加务实的研发目标使人工智能在个场景中更好的实现落地,成功应用到生活多个领域,例如数据标注、人脸识别、无人驾驶等,这些领域都以机器学习[1]为核心。学者们也将各个学科的先进知识理论,尤其是数学工具,引入人工智能领域,确保人工智能可以拥有更扎实可行的理论基础。在算力方面,自人类迈入“大数据”时代,计算机芯片的计算能力持续高速增长。在研发目标明确可行后,算法和算力的齐头并进让人们看到了人工智能可以再创辉煌的希望。顺应着人工智能以及计算机视觉学科的兴起浪潮,计算机图像分类与识别上取得了重大突破,这与人们对数据重要程度的认识加深密不可分。大数据是机器学习的基础,而网络中的数据一般没有规律,很难从中获取有价值的信息。数据标注就是将网络中类似图像、视频等数据,根据其语义信息进行标注。最可靠的方式就是通过人工标注,而大量的数据标注,消耗的人工成本和时间成本都是巨大的。为了解决数据标注耗时耗力的问题,计算机视觉领域的学者尝试提出解决方法。刚刚出任伊利诺伊大学香槟分校的李飞飞教授产生一个大胆的解决方案,创立一个大型视觉数据集,专门用于视觉目标识别软件的研究。这个称为ImageNet[2-3]的数据集手动注视了1400多万种图像,并在100余万张图像提供了数据标注。还有学者提出使用商业模式,通过数以亿计的网民来标注数据。亚马逊众包平台就通过发布悬赏的方式[4],让其注册用户在闲暇时间完成数据标注。这些方式都是通过消耗大量的人力成本来进行图像数据标注。因此,人们迫切需求一种更加高效的标注方式,一个更加智能的标注系统。图像自动标注利用机器学习的方式对图像信息进行解释,使计算机能够自动识别图像表达的具体信息。人们可以利用计算机在大量的图像数据中筛选出有价值的信息,而不用消耗大量的人力成本,这对于人们处理大量图像数据有着现实意义。1.2国内外研究现状图像标注问题的本质是视觉到语言的问题。图像标注又分为图像识别和目标检测等。图像识别[5]是计算机视觉[6]的基础,是信息时代的一项重要技术,它利用机器学习的方式,特别是深度学习的方式,对图像进行预处理、特征抽取和选择和分类决策的流程,使计算机能够对图像进行分类。图像识别技术是计算机视觉中最基础的任务,它基于人工智能的发展而发展。在图像识别技术中,目前比较流行的就是基于神经网络形式[7]。伴随着人工智能的发展,图像识别也已经从传统的文本图像识别发展到数字图像识别。随着对数字图像的深入研究,数字图像识别技术能够在图像处理过程中保存数字信息的完整性,能够更好地识别出数字图像图像信息的内容[8]。早期的图像标注主要是通过二分类方式进行标注,基于判别式的方式判断图像与标签是否正确匹配,若正确匹配,则输出图像标注结果。Gao[9]等人通过研究数据集中各图像中标签和目标的对应关系,研究发现了一种单标签图像标注模型,这种模型主要是通过多级稀疏编码的方式完成标注。臧淼等人[10]提出一种基于距离约束的图像自动标注结构,通过使用图像特征矩阵表示在原始图像上加入约束条件完成图像自动标注。该模型结构首先提取出训练数据集中的特征图,然后通过特征图计算出验证数据集中图像的K最近邻图像,然后通过训练图像标签转移对图像进行标注。随后,又有学者提出了基于支持向量机(SVM)的图像自动标注算法[11]。SVM算法是基于小规模图像数据集的,能够有效地避免大数定律的问题,能够在小规模的数据集中训练出一个较好的分类模型。在SVM算法中,一般将原始图像裁剪成多个区域,将图像的标签信息与裁剪好的区域关联,然后对每一个类别标签分别训练出一个二元分类器,通过训练好的二元分类器对图像进行标注,然而遗憾的是,此算法尚且无法解决多标签标注的问题。在SVM之后又出现了贝叶斯分类算法[12]和改进的MIMLSVM[13]算法。改进的MIMLSVM算法改进了SVM无法解决多标签分类的问题,利用多元分类器进行训练学习。该分类器能够充分考虑到图像标签与图像目标区域的对应关系,具有更加有效的标注结果。上述图像标注算法都是基于判别式的,该类方法构造简单,易于理解,并且能够较容易地实现,但该类方法容易产生“语义鸿沟”的问题。在基于判别式的标注算法之后,出现了基于半监督模型的图像标注算法,改模型的训练集是已经标注好的图像数据。为了提升模型的泛化能力,这种半监督学习模型处理大量验证数据集。随后,GAO等[14]人将SVM与半监督EM结合起来,提出了一种新的分层图像标注模型。该模型将图像标注任务分解成两部分,使用EM算法计算模型参数值,并通过该参数值估计图像目标类别的概率值。近年来,国内学者也在图像标注领域做了大量研究工作并取得了较好的成果。赵鹏[15]等人提出了将GMM模型与PLSA模型融合的标注方法。孙君顶[16]等人提出了基于多特征融合与PLSA-GMM的图像自动标注技术。尽管半监督模型能够在一定程度上提高图像标注的性能,但与高质量的图像标注算法还有一定的距离。伴随着深度学习的出现,出现了DCNN(深度卷积神经网络)进入到了一个全新的领域。WeiY[17]等人提出了基于深度学习的卷积神经网络结构,并以此为框架构建出分类器进行标签标注。KavitaAkhilesh[18]等提出将字典学习技术结合到标签集中做聚类的多标签标注方法。SayaliRenuse[19]提出利用朴素贝叶斯和C4.5圣经完了过分类器,使用HOG特征做特征提取。在目标检测经历多年瓶颈期之后,RossB.Girshick[00]等人提出了R-CNN模型,R-CNN模型显著提高了目标检测率,是在图像标注领域的里程碑。随后,KaimingHe等人在R-CNN的基础上提出了SPPNet,该结构能够将候选区域转移到特征图上,大大降低了目标检测计算量。RossGirshick又在SPPNet的基础上提出了FastR-CNN,该网络主要特点是RoIPooling层,能够将不同的特征图统一池化成固定大小的特征图,降低计算速度,提高检测速度。任少卿等人在FastR-CNN的框架基础上提出了RPN框架,提出了FasterR-CNN方法,它实现了利用神经网络学习生成候选区域,在目标检测中彻底去除了Selectivesearch方法。XiaoKe[20]等将图像标注问题视作多标签分类问题,提出了一种基于DCNN的端到端的图像标注模型,该模型能够通过输入图像直接得到目标结果。1.3本文研究内容本文的研究内容是基于深度学习的图像标注系统的设计与实现。针对不同的功能模块,通过图像和标签的映射关系,建立不同的图像标注分类器,提高图像标注系统的完整性和稳定性。本文主要包括标注算法的设计与实现的图像标注系统的设计与实现。具体研究内容如下:(1)调研图像标注研究现状,分析比较图像标注算法,了解学习深度学习现阶段热门的网络结构,为实现图像标注算法做准备。(2)对系统进行可行性分析,结合标注算法,需求分析,提出系统设计方案。本图像标注系统不仅需要完成图像识别,图像自动标注,还需完成图像自定义标注,使系统的功能更加完整。(3)选取数据集,确定图像标注内容。根据图像标注内容和系统需求,选取合适的网络结构和深度学习算法。对于图像识别,搭建resnet网络模型进行训练。对于图像自动标注,分别使用现阶段较流行的FasterR-CNN和YOLOv3SPP网络结构训练图像标注模型。(4)根据算法设计出各功能模块的具体实现方案,并使用Flask搭建系统整体框架,以此为基础搭建前端网站和后端服务器整体框架。(5)根据系统功能模块的实现方案完成图像识别,图像标注等模块的网络搭建、模型训练的步骤,设计实现各功能模块接口。最终通过Flask框架将各功能模块各功能模块和前端网站组建成一个完整的系统。(6)对系统的各功能模块进行测试,完善系统的不足之处,优化前端页面。1.4本文组织结构 本文一共有七个章节,通过这七个章节的内容详细地介绍了基于深度学习的图像标注系统的相关理论技术、系统需求、系统的设计与实现以及系统测试等内容。具体组织结构如下: 第一章是绪论。本章详细地阐述深度学习以及图像标注的研究背景和研究现状,以及系统介绍了本文的的研究内容。 第二章是相关理论基础,重点介绍了有关深度学习和图像标注的理论基础。对深度学习,卷积神经网络原理,网络训练做出了系统的阐述,介绍了有关目标检测的技术框架与算法概述。 第三章是系统需求分析。本章主要分析了本图像标注系统需要完成的功能性需求和非功能性需求,并对本系统进行用例分析。 第四章是图像标注系统的总体设计,系统论述了本图像标注系统整体功能框架,选择了系统架构,并分析本系统前端,后端需要框架和编程语言。 第五章是图像标注系统的实现,详细介绍了各功能模块的实现方式,具体包括图像识别,图像标注,自定义标注的实现方式。 第六章是系统测试,介绍了整个系统的实现以及相关功能测试对比,展示测试结果。 第七章是总结,总结了本图像标注系统的性能以及有待改进之处,并介绍了未来前景展望。2相关理论及技术 本章主要介绍了实现基于深度学习的图像标注系统的相关理论基础。本系统主要完成的功能是图像的训练和分类标注,目标检测,因此本章对实现本系统需要的核心理论做出了系统阐述,即介绍了深度学习理论、卷积神经网络结构以及训练过程,目标检测技术流程,以及图像标注算法概述。2.1深度学习随着科技发展,人们在深度学习领域的研究也更加深入,出现了更好深度学习模型和算法,深度学习也在各个领域都发挥出自身的价值,特别在计算机视觉领域做出了重大贡献。深度学习模型是一个统称,可以通过简单的数据参数调整网络结构,使其能够完成对复杂数据的学习,得到的数据之间多层的深度隐含非线性函数关系,如图2.1所示为一个深度学习模型。深度学习不等于神经网络,深度神经网络只是深度学习的一个子类。深度学习从形式上看,信号在整个多层结构中逐层传播,最后得到信号表达,从内容上讲,对数据局部特征进行多层次的抽象化的学习与表达。图2.1深度学习模型深度学习能够挖掘出存在与数据之间高度隐含关系,且样本的特征复用率更高。深度学习作为一种新的机器学习方法,通过对深层非线性网络结构的监督学习,实现复杂函数的近似,并且具有强大的从有限样本集合中学习问题本质的能力。这种特性能够使计算机更好地对图像信息进行建模,更好地提取图像中的特征,更好地识别出图像或视频中的有效信息,进而加深计算机对数据特征的表达和理解。这种优秀的模型构建能力,特征提取能力,使计算机能够更好的处理数据和标签之间复杂的函数映射关系。并且深度学习模仿人类大脑的神经网络结构,这种结构也能够训练出类似人脑的特性,能够更好地处理数据中的语义信息。深度学习就是通过深层网络结构来学习数据特征的。深度学习本质上是构建具有若干隐藏层的学习模型,在通过大量带有标签信息的训练数据进行学习,调整网络参数,学习到数据中鲜明的特征,从而优化分类模型,提高学习模型的分类和预测能力。在传统神经网络中,训练速度较慢,层次较少,且容易出现过拟合现象。与传统的机器学习相比较,深度学习具有深层的模型结构,具有更多的隐藏层,能够更好的处理分类和预测任务。并且深度学习能将训练样本的特征转化成模型结构的一部分,因此能够得到训练数据集中较多的本质特征,从而更好的检测图像语义信息。 2.2CNN(卷积神经网络)卷积神经网络(CNN)是一类包含卷积运算,且具有深层网络结构前馈神经网络,是深度学习的代表算法之一[97-98]。

CNN在早期在手写字符识别中得到应用,但由于只能在在小尺寸图像识别取得较好的结果,而不能够在识别较大尺寸的图像,因此并没有得到重视。2012年,更深层次的AlexNet网络出现,并获得广泛关注。AlexNet的成功也让CNN被重视起来,得到了快速的发展,被广泛应用在各个领域,尤其是在计算机视觉领域,取得相当好的结果。CNN通过特殊的网络结构来减少需要训练的参数数量,降低网络的复杂程度,提高了网络的训练效率,并且在实验中取得了较好的结果。在处理多维图像时,CNN的优点则更加明显,它将原始图像作为网络的输入,避免了传统识别方法中繁琐的特征提取和重构过程,以此将图像传递到不同的层次中,通过卷积运算图像进行特征提取,分类识别操作。CNN的结构包括输入层,隐含层和输出层。输入层可以处理多维图像数据,输出层则是输出分类结果,CNN而最重要网络结构的就是隐含层。隐含层主要包括卷积层,池化层和全连接层。2.2.1卷积层卷积层是卷积神经网络的核心,其功能是对输入的图像数据进行特征提取。每个卷积层有若干个卷积核组成,卷积核中元素都对应这一个权重系数,权重系数是由卷积神经网络反向传播优化得到的。卷积运算是为了提取输入数据中的特征,一个卷积层能够提取部分特征,通过多个卷积层组合成卷积神经网络能够提取图像数据中复杂的特征。卷积运算是一个线性运算,在卷积运算之后通常要加上偏置和激活函数,其目的是为了拟合非线性函数。卷积神经网络中一些常见的激活函数有ReLU函数,sigmoid函数等。上述卷积运算都是针对单通道图像,而在实际生活中的图像通常是多通道的。因此,需要多个卷积核分别对各通道进行特征提取,输出多通道的特征图像,再将各通道特征图像按对应位置进行相加。2.2.2池化层图像通过卷积层得到的特征图像尽管维数有所降低,但相对于神经网络来说,计算量还是太大,计算成本过高,并且容易产生过拟合现象。为了解决这一问题,引进了池化(pooling)操作。池化层也叫下采样层,最主要的功能就是压缩图像,降低图像维数。具体操作就是将图像的某些特定大小的区域,通过制定计算规则用一个值来代替。池化操作不仅能够降低图像维数,而且具有平移、旋转不变性。因此,池化操作能够提高模型的泛化能力。典型的池化操作有以下几种:求和池化:遍历某个区域的所有值,将该区域所有值的和作为该区域的特征值。均值池化:遍历并累加某个区域的所有值,将该区域所有值的和除以元素的个数,也就是该区域的均值作为特征值。最大池化:遍历某个区域的所有值,求出其中最大的值,作为该区域的特征值。池化层在卷积层之后,对卷积层得到的特征图像进行池化操作。最大池化是非线性操作,均值池化为线性操作。通常情况下,最大池化效果更好。如图2.2所示为最大池化操作。图2.2最大池化示意图2.2.3全连接层全连接层位于卷积神经网络隐含层的最后部分,并只向其它全连接层传递信号。特征图在全连接层中会失去空间拓扑结构,被展开为向量并通过激励函数[96]。2.2.4卷积神经网络结构神经网络的训练学习过程是模拟视觉处理系统不断抽取高级的特征过程,CNN是一种多层的神经网络结构,一般由输入层、卷积层(C层)、子采样层(S层)、全连接层(F层)和输出层组成,每层中都有多个独立的二维平面,而每个平面中又有多个神经元。图像通过输入层,再通过卷积层进行卷积运算,得到特征图(FeatureMap),在前面的卷积层捕捉的图像特征感受野(ReceptiveField)比较小,将特征图输入到池化层后得到池化后的特征图,通过一系列卷积池化操作后,感受野逐渐增大,能够捕获更多复杂的、抽象的特征信息,得到信息更加丰富的特征图;在输入到分类器层之前,需要将所有特征图拉成一列连接起来,构成一个特征向量;最后利用分类器层完成分类。例如,分类器层可以使用Softmax分类模型。图2.3所示为一个CNN的结构模型,包含两个卷积层,两个池化层。图2.3CNN模型结构2.2.5卷积神经网络的训练过程训练CNN模型就是通过大量的数据集样本,使CNN结构能够记忆输入数据和样本标签的关联关系,这主要是通过调整CNN结构中的参数来模仿记忆过程。在CNN的有监督学习中,本质上就是建立输入到输出的映射关系,在不需要输入与输出建立任何函数关系的情况下,通过学习大量带有标签的数据集样本建立映射关系。简单来说就是通过输入与输出已知的对应关系,学习输入与输出的内在联系,也就是带参数的网络模型。在训练之前还需要设置一些小随机数对网络权重进行初始化,在增强网络学习能力的同时也可以避免网络出现过拟合的现象。CNN有监督学习的训练过程主要分为两个阶段——正向传播和反向传播。 第一阶段,正向传播:(1)将图像数据输入到卷积神经网络中。(2)逐层通过卷积池化等操作,输出每一层学习到的参数,n-1层的输出作为n层的输入。上一层的输入xl−1与输入xxl=f(W式中,l为层数;W为权值;b为一个偏置;f是激活函数。 (3)最后经过全连接层和输出层得到更显著的特征。 第二阶段,反向传播: (1)通过网络计算最后一层的残差和激活值。 (2)将最后一层的残差和激活值通过反向传递的方式逐层向前传递,使上一层中的神经元根据误差来进行自身权值的更新。 (3)根据残差进一步算出权重参数的梯度,并在调整卷积神经网络参数。 (4)继续第(3)步,直到收敛或已达到最大迭代次数。 对于CNN的无监督学习,实际上就是通过预训练模型和监督调整的策略。预训练就是通过无标签训练样本数据的输入和输出对每一层单独训练。在预训练之后,再利用带标签的数据集对网络参数权值进行优化调整。相对于带标签的数据集来说,无标签数据更容易获得,且成本较低。通过使用大量无标签的数据进行自学习,能够得到网络的初始权重,得到的预训练模型能够在带标签的数据集中训练时更快地收敛,且分类效果也得到了较大的提升。与有监督学习相较而言,无监督学习方法能够在大量的数据中发现更多的数据特征,能够更加有效的提高分类器的性能。 2.3目标检测目标检测是目前计算机视觉领域比较热门的研究方向。目标检测的任务主要是检测出图像中包含的特定目标,主要包括检测出目标在图像的具体位置和类别信息,概括来说就是定位加分类。定位就是用矩形框框选出图像中的目标,分类就是判断该目标所属的具体类别。定位需要输出目标的中心位置坐标和矩形框宽和高,分类的结果是一个标签索引。对于单标签的目标检测,输出的是一个整数,通过整数可以索引到目标类别;对于多标签而言,输出的是一个一维向量。因此目标检测任务输出的是一个列表,包括每个目标的类别索引和位置信息。 与人工智能领域大部分算法类似,目标检测也经历了一系列演变,从传统的基于浅层分类器的目标检测方案,再到基于深度学习的目标检测方案。在传统方案中,目标检测任务并不能够一次完成,需要经历目标定位,特征提取,分类等多个步骤。而在深度学习中,现在的目标检测任务能够采用端到端的方案,设计神经网络结构,输入图像,直接输出目标的类别索引和位置信息,具体细节过程全部由神经网络完成。 不过无论是传统检测方案还是深度学习方案,都需要完成如图2.4所示流程,首先选择检测窗口,再提取特征,最后设计分类器。 图2.4目标检测基本流程图2.3.1检测窗口选择目标检测的最终任务是判断检测窗口是否存在目标并判断目标类别,而完成这一任务的前提是选择检测窗口。最简单也是最直观的方法也就是设定各种不同尺寸的矩形窗口和步距,从左到右,从上到下,滑动窗口,暴力检测所有检测窗口,再通过分类器进行分类识别。但这明显是不现实的,这种穷举的方法将会产生大量且无效的检测窗口,窗口信息重叠高,浪费大量的计算资源的计算时间,检测速度慢,效率极其低下。目标检测算法想要得到发展,就必须设计一个好的算法,优化这个步骤。J.R.R.Uijlings在2012年提出了Selectivesearch方法,优化了此步骤。Selectivesearch利用了经典的图像分割算法,首先对原始图像进行分割,再通过分层方式对分割后的图像进行筛选,输出可能存在目标的检测窗口,这种方法能够将检测窗口缩小到2000个左右。现如今,也有许多计算机视觉领域学者致力于优化这一步骤,并且取得了一些较好的结果。2.3.2特征提取选择出检测窗口后,需要对窗口中的图像进行特征提取。特征的好坏对泛化能力有至关重要的影响[99]。因此选择一个好的特征是非常有必要的,在图像识别领域有几类特征经常被使用。LBP是用来描述图像局部纹理特征,被广泛使用在人脸检测中。LBP通过定义3×3的窗口,用中心像素和边缘像素的灰度值作对比,大于为1,小于为0。LBP能够表达出物体较好的纹理特征,并且具有旋转不变形的优点,在人脸识别中有着较好的结果。HOG是在计算机视觉用来进行物体检测的特征,在图像处理中应用广泛。HOG是通过统计梯度信息来进行边缘检测。相较于其他特征而言,HOG特征有着诸多优点,如拥有旋转不变形,弱化光照影响,表达能力强。因此,HOG特征被广泛应用于图像识别和目标检测领域。除了LBP和HOG等常用特征外,还有一些如SIFT的传统优秀特征。在传统图像识别和目标检测算法中,常常是将不同的特征组合起来,从而增加特征的表达能力,以此来提高图像识别率。而随着深度学习的发展,特征提取过程逐渐融合到了卷积神经网络中。2.3.3分类器使用分类器是目标检测的最后一步,分类器的选择对目标检测速度影响较大。分类器广泛应用在计算机视觉领域,经常被使用的分类器包含SVM分类器、Adaboost分类器和决策树等。(1)SVM(支持向量机)在传统机器学习分类问题中,SVM表现较为突出,是较优秀的分类器。SVM是一种二分类模型,在线性可分的数据上表现优异,有着较高的准确率。SVM是通过寻找一个最优的超平面使距离两个类别最近的样本数据最远,也就是最大化分类间隔,得到一个最优的支持向量。并且SVM还可以将低维数据映射到高维数据,这样做的优点在于可以处理部分线性不可分的问题,主要指通过将其转化成高维数据而变成线性可分,这主要应用在图像识别领域,并且能够取得较好的结果。例如在行人检测中,SVM和HOG的组合就能够产生非常好的效果,是非常经典的算法之一。(2)Adaboost分类器 Adaboost是一种基于集成学习方法和迭代分类方法的分类器。Adaboost算法的核心思想是针对同一个数据样本,训练出一系列弱分类器,尽管单一的弱分类器分类精度并不高,但把这些弱分类器组合起来却能够产生较好的结果,最终构成一个更强,精度更高的分类器。Adaboost也有着较广泛的应用,例如在OpenCV中,就使用了Adaboost分类器来作为人脸检测的分类器。(3)决策树决策树是除SVM和Adaboost外一种比较经典的分类方法。决策树是一种树形结构,除叶子结点外的节点都代表一个属性,将需要分类的数据输入到决策树的根节点之中,通过其代表的属性进行测试判断传入到下一个分支,最终在叶子节点输出,每个叶子节点代表一种不同的类别。2.3.4深度学习目标检测方法在传统目标检测算法中,由于选择检测窗口效率比较低,限制了目标检测的发展。而随着深度学习的发展,这一状况有了较大的改善,逐渐出现了一些基于深度学习的目标检测算法。目前,深度学习检测算法有单步(one-stage)算法和两步(two-stage)算法之分,主要是根据目标检测需要的检测阶段来界定的。two-stage检测算法在进行目标检测主要分为两个步骤,首先生成可能包含目标的检测窗口,再对分类窗口作进一步分类和校准,最终完成目标检测任务,其代表方法有R-CNN系列方法。而对于one-stage检测算法来说,将图像输入到网络中,能够直接输出目标类别和位置信息,省略了生成检测窗口的步骤,其代表有YOLO系列算法。2.5本章小结 本章系统介绍了卷积神经网络的结构,包括卷积层,池化层等,也对其训练过程做了系统阐述,也介绍了目标检测的三大步骤,即选择检测窗口,特征提取,训练分类器。从下一章需求分析开始,将介绍本图像标注系统总体设计实现流程。3图像标注系统需求分析 本章将结合前面章节的内容,对本图像标注系统进行可行性分析和需求分析,旨在分析该图像标注系统需要完成的功能,为后续设计、编码、测试等活动打造基础,避免后续过程出现需求不完整、需求冲突等问题。3.1系统概述 随着人工智能的兴起,图像识别理论和方法在很多领域中都受到广泛的重视并且得到快速发展。在人们的日常生活中,图像变得越来越重要。例如,在日常生活中,通过人脸识别功能完成火车站检票,在线支付,身份验证等功能,通过交通路口照片判断是否存在违章等等,这一切都离不开图像识别与图像标注。为了解决图像识别难题,以及大量的图像标注,耗时耗力,很难短时间完成的问题,提出手动标注与自动标注相结合的图像标注系统,来满足不同需求。3.2可行性分析可行性分析是以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解,有几种解以及哪个是最佳解,主要是对系统在经济要求、开发技术要求、社会需求等方面进行合理的调研评估,从而对整体系统设计和实施提供建设性意见,避免造成人力和物力的浪费。可行性分析应当具有预见性、公正性、可靠性、科学性的特点。3.2.1经济可行性分析在经济方面,本系统开发的主要成本为人力资源和设备资源。由于本系统由本人自主开发,在时间和空间上可自由支配,开发成本由本人自负故在人力资源成本上不存在问题。在设备资源方面,本系统使用免费软件进行开发,在硬件方面也不存在问题,只需在网络训练时租用gpu服务器进行训练,其成本可忽略不计。因此,在经济可行性方面,该系统的开发决策是可行的。3.2.2技术可行性分析开发本系统主要依赖深度学习和卷积神经网络等相关技术。近年来,随着人工智能热潮来袭,人们对图像标注的研究也愈加成熟,理论技术框架方面都有着较大的发展,逐渐体系化,对本基于深度学习的图像标注系统有着较大的参考价值。因此,在技术可行性方面,本系统的开发是可以实现的。3.2.3社会需求可行性分析无人驾驶、人脸识别、智能翻译……在人工智能的第三次浪潮之下,在计算力、算法与数据的合力推动下,人工智能技术的突破与行业落地如雨后春笋,焕发出源源不断的的生机。在图像识别领域也不例外,图像识别和图像标注在各个领域都有着较大的应用前景。例如,图像识别和目标检测在商业街统计人流量能够发挥作用,在车辆闯红灯拍照也能够产生大作用。在智能化的时代,人类对图像识别和图像标注都有着较大的需求。因此,在社会需求可行性方面,本系统也将有着较大的优势,是可以实现的。3.2功能性需求3.2.1图像识别 图像识别就是通过机器学习技术将图像按照相应的标签进行分类。伴随着人工智能的发展,图像识别技术也逐渐成熟,在各行各业都占据了一定的市场,应用范围广阔。在移动支付领域,图像识别已经得到广泛应用,例如通过人脸识别进行移动支付;在交通管理行业,通过摄像头和图像识别技术就能够代替交警抓拍行人或车辆的违章。图像识别的应用远不止此,因此,本功能模块有着较大的使用价值和应用前景。 在此背景下,本图像标注系统以PASCALVOC2012数据集为基础,完成对人类、动物、交通工具等20类物体的识别。图像识别是本图像标注系统的重要功能之一。系统根据用户输入的图像进行自动识别,并将识别结果返还给用户,并给用户提供一定的结果分析。3.2.2图像自动标注图像自动标注是数据标注的一类,通过机器学习的方式,使用大量已经标注的图像数据集,学习图像与语义文本之间的映射关系,最终在图像中进行标注。图像自动标注主要分为目标检测和标注两个阶段。与图像识别不同,图像识别的结果是一个类别的标签,而图像标注的任务是找出图像中所感兴趣的目标,确定它们的位置和类别。 图像自动标注在计算机视觉领域比较热门,广泛应用于人脸识别、无人驾驶、智能导航、视频监控等领域,通过机器学习的方式完成自动标注,减少人力成本和时间成本,具有较高的实用价值和现实意义。图像自动标注是本图像标注系统的核心功能。系统获取到用户输入的图像之后,对图像进行目标检测,判断图像中是否含有待检测的目标。若图像中含有待检测的目标,系统将在图像中用矩形框框选出目标并贴上对应的类别标签。3.2.3图像自定义标注 图像标注的方式有多种,不仅有自动标注,还包括人工标注。图像自动标注一般需要进行验证,避免出现错误。而人工标注的优点就是有较好的标注结果,一般不会出现错误。为了针对图像自动标注中存在部分待检测目标并未被系统标注或存在部分的错误标注的问题,需要实现图像自定义标注。它能解决图像自动标注存在的一系列问题。并且用户可以根据自己的需求进行自定义标注,而不受训练模型中所固定的检测类型限制。3.3非功能性需求 非功能性需求[20]是指除了系统必须要实现的功能模块之外,需要遵守的一定约束条件或准则。再进行需求分析时,非功能性需求也是不可或缺的,它关系到系统的实用性,完整性,可靠性。本图像标注系统需要实现的非功能性需求包括:安全性。为保护用户的隐私,本系统所处理的图像只对用户本人可见。可扩展性。本系统具有较高的可扩展性,能够适应更多用户的需求,只需要根据不同需求训练不同的模型即可。可视化界面。为满足用户良好的使用体验,本系统实现可视化界面,便于用户操作,且做到操作简单,界面简洁美观,响应速度快,图像识别和标注处理速度快。3.4用例分析 整个系统分为两大部分,训练分类器和系统功能模块实现。根据本系统需要实现的功能模块,对进行进行分析,系统各功能模块之间的用例图如下图所示。图3.1用例分析 训练分类器是本系统的核心模块。要完成本系统的功能性需求,就必须完成分类器的训练,否则系统将无法进行图像识别和图像标注。训练分类器基本流程如下图所示。图3.2训练分类器基本流程3.5本章小结 本章首先对本系统进行概述,在经济,技术,社会需求方面对本系统进行可行性分析,然后介绍了本系统的需要实现的功能模块,以及对本系统进行的用例分析。下一章将基于本章的需求分析,对本系统进行整体设计。4图像标注系统总体设计 本章将设计整个图像标注系统,包括对图像识别,图像自动标注,自定义标注功能模块的设计,也对系统整体架构进行了设计,包括前后端使用的框架和编程语言。4.1总体设计本图像标注系统主要由三个模块构成,即图像分类模块,图像自动标注模块,自定义标注模块,功能模块图见图3.1。图像分类模块即为对输入的图像进行分类处理,将图像用不同类别的标签进行分类。图像自动标注即为对输入的图像进行检测,判断图像中是否包含待检测目标并进行框选标注。自定义标注则是为了满足不同用户的需要,对图像进行自定义标注,而不受自动标注的类别限制。其中图像标注模块为本系统的核心,具体分为基于FasterRCNN的图像标注和基于yolov3的图像标注,两种算法都有其各自的特点。图3.1系统功能模块图4.2系统架构目前C/S架构和B/S架构是主流的软件系统开发架构。C/S架构是常用的两层架构,通常也称之为客户端/服务器架构。服务器运行服务端程序,客户端安装客户端软件。在此架构里服务端和客户端分别完成不同的任务,客户端处理用户的前端界面和交互操作,服务端处理后台业务逻辑和请求数据,这使得两端的通讯速度和通讯的效率大大的提高【22】。 随着互联网技术的发展,逐渐出现B/S架构。B/S架构是C/S架构变化而来的。在B/S架构下,系统通过浏览器与用户交互,少数事务在前端处理,大部分事务在服务器端处理。B/S架构将浏览器作为客户端的主要应用,能够简化系统的开发,将核心模块集中在服务器上,这样的系统架构有利于系统的开发,减少了维护系统的的工作量。 结合上述C/S架构和B/S架构的特点,B/S架构具有软件升级维护成本低,兼容性强,开发简单,可跨平台运行。本图像标注系统前端事务处理较少,核心事务处理,例如图像识别,图像标注均需要在服务器中进行处理,非常适合采用B/S架构进行系统的开发。4.3前端与后台设计由于本系统将采用B/S架构进行系统的开发,前端将采用HTML(超文本标记语言)创建网页的方式来实现。HTML元素众多,可以设计出简洁美观的网页与用户进行交互。由于python奉行简洁主义,简单,具有较高的开发效率,适合小型项目,具有较高的兼容性,且python具有丰富的库,并且支持大量的深度学习框架,如pytorch等,非常适合与机器学习有关项目的开发。基于上述诸多优点,本图像标注系统将使用python开发。本图像标注系统将根据Flask框架搭建。因为本系统是基于python开发的,Flask也是使用python编写的轻量级Web框架。不同于Django框架体量大,开发难度大的特点,Flask框架小巧、灵活,非常适合小型网站的开发,且非常容易上手。而且Flask框架定制化程度高,通过Flask框架搭建系统,可以根据系统需求添加合适的功能,定制个性化网站。本图像标注系统是一个小型项目,非常契合Flask框架的特点。因此本系统将使用Flask框架搭建。4.4详细设计 本节将根据系统的整体功能框架和设计给出图像分类、图像自动标注、图像自定义标注等功能模块的详细设计,为后续编码实现活动打造基础。4.4.1图像识别设计 图像识别对于人类来说,这是一个极其简单的任务,人类。但对于计算机来说,这将是一个复杂的任务,因为计算机与人脑并不相同,它并不懂得如何去识别图像。以猫为例,人类识别猫非常简单,因为在此之前,人类已经接触过大量的猫或者猫的图像,对猫的特征有了清晰的认知,而计算机则不懂如何去识别。但这也给了人类启发,可以让计算机模拟人类行为,让计算机通过大量图像数据进行训练学习,学习如何对图像进行分类。因此,图像识别功能主要分为两大模块,分类模型的训练和图像识别。其中,难点就在于如何训练出一个识别准确率高的分类模型。(1)数据集获取 训练分类模型首先应该获取数据集,本系统选了PASCALVOC2012数据集,其中包含20个日常生活中常见的物体类别。(2)网络模型搭建 随着深度学习的不断发展,在图像识别领域衍生出很多新的网络模型。在众多网络模型中,卷积神经网络表现较为突出,它具有一个优点:可以直接将图像作为网络模型的最底层输入,再将数据传递到不同的层,进行特征提取,分类识别。由于卷积神经网络此特性和其他优点,本系统将此采用卷积神经网络搭建训练模型,训练出一个好的分类模型。(3)模型训练设计 模型训练过程较为简单,只需跑动程序让计算机自行训练。但需要较多的前期准备工作,具体需要编写训练函数实现数据预处理,简单数据增强,设置训练迭代次数,在迭代中完成优化函数,损失计算,调整学习率等工作,最终保存训练模型即可。(4)图像分类设计 本模块的功能主要为对用户在前端输入的图像进行分类,并赋予其不同的标签,具体流程见图3.2。在系统上部署训练好的分类模型,系统接收用户输入的图像,对输入图像进行预处理,再将预处理之后的图像输入到训练好分类模型中,网络通过正向传播输出图像的类别。图3.2图像分类过程 4.4.2图像自动标注设计 与图像识别不同,图像标注分为目标检测和标注。目标检测的任务就是找出图像中是否有待检测目标,并确定它们的位置,如图像中的人,车辆,动物具体在什么位置。标注就是图像中标注出目标的位置和类别。目标检测需要考虑以下问题:图像中可能存在多个相同或不同的目标,目标可能在图像中的任意位置,目标可能被部分遮挡。因此,相对于图像识别而言,图像标注更具有挑战性。图像数据标注近年来也取得了较大的发展。目前,图像标注算法主要分为两大类。一类是RCNN系列算法,属于two-stage,先在原始图像中生成若干的候选区域,再判断候选区域中是否存在目标。另一类是yolo系列等,属于one-stage,其直接通过同一个卷积神经网络完成特征提取,候选框回归和分类。由于算法步骤不同,两类算法也具有不同的特点。two-stage算法检测准确率更高,one-stage算法检测速度更快。为了满足不同用户可能有不同的需求,本图像标注系统将实现以上两类算法的图像自动标注。与图像识别类似,图像自动标注也分为两大步骤,目标检测模型训练和图像标注。 目标检测模型训练过程与图像识别类似,本模块使用的依然是PASCALVOC2012数据集,将数据集进行预处理,根据不同目标检测算法搭建网络模型,然后训练模型。(1)数据集获取 本模块依然是使用PASCALVOC2012数据集,包含20个日常生活中常见的物体类别。根据两种不同的目标检测算法,对数据集进行相应的预处理。(2)网络模型搭建 本模块需要实现两种不同的图像自动标注算法。对于two-stage检测算法,本系统选择搭建FasterRCNN网络模型进行训练。对于one-stage检测算法,本系统选择搭建yolov3spp网络模型进行训练。因为这两种网络模型都比较具有代表性,且训练出的网络模型效果较好。(3)模型训练设计 模型训练主要是编写模型训练函数进行训练,具体包括寻数据载入,训练参数设置,损失计算,优化参数等步骤。最后使用GPU服务器训练模型,训练完成将模型保存即可。(4)图像标注设计 训练好模型后,在预测函数中选择训练好的模型。如图所示,在预测函数中输入图像,进行图像预处理,在传入网络模型中进行目标检测,在将检测结果参数保存,使用画图工具在图像中画出矩形框和类别,即可完成图像标注。图3.4图像标注过程4.4.3自定义标注设计 自定义图像标注是为了弥补自动标注可能出现标注不准确或者未能标注出待检测的目标。同时,不同用户可能对图像标注有不同的要求,自定义图像标注可以对图像任意目标进行标注,而不需要要求利用训练好的模型,也弥补了自动标注存在检测类别不足的缺陷。 如图3.5所示,自定义图像标注整体设计流程为用户选择图像,输入图像需要标注的坐标位置,再选择相对应的类别,完成自定义标注。图3.5图像自定义标注流程 图像自定义标注的实现流程较简单,但具体如何实现是值得考虑的问题。本系统采用的是B/S架构,用户是在浏览器端与系统交互。因此,本系统将采用form表单的形式,让用户输入标注位置坐标,类别等信息,在由浏览器提交给后台进行处理,完成图像标注并返回结果。本功能模块的难点在于,如何确定待标注目标的位置。让用户直接输入图像待标注目标的起始坐标位置和结束坐标明显是不现实的,因为肉眼无法确定图像大小和像素位置。针对以上问题,本系统做出如下设计: 由于本系统采用的是浏览器交互方式,使用HTML创建网页。HTML元素众多,交互方式也五花八门。本模块将采用鼠标交互的方式,待用户选择图像后,用户可以利用鼠标在图像中框选出待标注目标的矩形框,系统将自动识别出矩形框的起始坐标和结束坐标,并随用户输入的类别、颜色信息一同提交到后台进行处理并返回结果。4.5本章小结 本章对系统进行了整体设计,包括对图像识别,图像标注,自定义标注功能模块做出了详细设计,也对本系统前端后台框架进行了选择。下一章将基于本章的整体设计,对本系统需完成的功能模块的具体实现过程做出具体介绍。5图像标注系统的实现 本章将结合前面章节的设计内容进行系统的开发,详细描述包括图像识别,图像自动标注,自定义标注等功能模块的具体实现过程。5.1图像识别实现 图像识别模块主要包括模型训练和识别过程。模型训练采用卷积神经网络,考虑到resnet网络结构的优良特性,本模块将采用resnet网络模型进行训练。下面将具体介绍resnet网络模型,训练过程以及识别过程。5.1.1resnet网络ResNet全名ResidualNetwork残差网络。ResNet的结构可以极快的加速神经网络的训练,模型的准确率也有比较大的提升。传统的深度学习算法一般采用数据初始化和正则化来解决计算资源消耗高、模型容易过拟合和梯度消失/梯度爆炸问题。这种方法虽然在一定程度上解决了梯度问题,但是后续又出现了网络退化等现象,而ResNet可以解决这一问题。ResNet网络包括跨层连接,如图5.2所示。该跨层连接通过快捷连接Shortcut跨层传递输入信息,然后将其添加到卷积输出中以完全训练底层网络,相当于直接执行了恒等映射。在恒等映射函数中,假设残差网络的最优结果输出为H(X),经过卷积操作后的输出F(X),由于F(X)=H(X)-X,因此最优结果为H(X)=F(X)+X。假设残差映射比原映射更易优化,那么在极端情况下就很容易将残差推至0,即F(X)=0,这就变成了恒等映射函数H(X)=X,这比将映射逼近另一个映射要简单得多,可以从时间、效果等多方面满足要求。因此ResNet在训练中额外的参数和计算复杂度不会因此而增加,模型相当于退化为一个浅层网络,从而随着深度的增加而大大提高了准确性,不用过多地担心网络的“退化”问题。只要训练数据足够,逐步加深网络,就可以获得更好的性能表现。换而言之,ResNet可以在网络深度增加时,预测偏差减小(准确度上升),而方差也不会显著增加(泛化能力不受影响)。方差与偏差同时被优化,这在机器学习算法中极为难得。图5.2残差网络示意图随着网络深度的增加,使用ResNet有助于模型预测性能的显著提高,同时模型训练时间没有明显增加,因此ResNet成为目前应用最为广泛的卷积神经网络。ResNet通常设置18、34、50、101等多种层数选择,如图5.3所示,考虑到实验环境和数据规模,本系统选择18层的ResNet。图5.3resnet网络结构 5.1.2数据集准备本图像标注系统采用的是PASCALVOC挑战赛的VOC2012数据集,该数据集包含日常生活中常见的20类物体,如人类,汽车等,以此训练模型能够使本系统更加具有实用性。数据集的具体类别,训练集和验证集图像数量的具体信息如图5.4所示。图5.4图像数据集信息2.1.3图像数据增强 在图像识别领域,使用大规模的数据集能够训练出更好的模型,模型能够有较高的准确率和泛化能力,避免过拟合。数据集的规模和质量能够在一定程度上决定分类模型的上限。而在本系统中,由于计算能力有限,使用的是小规模数据集,数据集很难覆盖全部场景,因此需要进行一定的数据增强。图像数据增强是通过一些裁剪、旋转、翻转等操作来间接扩大数据集的操作。这样能够使数据集具有多样性,随机性,避免在训练过程出现过拟合的现象而使训练模型的识别能力降低。 在本功能模块中,在载入训练集时将图像随机裁剪成224×224的尺寸,再将图像随机水平翻转,载入验证集时将图像中心裁剪成224×224的尺寸,一方面是卷积神经网络需要有固定大小的输入,另一方面是将数据集进行简单数据增强,能够是模型在训练时拥有更好的泛化能力,学习能力,避免过拟合。5.1.4网络训练一个深度学习模型的训练有着众多的控制参数,其中是否进行迁移学习,批处理的大小,学习率大小与更新方式,训练尺度,优化方法,甚至测试方法都会影响网络的精度。所谓迁移学习,就是将在一个任务中学习较好的特征重用到另一个网络,尤其是新的网络拥有比较少的数据,或者任务比较难,对网络的初始化非常敏感的时候。本网络训练使用迁移学习方法。首先定义损失函数,再定义优化函数,将学习率设置为0.001,本次训练过程使用的是交叉熵损失函数CrossEntropyLoss()和SGD优化器。启动训练过程,本次训练将epoch设置为10,训练过程流程图如图5.2所示。首先载入resnet18预训练模型,开始迭代训练。首先进入训练模式,载入训练集,清空梯度,重置损失和准确率,将数据进行正向传播,将输出结果与目标标签计算损失,再进行反向传播,更新网络参数,降低学习率。再进入验证模式,清空梯度,重置损失和准确率,将数据进行正向传播,将输出结果与目标标签计算损失,计算平均损失和准确率。迭代结束后,将准确率最高的模型保存。图5.5训练过程流程图网络模型训练过程中的损失随迭代次数变化曲线图如图5.3所示,平均准确率随迭代次数变化曲线图如图5.4所示。图5.6损失曲线图图5.7准确率曲线图可以看到,随着迭代次数的增加,损失继续降低,同时准确率也继续提升。迭代次数到10之后,准确率基本收敛,最高达到了58.45%。当然,由于PASCALVOC数据集单个图像中可能存在多个不同类别的目标,导致训练的准确率无法得到较大的提升。若需要得到更到的准确率,在挑选数据集时,选择图像只有单一目标时,准确率将会有较大的提升。但当图像只有单一类别的目标时,本模型的识别效果还是很可观的。5.1.5识别 相对于模型训练,识别过程就较简单。首先载入训练好的模型。从文件夹中读取待识别图像,将图像缩放至256×256,再将其张量化,然后在分类网络模型中正向传播,返回概率最大的结果。5.2基于FasterRCNN的多标签自动标注5.2.1FasterR-CNN网络 FasterR-CNN使用RPN来进行候选框的提取操作,取代了传统网络中使用选择性搜索来提取候选区域的方法,具体检测过程与FastR-CNN相同。FasterR-CNN能够解决选择性搜索生成大量无效候选框,避免算力浪费,加快检测速度,减少漏检问题,。(1)FastR-CNN在R-CNN中,对于每一个候选框都使用CNN进行特征提取,没有共享计算,这其实包含了非常多的冗余操作。在R-CNN中,对于图像中的每一个候选区域都用过CNN来提取特征,由于各候选区域之间存在大量的重叠区域,使特征提取时包含了非常多的冗余计算,没有进行共享计算。而FastR-CNN借鉴SPP的原理来解决这个问题。FastR-CNN的训练过程是以整张图像为网络输入,通过CNN卷积和池化操作得到特征图;再采用选择性搜索算法提取原图像中若干候选区域,并根据候选框和特征图的投影关系,在特征图中找到相对应的候选区域。在通过RoI池化操作将特征层中的候选框池化,得到固定大小的特征图像,最终将特征图像输入到全连接层中,分别得到softmax的分类得分和边界窗口回归。(2)RPNRPN(RegionProposalNetworks)框架,如图5.8所示,它的核心思想就是设定两个卷积神经网络,一个生成候选区域,一个进行候选区域分类和边界框回归,通过共享卷积层特征并进行一次前向传播的同时得到候选区域和个无语的类别及边框。RPN通过卷积神经网络自学习的方式,生成候选区域,充分利用了卷积特征图的价值,避免传统目标检测使用Selectivesearch带来的弊端。RPN生成候选区域的过程是:将原始图像输入到网络中,先通过卷积层得到特征图像,然后用3×3的滑动窗口与特征图像进行卷积,得到256的特征向量。这个特征向量将被输入到clslayer和reglayer两个全连接层,得到目标分类和回归边界框。 传统Selectivesearch方法是在原始图像中提取候选区域。而在RPN网络中,候选区域则在特征图中生成。由于特征图的尺寸远远小于原始图像,滑动窗口的尺寸也相应减小,这能够大大降低生成候选区域时的计算量。而且RPN结构和RoI池化层共用了基础的网络结构,这也减少了参数数量,大大降低了图像检测时间。并且由于特征图中存在高层语义的抽象特征,所以在特征图中生成候选区域的可信度也有较大的提升。 图5.8RPN框架图5.2.2数据预处理 本功能模块使用的依然是VOC2012数据集。在载入数据集时,需要对图像随机水平翻转,避免训练出现过拟合,增强训练模型的鲁棒性,值得注意的是,在对训练集中图像进行随机水平翻转时,图像中目标的坐标也有了相应的变化,因此翻转时对目标的横坐标也需要进行相应的处理。5.2.3网络训练网络模型训练流程图如图5.9所示。首先,定义backbone,本次训练使用的是resnet50网络结构,载入FasterR-CNN预训练权重模型,将模型的输出层替换为要输出的类别数,本系统使用的是VOC2012数据集,加上背景类别数为21。使用torch中的Dataloader分别载入训练数据集,验证数据集。再将模型指派到设备中。遍历整个模型的权重,将需要训练的参数,也就是未冻结的参数传入SGD优化器,因为模型中存在部分冻结参数,以此来加速模型训练。将初始学习率设置为0.5%。添加调整学习率函数,规定每隔3轮降低学习率为原来的33%,目的是为了随着训练轮次的增加,损失函数将会愈加接近最佳值。根据梯度下降,随着评价指标提升,降低学习率能够使模型的性能得到提升。准备工作做好后,开始进行迭代训练,本次训练ecoph为15,在迭代过程中网络正向传播计算损失,反向传播优化参数,并调整学习率。最后使用gpu训练并保存权重模型。图5.9FasterR-CNN训练流程图如图5.10所示为训练过程中的学习率随训练轮次变化调整曲线,每训练3个轮次学习率降低为原来的三分之一,降低学习率能够优化模型参数。图5.10学习率折线图如图5.11所示为FasterR-CNN训练过程中平均损失随训练轮次变化的曲线图,可以看出,随着训练轮次的不断增加,平均损失不断降低,逐渐收敛。图5.11损失曲线图如图5.12所示为训练过程中mAP曲线图,可以看出mAP在第4次迭代达到峰值并开始收敛。由图可知,经过15轮训练就能够有较好的检测结果。图5.12mAP曲线图5.2.4预测 在进行图像预测标注时,同样是先定义与训练模型相同的模型。在载入训练好的权重模型。将需要预测的图片载入,进行预处理,也就是将图像转化成张量。再启动验证模式,将图像传入网络中进行正向传播。将得到的预测结果参数传入draw_box函数中。draw_box将预测结果以矩形框的形式绘制在图像上,以此完成图像的自动标注。5.3基于YOLOv3SPP的多标签自动标注5.3.1YOLOv3SPP网络 YOLOv3SPP是基于Darknet-53的网络结构和SPP结构的检测算法,是在图像标注领域比较流行的算法。(1)Darknet-53模型结构Darknet-53由53个卷积层组成,如图5.13所示为Darknet-53的结构图。Darknet-53没有最大池化层,它是通过卷积层来实现下采样操作。并且它使用了残差网络结构,在某些层之间设置快捷链路跨层传递信息,如图中矩形框内为一个残差结构。正是因为这些特殊结构,Darknet-53相对于传统卷积神经网络有较好的识别结果。图5.13Darknet-53网络结构(2)SPPSPP,是卷积特征上的空间金字塔池化层,是一种可对于任意尺寸的输入图像,都能够产生图像固定长度输出的网络结构,能够解决图像缩放造成信息丢失的问题。其网络结构如图5.14所示。图5.14SPP网络结构在传统的卷积神经网络结构中,一般是由全连接组成最终的分类层。全连接有一个显著的特点,它拥有相对固定的特征数,这要求图像在输入卷积神经网络时需要有固定的尺寸。而在现实生活中,图像的尺寸各不相同,不能够满足网络输入的要求。为了使图像能够在网络中正向传播,需要将图像缩放到一定的尺寸,这将会使图像产生一定的形变,而形变可能会造成团图像失真,最终影响图像检测的准确度。因此,保证图像原始尺寸输入到网络中,能够使检测精度最大化。而SPP结构能够对不同尺寸的图像,输出固定尺寸的图像,能够解决上述问题,它能够避免使用传统卷积神经网络结构对图像进行裁剪,缩放而产生图像变形失真的问题。同时,SPP结构能够有效避免传统卷积神经网络提取冗余特征的问题,在一定程度上减少的检测时的计算成本。5.3.2数据集准备本功能模块使用的数据集同样是PASCALVOC2012数据集。但与Fasterrcnn网络不同的是,使用YOLOv3SPP网络训练模型时,需要将voc标注数据集格式转为yolo标注数据集格式,并生成一系列相应的文件。5.3.3网络训练yolov3spp模型训练过程与Faster训练过程类似。首先载入网络模型,载入预训练权重模型,将模型的输出层替换为要输出的类别数。使用torch中的Dataloader分别载入训练数据集,验证数据集。再将模型指派到设备中。冻结darknet53部分参数,以此来加速模型训练。遍历整个模型的权重,将需要训练的参数传入优化器,使用优化器在反向传播过程中进行优化。设置初始学习率,添加调整学习率函数。准备工作做好后,使用gpu训练并保存权重模型。图5.15学习率曲线如图5.15所示为yolov3spp模型训练过程中的学习率曲线。由于本次训练轮次较多,学习率使用cos函数进行调整。图5.16损失曲线如图5.16所示,本次训练收敛较慢,所以训练轮次也增多。在20轮训练之后,损失基本开始收敛。图5.17mAP曲线图如图5.17所示,本次训练在25个轮次后基本开始收敛,mAP峰值为0.6.可以看出yolov3spp训练模型mAP整体低于FasterR-CNN训练模型。5.34预测 在进行图像预测标注时,同样是先定义与训练模型相同的模型。在载入训练好的权重模型。将需要预测的图片载入,进行预处理,也就是将图像转化成张量。再启动验证模式,将图像传入网络中进行正向传播。将得到的预测结果参数传入draw_box函数中。draw_box将预测结果以矩形框的形式绘制在图像上,以此完成图像的自动标注。5.3图像自定义标注实现与图像自动标注不同,图像自定义标注不需要编写一系列复杂图像检测算法,它是通过人工传入参数实现图像标注。其一是为了弥补图像自动标注出现的一系列如错检、漏检等问题。其二是弥补自动标注出现物体类别未训练而无法自动标注的问题。图像自定义标注,用户可以根据自己的兴趣喜好来进行标注。 由于本系统采用的是B/S架构,用户通过浏览器与系统进行交互。用户在浏览器端进行操作,选择输入相应的信息,提交到后端进行处理。系统接收到数据后对图像进行框选标注,将标注好的图像传输到浏览器端。 本系统采用html、css设计网页前端界面,便于用户和系统交互。在前端界面上通过javascrip编写函数对鼠标事件监听。当鼠标左键摁下时:记录起始坐标当鼠标移动时:触发事件,在canvas画布上画出矩形框当鼠标抬起时:记录结束时的坐标当用户选择标注时,将记录的数据以及用户选择的数据通过表单提交到后台系统。系统根据提交的起始坐标、结束坐标、类别以及颜色,在图像的相应位置进行标注。具体标注流程如图所示,输入图像,在图像上绘制矩形框,选择标注类别和矩形框颜色,进行图像标注,若需要继续标注,则重复上述步骤,否则保存标注结果。图5.18自定义标注流程图5.4本章小结 本章完成了本图像标注系统整体功能模块,包括图像识别,图像自动标注,图像自定义标注,并且对各功能模块具体实现流程做出了具体阐述,最终将功能模块整合,完成整个系统。下一章将对本系统各功能模块做出系统的测试,分析系统的完成情况。6图像标注系统测试本图像标注系统主要完成了图像识别、图像自动标注和图像自定义标注功能,其中图像自动标注又分为基于FasterRCNN的图像自动标注和基于yolov3spp的图像自动标注。本章将对本图像标注系统的各功能模块进行测试,分析各功能模块的完成情况。6.1测试数据及环境6.1.1测试数据 为了更好体现本图像标注系统的兼容性与实用性,测试图像来源有二,其一是PASCALVOC2012数据集中验证集中的图像,其二是来自网络上的图像。6.1.2测试环境 尽管图像识别和图像自动标注网络模型都是在GPU服务器上训练的,但考虑到本图像标注系统是针对普通用户开放的,大部分普通用户并没有GPU设备。因此,在测试过程中均使用CPU设备,以保证测试数据的真实性和实用性。系统具体测试环境如表6.1所示。操作系统Window10家庭中文版64位CPUIntel(R)Core(TM)i5-7200UCPU@2.50GHz2.70GHz内存8.00GB编程语言Python3.7框架pytorch1.8.1+cpu表6.1系统测试环境6.2功能测试6.2.1图像识别模块 如图6.1所示,本次测试共上传图像40张,识别用时6秒

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论