针对目标检测类神经网络轻量化算法的探讨与实现

论文价格:150元/篇 论文用途:硕士毕业论文 Master Thesis 编辑:硕博论文网 点击次数:
论文字数:53656 论文编号:sb2024070114370952559 日期:2024-07-07 来源:硕博论文网

本文是一篇软件工程论文,本文对传统的知识蒸馏算法进行了分析,提出了目前知识蒸馏算法的不足,随后对其蒸馏损失进行了处理,将其分为TCKD和NCKD两部分,并通过实验证明了这两部分在知识蒸馏过程中起到的作用,并与传统知识蒸馏算法以及目前效果较好的特征蒸馏算法做了对比,证明了本蒸馏算法在分类蒸馏上的优越性。
第一章 绪论
1.1 研究工作的背景及意义
近年来,深度学习这一领域正在蓬勃发展,在此前提下,计算机视觉技术也被广泛应用到各种行业各种领域,比如智慧医疗、智慧交通以及智慧工业等各种领域。传统的计算机视觉技术通常采用CV技术来解决目标检测问题,其中包括特征描述子等,但是这一过程也相当复杂,首先需要在图像中抽取出一块区域,然后进行特征提取,最后再通过分类器对其特征进行划分,从而确定每个目标的类别。从上列描述也可以看出,传统的计算机视觉技术的缺陷在于,必须让CV工程师来从每张图像中提取重要特征,而随着人们需求的提升,需要处理的目标类别也越来越多,因此特征提取也就变的越来越麻烦。深度学习技术通过提供大量图像数据集来实现端到端学习,这些数据集上已经标注好了目标的类别,并且可以通过建立神经网络来提取特征,从而大大减少了传统目标检测算法计算的推导周期和人工花费,如图1-1所示。

软件工程论文怎么写
软件工程论文怎么写

......................
1.2 神经网络轻量化算法的国内外研究现状
目标检测算法的提出要早于神经网络轻量化算法,它们是两个不同的研究方向。神经网络轻量化算法是随着深度学习逐渐发展而产生的产物,而目标检测算法最早是采用传统的计算机视觉技术处理。而针对目前越来越复杂的卷积神经网络模型存在的一些难以部署到低算力平台、存储空间不够等问题,很多专家学者将心思投入到模型轻量化处理方法上,希望通过轻量化算法的处理使得模型参数更少或者是让原本性能较差的模型得到提升。
论文[13]提出了一种新的轻量化方法,它能够大幅度减少神经网络的参数和计算量,而且不会影响其准确性。该方法只学习神经网络中重要的连接,而对于其他连接则不会考虑,将其视为冗余值,从而实现了更高效的学习。但是该方法的缺陷在于它只能应用在如AlexNet等网络上。通过使用该方法,AlexNet网络在ImageNet数据集上的参数数量减少了89%,并且没有损失精度,在VGG-16上也进行了类似的实验,使其参数数量减少了13倍,并且同样的没有损失精度。
而像论文[14]也是使用前文提到过的稀疏剪枝方法并结合参数量化,对特定的YOLOv1模型进行优化的,减少了模型的冗余参数。除此之外,论文[15]也使用了参数量化方法中的二值化方法对YOLOv2网络模型进行了轻量化处理,创新地提出了逐层量化的方法,按网络深度从深到浅的倒序方式来逐层量化参数,在降低了YOLOv2模型32倍大小的同时,还保持住了模型的精度。
..........................
第二章 目标检测背景和理论基础
2.1 目标检测定义及评价指标
近年来,随着深度学习的大力发展,目标检测领域的主流算法也从以前的传统机器视觉变成了现在的深度卷积神经网络,而如何从图像中获取到能够让机器理解的信息是整个机器视觉领域很重要的一个问题,深度学习凭借其海量的数据积累、强大的算力设备的支持以及自身突出的表示能力,成为了新的机器视觉的热点研究方向。
而对于一张图片来说,根据任务的需要,可以有三种让计算机理解的层次。如图2-1所示。

软件工程论文怎么写
软件工程论文怎么写

首先是分类任务。计算机使用实现规定好的类别或ID等标识符来描述图片,将图片结构化为某一类别的信息。图像分类是机器视觉任务中最简单也最基础的任务,它是整个机器视觉任务的基石,为其他的任务提供了很多优秀的深度卷积神经网络结构作为特征提取的依据。在各种常用的应用领域,如人脸识别、场景识别都发挥了很重要的作用。
其次是检测任务。分类任务所做的事就是描述整张图片的内容,而对具体内容的位置却无法描述,检测任务就是在分类任务的基础上进行的,它除了要关注到每一个物体本身的类别信息,还需要给出这个物体的位置信息并以特定的方式将其标注出来。相较于分类任务来说,检测任务强调的是对图片前景和背景的理解,它从背景中将需要被关注的目标分离出来,然后确定该目标的类别信息和位置信息。
最后就是分割任务了。分割任务主要是对图像中被检测部分和背景部分做分离处理,主要分为两种类别:语义分割和实例分割。语义分割是将图片中不同类别的目标物体与图像杂物切割划分开;而实例分割则与检测任务相似,要求将目标物体的轮廓给描述出来,但是相较于目标检测的粗略标注,实例分割则是像素级别的描述,它将图像中的每一个像素都标注上了其所属的物体,适用于一些对分割要求较高的场景,如自动驾驶。
.....................
2.2 主流目标检测算法
2.2.1 两阶段目标检测算法
在前文中也提到过,两阶段目标检测算法是目标检测两大主流算法之一,而其中的两阶段是由不同的两个网络完成的。而在本小节中,将重点介绍两阶段目标检测算法中的代表之作R-CNN以及后续的发展之作Fast R-CNN[29]、Faster R-CNN[30]。
R-CNN最初是在CVPR的一篇2014年的文献上被Ross Girshick等人提出并发表。该算法的提出,代表着目标检测算法从传统机器视觉领域开始进入到深度学习时代,相较于之前的传统目标检测算法,其提升达到了30%以上,改变了学者和专家们的研究方向,它主要由候选框提取、图片特征提取和目标分类回归这三个部分组成,如图2-5所示。
首先是候选框提取,R-CNN采取的提取方式是使用13年提出的一种选择性搜索方式,通过该方法,可以产生大概2000个大小不同的候选框,每个候选框都是一个联通的区域;而在特征提取方面,R-CNN则采取了AlexNet网络,将输入图片resize成227*227的格式;最后一步则采用了SVM分类器,分类器的数量取决于数据集中物体的种类。但是R-CNN的缺点在于它提取特征和分类的耗时较长以及占用磁盘空间较多,这些缺点也促进了后续优化版本的诞生。
Ross Girshick等人在2015年对R-CNN的一系列缺点进行了优化,将特征提取的网络从AlexNet替换成了VGG-16,另外,R-CNN速度较慢的原因之一就是它需要将2000多个候选区域传入到CNN中,针对这一点,Fast R-CNN剔除出ROI Pooling的方法进行优化,将输入图像直接提供给CNN结构来生产卷积特征图,极大地减少了执行的时间,实验结果表明,相比于原始的R-CNN网络,Fast R-CNN快了200多倍,除此之外,其检测精度还获得了显著的提升。然而,Fast R-CNN处理一张图片的候选区域需要花大概两秒钟,这也是Fast R-CNN可以优化的一个方向。
...........................
第三章 对于目标检测类神经网络的知识蒸馏方案 ........................... 25
3.1 现有知识蒸馏方案分析 .................................. 25
3.2 改进的知识蒸馏方案分析 ............................... 27
第四章 基于剪枝算法的轻量化部署方案 ............................... 44
4.1 现有剪枝方案分析 ..................................... 44
4.1.1 非结构化剪枝 ............................. 45
4.1.2 结构化剪枝 ......................................... 46
第五章 目标检测模型轻量化系统 ........................ 64
5.1 系统概述 ...................................... 64
5.2 需求分析 ................................... 65
第五章 目标检测模型轻量化系统
5.1 系统概述
目前神经网络模型的体积日益庞大,其应用场景也变得十分广泛,智慧交通、智慧医疗、行人检测以及普通的物体检测等领域都有目标检测的身影,而往往在这些场景中会因为GPU等设备的限制难以完成模型部署,而模型轻量化又需要一定的深度学习基础才能处理,因此在本章中设计并实现了一个能够进行可视化轻量化处理模型的系统,在本系统中,用户可以通过系统内已有的一些知识蒸馏、稀疏剪枝技术进行模型轻量化处理。另外,考虑到用户可能还需要对模型做一些定制化的处理,因此还提供了编辑模式,用户可以通过该编辑模式对代码进行修改或者上传模型,从而达到定制化处理的目的。综上所述,整个系统分成了如图5-1所示的几个功能模块:

软件工程论文参考
软件工程论文参考

.............................
第六章 总结与展望
6.1 全文工作总结
目标检测是目前计算机视觉任务的研究热点之一,现实生活中也被广泛应用到各种领域。但诸如智能穿戴设备、自动驾驶等领域的人工智能设备算力资源有限,难以将目前体积庞大、算力要求高的目标检测算法部署到上面,因此又一领域的研究被提出,也就是模型轻量化。本文以此为研究背景,基于目标检测网络的特点,设计出了一套适用于目标检测类算法的轻量化处理和部署流程,实现了将复杂的目标检测模型轻量化处理之后并部署在低功耗平台上,并设计与实现了搭载本文所设计算法的目标检测模型轻量化系统。
首先,本文对传统的知识蒸馏算法进行了分析,提出了目前知识蒸馏算法的不足,随后对其蒸馏损失进行了处理,将其分为TCKD和NCKD两部分,并通过实验证明了这两部分在知识蒸馏过程中起到的作用,并与传统知识蒸馏算法以及目前效果较好的特征蒸馏算法做了对比,证明了本蒸馏算法在分类蒸馏上的优越性。另外,本文针对知识蒸馏算法在目标检测领域表现不佳的情况,分析在前文中的logits蒸馏仅作用在了分类知识上,而对于目标检测任务来说,定位知识也是影响检测精度的关键因素,因此本文提出将知识蒸馏思想应用于定位知识上,并将改进后的分类蒸馏算法与定位蒸馏算法结合,让目标检测算法分别从分类和定位两个方向蒸馏,既减小了模型的体积,又提高了模型的精度。经过实验证明,本文所设计的全新蒸馏算法在目标检测任务中取得了良好的表现。
另外,针对当前目标检测算法体积过大,占用内存过多,本文设计了一种通道剪枝的方法,通过约束BN层的γ参数来作为衡量通道重要性的标准,将重要性低的通道去除达到剪枝的效果,减小了模型的体积,但剪枝会对精度造成影响,而考虑到之前改进后的知识蒸馏能够有效提升模型的精度,因此结合改进后的知识蒸馏算法和通道剪枝算法,提出了一套完整的目标检测模型的轻量化处理方案,首先对目标检测模型进行知识蒸馏,再对蒸馏后的模型进行剪枝,减小模型体积的同时还保证了模型精度尽量不受影响,并在最后部署到低功耗平台Jetson Nano上,通过实验证明经过本方案处理后的目标检测模型不仅能够在保证模型精度的同时使得模型体积更加轻量化,还能够提高模型的推理速度,验证了本文所提出方案的有效性。
参考文献(略)


如果您有论文相关需求,可以通过下面的方式联系我们
点击联系客服
相关软件工程论文论文
QQ 1429724474 电话 18964107217