毕业论文如何编写?
2024-01-03 07:56:53

毕业论文开题报告怎么写?

毕业论文开题报告是一份向导师和评审委员会报告选题、研究目的、方法、预期结果和时间安排等信息的文件。写好毕业论文开题报告需要充分了解相关文献和研究成果,明确研究目的和方法,并注意语言表达的清晰度和逻辑性。

相关链接:

网站名字 地址
中国知网 https://www.cnki.net/
百度学术 https://xueshu.baidu.com/
维普智能选题 http://xuanti.cqvip.com/

一、毕业论文如何选题?

在选择合适的毕业论文课题时,不论你的专业是人工智能、硬件还是大数据

首先考虑个人兴趣和热情,确保你对课题有浓厚兴趣。同时,要考虑课题的相关性,与专业领域和未来职业方向相契合。评估自己的知识和技能水平,选择一个既具挑战性又在能力范围内的课题。

关注实际问题和应用潜力,寻找有社会价值的课题。与指导教师讨论课题选择,进行文献综述,考虑课题的可行性和资源可获得性,同时追求创新性和学术贡献。

最重要的是,不断讨论、反思和修正你的课题选择,确保它与学术和职业目标一致。

下面步骤将带着大家通过实践的方式进行选题:

1.1 打开知网搜索相关课题:

由于外网不能直接访问知网,因此若要查询知网中的内容,可以借助广西壮族自治区图书馆账号进行跳转查询:

1694241764708

点击清华同方数据库总库:

1694241818221

打开页面后点击包库入口

1694241834622

1.2 点击高级检索搜索相关主题

1694241911962

1694242419565

1.3 导出与分析-全部检索结果分析

1694241955809

1.4 在主、次要选题中挑选自己研究的关键词

1694241982844

1.5 通过关键词生成参考选题

1694242278353

1.6 点击下方参考选题

1694242557839

1.7 查重

在维普网进行查重

1694242619571

在知网再次进行查重

1694242700560

1.8 登录百度学术-开题分析

打开百度学术-点击开题分析

1694242059878

点击开始分析后,可以看到:研究趋势、关联研究、学科渗透、相关学者、相关机构

1694248503843

二、制定清晰的研究问题:

制定清晰的研究问题是撰写大学毕业论文的关键一步。为了做到这一点,首先要明确问题的范围,确保它既不过于广泛也不过于狭窄。同时,选择一个与个人兴趣和背景相关的研究领域,进行文献综述以识别知识空白,并确保问题具有明确定义、可研究和与现实世界相关。提出初步假设,然后不断修订和精炼问题陈述,以确保其具备清晰性、可行性和实际意义。这个研究问题将成为你毕业论文的核心,引导你整个研究过程。

三、进行文献综述:

进行文献综述时,首先明确其目的,然后收集并选择与研究主题相关的可信文献。

组织这些文献,并按主题、时间或方法等方式分类,确保有清晰的结构。

在撰写综述时,不仅要总结每篇文献的主要发现,还要进行批判性分析,包括方法、局限性和贡献等方面的评估。

使用适当的引用格式引用每篇文献,并提供完整的参考文献列表。

最后,确保文献综述与研究问题和论点密切相关,为毕业论文提供坚实的理论基础。

四、计划研究方法:

研究方法是科学和学术研究中用于数据收集和分析的方法和技术。

这些方法包括:

实验研究,用于确定因果关系;

调查研究,以了解人们的观点和行为;

质性研究,用于理解复杂现象;

文献综述,分析已有研究;

案例研究,深入探讨个案;

跟踪研究,观察随时间变化的现象;

比较研究,对不同群体进行比较;

历史研究,分析过去事件;

实地研究,亲自前往研究场地;

数值模拟,使用计算机模型;以及混合方法,综合不同研究途径。

研究者根据研究目的和问题类型选择合适的方法,以获得有意义且可靠的研究结果。

五、撰写论文或报告:

首先,明确定义论文的主题和目标,然后协助制定大纲和结构,包括引言、文献综述、方法、结果、讨论和结论等部分。

在引言中,应明确问题陈述和研究目的。在进行文献综述时,查找相关文献并识别知识空白。在方法部分,确保清晰描述研究方法,包括数据收集和样本选择。

以图表和表格的方式呈现数据。随后,在讨论中,解释结果的含义、讨论假设是否得到支持,并分析研究局限性。

最后,在结论中总结主要发现,提出结论和建议。同时,应正确引用和引文,以及提供持续反馈和建议。

通过这些建议和指导,学生能够更有效地组织和撰写毕业论文,确保论文内容合理、丰富,达到学术标准。

七、引用和参考文献:

大学生毕业论文的引用和参考文献部分至关重要,确保论文的学术诚信和可信度。

首先,选择所使用的引用风格,如 APA、MLA、Chicago 等,并在论文中标记引用点,包括作者姓名、出版年份、具体页面号码等信息。

在参考文献部分列出所有引用的文献,按照引用风格的规则格式化每个引用,包括姓名、标题、出版信息等,并按照字母顺序排列。

保持一致性和准确性,使用引文管理工具可以提高效率。最后,遵循所选引用风格的规范手册或指南,以确保引用和参考文献的格式符合要求。

正确的引用和参考文献不仅维护学术道德,还提升了论文的质量和可信度。如有疑问,随时向导师或指导教师寻求帮助。

八、鼓励独立思考:

要提高学生的研究质量并促使他们独立思考和提出创新的想法,可以采用多种策略。

首先,鼓励学生提出问题和思考多种观点,培养他们的好奇心。

在选择研究主题时,鼓励他们选择有趣和具有挑战性的课题。通过深入的文献综述,帮助学生了解已有研究,同时识别知识空白,激发新的研究思路。

为学生提供自主研究的机会,让他们亲自体验研究过程,包括问题制定、数据收集和分析。通过参与小组讨论和反馈,鼓励学生从不同角度思考问题。

提供多样的资源,拓宽学生的知识和视野。强调批判性思维,帮助学生质疑信息和观点,评估证据的可靠性。 实践问题解决,将学术知识应用到实际中,有助于创新思维。导师在学生独立思考和研究过程中发挥关键作用,提供指导和反馈。

鼓励学生参加研究竞赛、发表论文或参与项目,以认可和奖励创新思维和研究成果。

同时,强调失败是学习和创新的一部分,鼓励学生不害怕尝试新思路,即使失败也能积累宝贵经验。最后,教师和导师可以通过自身的实践示范创新思维,与学生分享他们的研究过程和发现,激发学生的兴趣和潜力。

这些方法共同培养了学生的独立思考和创新能力,有助于提高他们的研究质量,并为他们的学术和职业生涯提供了坚实的基础。

九、鼓励学术诚信:

强调学术诚信的重要性,防止抄袭和剽窃。

十、论文展现建议:

为了熟练地展示毕业设计的内容和成果,建议采取以下步骤:

1、确保文稿有清晰的结构,包括引言、背景、方法、结果、讨论和结论等部分;

2、使用简明扼要的文字来表达观点和结果,避免复杂的句子和术语;

3、使用图表、图像和表格来可视化数据,选择适当的图表类型,并提供清晰的标签和解释;在设计中考虑色彩和布局,确保对比度合适;对于电子演示工具,添加适度的动画或转场效果,但不要过度使用;使用分步骤的图表或流程图来解释复杂的概念或流程;举例说明观点或研究结果,使抽象内容更具体;

4、在正式演示前多次演练,并寻求反馈以提高演示质量。

还可以使用 AI 来生成 PPT 的工具,一些常见的包括 Canva、Visme 和 Zoho Show,但请在使用时审查和修改生成的内容以确保准确性和符合需求。请注意,新的工具和技术可能会随时间变化,因此建议在互联网上寻找最新的工具。

案例一:

基于百度飞桨框架的智能房屋控制系统

1、绪论

鉴于当前科技和产业的迅速演进,我们可以看到智能家居领域迎来了未来的发展趋势。我国正逐渐朝着智能家居的方向迈进,这一趋势是与新兴互联网技术和制造业的结合密不可分的。

深度学习近年来在智能家居领域得到广泛应用,特别是在计算机视觉方向的应用效果更为显著。通过视觉技术,智能家居设备能够执行一些繁琐和重复的任务,从而显著提高了家庭生活的便利性。当前,计算机视觉在智能家居中被广泛应用于识别家庭成员、控制窗帘和空调、安全监控等各方面。

近年来,随着家庭需求的多样化和技术的不断发展,家居设备也在不断更新和演进。这些设备不仅可以执行语音控制窗帘、空调等简单任务,还能提供更智能化的功能。智能家居设备可以通过语音和视觉进行交互,实现感知、决策和操作等智能行为。这些设备的视觉系统对于实现后续一系列任务至关重要,如人脸识别开门、自动感光控制窗帘等。

目前,大多数智能家居设备的视觉智能研究主要依赖于摄像头捕获图像、深度学习技术等方式来获取环境信息。这些方法使得设备能够识别家庭成员、监控家庭环境,从而实现语音控制窗帘、空调等功能。同时,这些技术还可用于人脸识别开门、感光控制窗帘等智能化操作。因此,为了实现智能家居设备在家庭环境中的稳定运行,本项目提出基于百度飞桨的智能家居系统,包括家庭成员识别、语音控制、人脸识别开门、自动感光控制等功能,以提供更智能、便利的家庭生活体验。

2、摘要

3. 深度学习算法理论

随着时代的不断进步,深度学习理论的涌现和计算机性能的前所未有的提升,计算机在数据处理和计算方面取得了质的飞跃,这为深度学习方法的迅猛发展提供了坚实基础。特别是随着 AlexNet 神经网络的引入,神经网络迎来了全新的发展时机,研究者们纷纷投入了深度学习研究的浪潮中。在这个背景下,基于深度学习的目标检测也经历了迅猛的发展。

本章将深入介绍深度学习方法的基础网络,即卷积神经网络(Convolutional Neural Network,CNN),以及与目标检测相关的方法。此外,我们还会探讨目前流行的轻量级卷积神经网络,这些网络在资源受限或需要高效推理的场景下表现出色。

这一领域的快速发展源于深度学习技术的强大潜力,它已经在多个应用领域取得了卓越的成就,包括计算机视觉、自然语言处理、自动驾驶等。深度学习方法的研究和创新不仅推动了科学研究的进步,还在商业和社会生活中产生了深远影响。

3.1 卷积神经网络

卷积神经网络(Convolutional Neural Network, CNN)是一种前馈型神经网络,由多个卷积单元组成。它具备卷积运算和深度分析的能力,可用于监督学习和非监督学习。CNN 因其出色的特征学习能力而著名,可以根据其结构特性实现对输入数据的平移不变分类,这意味着它可以有效处理不同位置的特征。

一般而言,CNN 的结构包括输入层、卷积层、池化层、全连接层和输出层等多个组成部分。在大多数 CNN 网络中,卷积层和池化层是至关重要的组件。此外,一些常见的 CNN 算法中还包括复杂的模块,如初始化和残差块等。

CNN 具有局部连接和权值共享等特性,使其能够快速处理输入图像,无需进行复杂的预处理步骤。因此,CNN 在图像处理领域得到广泛应用,用于图像分类、目标检测等各种任务。其能力和灵活性使得它成为计算机视觉领域的重要工具。

img

What is Convolutional Neural Network — CNN (images/毕业论文如何编写/1_7_BCJFzekmPXmJQVRdDgwg.png) | by Nafiz  Shahriar | Medium

3.1.1 卷积层

卷积层的主要任务是从图像中提取有用的特征信息。在卷积层中,我们使用多个卷积核,每个卷积核都是一个小的二维矩阵,其中每个元素都有一个权重和一个偏差值。这些卷积核通过与图像的不同部分进行卷积操作,以捕捉图像中的关键特征。这个操作可以看作是将卷积核在图像上滑动,对每个位置的局部区域进行加权求和,从而生成一个新的特征图。

每个卷积核的权重系数决定了它对特定特征的敏感程度。通过训练神经网络,这些权重系数会自动调整,以便最好地捕捉到输入图像中的有用信息。因此,卷积核的作用类似于一种特征探测器,能够识别出图像中的不同纹理、形状和模式。这些特征图随后会传递到网络的其他层,用于最终的分类或其他任务。

1694252517760

卷积操作的主要目的是从输入图像中提取不同的特征信息。然而,对于一些特征较为微弱或复杂的情况,浅层神经网络可能无法有效地捕获到足够的有用特征。为了克服这个问题,可以通过增加神经网络的深度来提高其特征提取能力。

假设我们有一个特征图,其大小为: ww,并且有一个卷积核,它的大小也为 ww。在进行卷积操作时,我们可以设定一个步长 S 和填充 P,这将影响输出特征图的大小,具体计算方式可以参考式(2.1)。

1694252908923

若特征图为矩形,输入尺寸:w*h,卷积核大小:kk ,步长:S,通道数:C ,填充 𝑃 个像素,输出特征图大小见式(2.2)。

1694252915228

3.1.2 池化层

池化层的本质是进行下采样操作,通常在卷积层之后使用。当数据经过卷积操作后,可能会导致数据维度增加,并且产生大量的参数,这可能导致过拟合问题。为了应对这个问题,引入了池化层,其主要作用是对数据进行压缩,筛选出关键特征图,减少参数数量和计算量,从而简化网络结构。同时,池化层也有助于提取关键特征,保留主要信息,同时保持特征的尺度不变性,还能扩大特征的感受野。需要注意的是,池化层不包含权重系数,它主要是一种无参数操作。

在神经网络中,最常用的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化层输出池化窗口内的最大值作为结果,这有助于保留原始特征中的最显著信息,同时减少网络的参数数量,提高训练速度。而平均池化不同于最大池化,它计算池化窗口内的平均值,并将这个平均值分配到窗口内的每个位置。这有助于平滑特征,降低噪声,但不像最大池化那样强调最显著的特征。

池化— PaddleEdu documentation

假设输入图像大小: $WH$,池化核大小: $kk$,池化步长:$S$ ,通道数: $C$, 填充$𝑃$个像素,则输出特征图大小的公式如下:

1694576784097

3.1.3 全连接层

全连接层(Fully Connected Layer,FC)实际上是将卷积层和池化层提取的特征信息整合成一个一维向量(扁平化),以便进行端到端的学习。通常,这一层位于卷积和池化层之后,有助于减少特征在空间位置上对最终分类结果的影响,同时也有助于减小数据的维度,避免丢失重要的特征信息。

通过全连接层,每个神经元节点与上一层的所有神经元相连接,从而获得之前层的所有特征信息。换言之也就是输入是上一个神经元的输出。

这增加了模型的复杂度,但也有助于融合具有分类能力的局部信息,减少特征位置对分类结果的影响。全连接层在卷积神经网络(CNN)中充当分类器的角色,用于最终的分类输出。

img

假如全连接的输入参数是 784 个,而输出结果 10 个。那么全连接的过程将会列出十个公式,且每一个公式的权重(公式中的$w_1$~$w_{784}$和$b_1$都是不同的)

预测的目标 公式
0 $y_0 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_0$
1 $y_1 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_1$
2 $y_2 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_2$
3 $y_3 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_3$
4 $y_4 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_4$
5 $y_5 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_5$
6 $y_6 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_6$
7 $y_7 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_7$
8 $y_8 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_8$
9 $y_9 = (x_{1} * w_{1} + x_{2} * w_{2} + x_{3} * w_{3} + … + x_{784} * w_{784}) + b_9$

3.1.4 激活函数

为了解决复杂的非线性分类问题,我们需要引入激活函数。

激活函数可以对每个神经元的输出进行处理,以增加模型的非线性表示能力。根据不同的应用需求选择不同类型的激活函数,以达到更好的分类效果。

激活函数的引入使得建立深层神经网络变得更加容易,极大地提高了模型的鲁棒性,并有效缓解了梯度消失的问题。此外,通过激活函数将特征图映射到新的特征空间,有助于加速模型的收敛。

一些常见的激活函数包括 ReLU、Sigmoid、以及 Tanh 等。

img

3.1.4.1 ReLU 激活函数

ReLU(Rectified Linear Unit)激活函数是一种常用的非线性激活函数,通常用于深度神经网络中。其数学表达式如下:

1694577724443

换句话说,对于输入的值 x,如果 x 大于等于 0,则激活函数的输出是 x 本身;如果 x 小于 0,则输出为 0。这意味着 ReLU 激活函数会保留正数输入并将负数输入截断为零。

ReLU 激活函数的主要优点包括:

  1. 非线性特性:它引入了非线性性质,使神经网络能够捕捉和学习复杂的非线性关系,从而提高了模型的表现能力。
  2. 计算效率:ReLU 计算简单,不涉及复杂的数学运算,因此在训练过程中速度较快。
  3. 缓解梯度消失问题:相对于一些传统的激活函数(如 Sigmoid 和 Tanh),ReLU 更不容易导致梯度消失问题,有助于更深的神经网络训练。

ReLU 的缺点是可能会存在神经元“死亡”的问题,即在训练过程中某些神经元可能永远不会被激活,导致它们的权重永远不会更新。为了缓解这个问题,可以使用一些 ReLU 的变种,如 Leaky ReLU 和 Parametric ReLU。

1694578358366

3.1.4.2 Sigmoid 激活函数

Sigmoid 激活函数是一种常用的非线性激活函数,通常用于神经网络中。其数学表达式如下:

1694577955415

换句话说,对于输入的值 x,Sigmoid 函数将其映射到一个取值范围在 0 和 1 之间的输出。随着输入 x 趋近正无穷,Sigmoid 函数的输出趋近于 1;而当 x 趋近负无穷,输出趋近于 0。

Sigmoid 激活函数的主要特点包括:

  1. 平滑的非线性特性:Sigmoid 函数是一种平滑的 S 形曲线,因此它具有非线性特性,可以帮助神经网络捕捉和学习数据中的复杂关系。
  2. 输出范围在 0 到 1 之间:Sigmoid 函数的输出在 0 和 1 之间,这使其特别适合用于二元分类问题,因为输出可以被解释为概率值,表示属于某一类的概率。

然而,Sigmoid 激活函数也有一些缺点,包括:

  1. 梯度饱和:在输入极大或极小的情况下,Sigmoid 函数的梯度会变得非常小,导致梯度消失问题,使得神经网络训练变得困难。
  2. 计算相对较慢:Sigmoid 函数的计算相对复杂,涉及指数运算,因此在训练大型神经网络时可能会较慢。

由于这些限制,Sigmoid 激活函数在深度神经网络中的使用已经减少,而更常见的选择是 ReLU(Rectified Linear Unit)激活函数或其变种。

img

3.1.4.3 Tanh 激活函数

Tanh(双曲正切)激活函数是一种常用的非线性激活函数,类似于 Sigmoid 激活函数,但其输出范围在-1 和 1 之间。其数学表达式如下:

img

与 Sigmoid 不同,Tanh 的输出在-1 和 1 之间变化。具体来说,当输入 x 接近正无穷时,Tanh 的输出趋近于 1;当输入接近负无穷时,输出趋近于-1。

Tanh 激活函数的主要特点包括:

  1. 非线性特性:Tanh 函数具有非线性特性,能够帮助神经网络捕捉和学习数据中的复杂关系,因此在某些情况下比线性激活函数更有用。
  2. 输出范围在-1 到 1 之间:Tanh 函数的输出范围更广泛,可以有正数和负数输出,使其适用于需要双向表示的情况。
  3. 相对于 Sigmoid 的对称性:Tanh 函数在原点(x=0)处对称,即 Tanh(0) = 0,这在某些情况下可以有益于网络的训练。

然而,Tanh 激活函数也存在一些缺点,包括:

  1. 梯度饱和:类似于 Sigmoid,Tanh 函数在输入值非常大或非常小的情况下,梯度也会变得非常小,导致梯度消失问题。
  2. 计算复杂性:Tanh 函数的计算涉及指数运算,因此在训练大型神经网络时可能会相对较慢。

尽管 Tanh 激活函数在某些情况下仍然有用,但在深度神经网络中,通常更常见的选择是 ReLU(Rectified Linear Unit)激活函数或其变种,因为它们在计算和训练方面通常更有效。

img

3.2 基于深度学习的目标检测算法

在深度学习中,目标检测算法通常分为两种主要类型:Two-stage(两阶段)和 One-stage(一阶段)。

Two-stage 算法通过两个独立的步骤来完成目标检测。首先,它使用区域候选网络(Region Proposal Network,RPN)来提出潜在的目标区域。然后,它使用神经网络进行分类和定位,以确定这些候选区域是否包含目标对象。这个过程分为两个阶段,相对较为复杂。

与之相反,One-stage 算法采用一种端到端的方法来进行目标检测。它不再需要使用 RPN 来提出候选区域,而是直接通过神经网络来完成分类和定位任务。这意味着 One-stage 算法可以在单次训练中同时学习分类和目标位置的信息,而且可以全局共享网络参数,因此具有更高的检测速度。

1694589124025

3.2.1 Two-stage 目标检测模型

Two-stage 目标检测模型的工作流程可以以 R-CNN 算法为例来说明。R-CNN 算法是一个典型的 Two-stage 目标检测模型,结合了传统目标检测方法和深度学习技术,对目标检测性能进行了有效提升。

R-CNN 模型主要由两部分组成:传统方法和卷积神经网络(CNN)。传统方法用于提取潜在目标区域,而卷积神经网络则用于检测这些候选区域中的目标位置和属性。此外,对于较小规模的数据集,R-CNN 还采用微调(fine-tuning)的方法进行预训练,以提高性能。

R-CNN 模型的目标检测过程可以分为以下四个步骤:

  1. 候选区域提取:首先,输入一张图像,利用传统的选择性搜索方法从图像中选择出约 2K 个独立的候选区域。然后,将这些区域调整为相同的大小以进行后续处理。
  2. 特征提取:接下来,使用卷积神经网络(CNN)从每个候选区域中提取固定长度的特征向量。这些特征向量将用于后续的分类和定位任务。
  3. 目标分类:将提取的特征图传入支持向量机(SVM)多类别分类器,以对每个候选区域中的目标进行分类。这一步骤有助于确定目标的类别。
  4. 非极大值抑制(NMS):最后,使用 NMS 技术对候选区域中的目标进行位置修正,以消除重叠的检测结果,从而得到最终的目标检测结果。

1694591957703

img

3.2.1 One-stage 目标检测模型

One-stage 目标检测算法与 Two-stage 算法不同,它摒弃了两个阶段的复杂性,只使用卷积神经网络来一次完成目标检测的关键任务,包括确定目标的位置、类别以及类别的置信度。

典型的 One-stage 算法代表是 YOLO(You Only Look Once)系列算法,其中以 YOLOv1 为例进行介绍。YOLO 模型可视为解决目标检测问题中的边界框回归问题,只需要对输入图像进行一次前向传递计算,即可获得目标的关键信息。

YOLO 系列经过多个版本的改进和完善,包括 YOLOv2、YOLOv3、YOLOv4、YOLOv5、YOLOv6、YOLOv7、YOLOv8 等。这些模型的共同特点是将目标检测任务简化为单一阶段的处理,而无需复杂的候选区域提取和后续处理步骤。这种方法使得 YOLO 系列模型在目标检测任务中具有高效性和实时性。

1694591976172

1694592030643

1694592511776

对照下图 YOLOv1 目标检测的过程:

  1. 输入图像首先被规范化并裁剪到一个固定大小,通常是 448x448 像素。
  2. 然后,这个图像传递给一个卷积神经网络进行处理。网络将图像划分为一个个小单元网格,每个单元网格负责检测可能的目标。
  3. 对于每个单元网格,模型进行边界框的预测,包括目标的类别和位置。
  4. 最后,结合所有的预测结果,得到一系列潜在的目标窗口。为了消除不太可能的预测,使用非极大值抑制(NMS)来选择最终的目标边界框,以及它们的类别和位置。

这个过程的目标是在图像中识别出物体,确定它们的类别和位置,然后过滤掉不必要的或重叠的预测框,以获得最终的目标检测结果。

1694595348871

3.3 轻量级卷积神经网络

虽然 YOLO 算法在目标检测性能上表现出色,但由于其复杂的网络结构,它具有大量的权重参数,对设备内存和计算资源的要求较高。这使得将 YOLO 部署到嵌入式移动设备上变得更具挑战性。

为了解决这个问题,轻量级卷积神经网络应运而生。这些轻量级网络模型通过对初始网络进行压缩,设计更简单、参数更少的网络结构,从而显著减小了网络的体积。

近年来,出现了许多轻量级网络模型,它们在简化网络结构的同时,仍然能够取得出色的检测性能。其中,两个常见的轻量化模型是 MobileNet 和 ShuffleNet。

这些轻量级模型的主要目标是在减小模型大小和计算负担的同时,尽量不降低检测精度,使得神经网络可以更轻松地部署到资源受限的移动设备上。这种轻量化的方法使得在嵌入式移动端设备上实现高效的目标检测变得更加可行。

3.3.1 卷积计算

在神经网络中,我们经常提到两个重要的概念:参数量和计算量。

参数量指的是神经网络中的参数数量,也就是模型中需要学习的权重和偏差的数量。这些参数保存了神经网络的知识,通常以百万(M)为单位来衡量。参数量与模型的大小直接相关,因为更多的参数通常意味着更大的模型。

计算量是指神经网络在进行前向和反向传播时所执行的乘法和加法运算的次数。这与模型的计算复杂性和运行速度有关,通常与时间消耗相关。在卷积神经网络中,特征图的生成是通过一系列复杂的卷积和池化操作来实现的,这些操作需要大量的计算量。

1) 标准卷积
假设输入特征图尺寸:$𝐶_{𝑖𝑛} × H × W$,输出通道数:$𝐶_{𝑜𝑢𝑡}$,则卷积过程中有 𝐶𝑜𝑢𝑡 个卷积
核,卷积核尺寸:$𝐶_{𝑖𝑛}$ × K × K,故参数量(parameters)和计算量(FLOPs)大小如下。
参数量:$𝑃 = 𝐶_{𝑖𝑛} × 𝐶_{𝑜𝑢𝑡} × K × K $
计算量:$F = 𝐶*{𝑖𝑛} × 𝐶*{𝑜𝑢𝑡} × H × W × K × K $
1694596437890

2)深度卷积
深度卷积(DepthWise Convolution,DW)与标准卷积不同的地方在于它采用了单通道模式。这意味着每个输入通道都会与一个单独的卷积核进行卷积计算。因此,深度卷积后的特征图数量与输入的通道数保持一致。

参数量:$𝑃_{(DW)} = K × K × 𝐶_{𝑖𝑛} × 𝐶_{𝑜𝑢𝑡} $
计算量:$F*{(DW)} = K × K×𝐶*{𝑖𝑛}× H × W $

下图显示了深度卷积的过程,通过图中提供的信息,我们可以确定输入图像的大小和通道数,以及卷积核的尺寸。因此,我们可以计算出深度卷积所涉及的参数数量和计算量。

1694596368801

3)逐点卷积
逐点卷积(PointWise Convolution,PW)实际上就是常规的卷积操作,但它的特点是用于调整特征图的通道数,可以增加或减少通道的数量。你可以把它看作是一个类似全连接层的操作,但是它作用在每个像素点上,而不是整个图像。

通常情况下,逐点卷积会与深度卷积结合使用,这种组合被称为深度可分离卷积(Depthwise Separable Convolution,DSC)。这种组合的目的是减少模型的参数数量和计算复杂性,从而提高网络的效率。深度可分离卷积能够在不损失性能的情况下显著减小模型的规模,这对于嵌入式设备和移动端的部署非常有用。

在逐点卷积的操作中,我们使用图中的信息来调整特征图的通道数,以便更灵活地改变网络的结构和性能。这一操作有助于优化神经网络,使其更适合于各种应用场景。

1694599738523

参数量:$𝑃_{(PW)} = 𝐶_{𝑖𝑛} × 𝐶_{𝑜𝑢𝑡} $
计算量:$F*{(PW)} =𝐶*{𝑖𝑛}×𝐶_{𝑖𝑛}×H×W$

深度可分离卷积 DSC 的参数量和计算量:

参数量:$𝑃_{(DSC)} = K × K×𝐶_{𝑖𝑛}+𝐶_{𝑖𝑛}×𝐶_{out}$
计算量:$F_{(DSC)} = K × K×𝐶_{𝑖𝑛}×H×W+𝐶_{𝑖𝑛}×𝐶_{out}×H×W$

根据上述求得的标准卷积和深度可分离卷积的参数量和计算量,可得到二者的比值为:

参数量比值:

$$
\frac{P_{(DSC)}}{P}=\frac{ K × K×𝐶_{𝑖𝑛}+𝐶_{𝑖𝑛}×𝐶_{out}}{K × K × 𝐶_{𝑖𝑛} × 𝐶_{𝑜𝑢𝑡} }=\frac{1}{𝐶_{out}}+\frac{1}{K^2}
$$

计算量比值:

$$
\frac{F_{(DSC)}}{F}=\frac{ K × K×𝐶_{𝑖𝑛}×H×W+𝐶_{𝑖𝑛}×𝐶_{out}×H×W}{ 𝐶_{𝑖𝑛} × 𝐶_{𝑜𝑢𝑡} × H × W × K × K }=\frac{1}{𝐶_{out}}+\frac{1}{K^2}
$$

根据上述公式,我们可以看出深度可分离卷积的参数数量和计算复杂度远远小于标准卷积。特别是当输出通道数$𝐶_{𝑜𝑢𝑡}$足够大时,公式中的$\frac{1}{C_{out}}$趋近于 0,可以忽略不计。这意味着,标准卷积的参数数量和计算量是深度可分离卷积的$K^2$倍。

因此,深度可分离卷积的使用可以极大地减小模型的参数数量和计算复杂度。这使得它成为神经网络轻量化的重要工具。通过采用深度可分离卷积,我们可以在不牺牲性能的情况下,显著减小模型的规模,使其更适合于嵌入式设备和移动端应用。

3.3.2 MobileNet 网络

在 2017 年,Google 团队为嵌入式设备提出了一种称为 MobileNet 的轻量级神经网络架构,这成为目前广泛使用的轻量化方法之一。MobileNet 有三个版本:MobileNetv1、MobileNetv2 和 MobileNetv3。

MobileNetv1 以深度可分离卷积(DW)为核心,目的是为了实现高效的神经网络模型。MobileNetv2 在 MobileNetv1 的基础上引入了逆残差结构和线性瓶颈,以进一步提高模型的效率。MobileNetv3 则引入了轻量级注意力机制(SENet)和自适应激活函数(H-Swish),以进一步提升模型的性能。

MobileNetv3 目前被广泛视为一种有效的轻量化方法。该模型的结构和设计使得它在保持性能的同时,能够在嵌入式设备上高效运行。下图展示了 MobileNetv3 的结构。

这些 MobileNet 版本的目标是在轻量化模型的同时,尽可能地提高性能,使其适用于移动设备等资源受限的场景。

1694601105482

3.3.3 ShufffleNet 网络

ShuffleNet 是一种专为移动设备和低端硬件设计的轻量级卷积神经网络。它引入了通道混洗(Channel Shuffle,CS)操作,这个操作的目的是在有限的计算资源下实现高效性能的模型。通道混洗操作有助于充分融合特征图中不同通道的信息,从而增强特征提取能力。

通道混洗的主要实现过程如下:

1)通过组卷积(Group Convolution,Gconv)将不同通道中的输出特征打乱并重新组合,这样可以实现不同通道之间的信息交流和融合,而且不会增加计算量。

2)将通道数所在的维度分成两个部分,然后通过矩阵转置对它们进行变换。

3)将输入通道数重塑为两个维度,其中一个表示组卷积的数量,另一个表示每个组卷积包含的通道数。

ShuffleNet 的基本结构如图示所示。它的设计目的是在移动设备等资源受限的环境中实现高性能的特征提取,同时保持模型的轻量化。这使得 ShuffleNet 成为了在嵌入式设备上部署深度学习模型的有力选择。

1694601255009

在下图中(a)展示了一个具有深度卷积和逐点卷积的残差模块(b)则显示了 ShuffleNet 的基本单元,它包含组卷积、通道混洗和深度卷积,采用了轻量级的深度可分离卷积,极大地降低了计算复杂度。(c)是一个带有全局平均池化的下采样 ShuffleNet 单元,其中一个分支采用了平均池化(步幅为 2)来实现下采样,然后两个分支进行融合以增加通道数。由于这些出色的结构特性,ShuffleNet 能够非常高效地完成计算任务。

1694601266546

下图展示了 ShuffleNet V2 的基本模块。在下图的 Unit 1 中,输入特征的通道数被分成两组,只有右侧分支被处理。右侧分支首先经过一个 1×1 卷积,然后通过深度可分离卷积(DW)和逐点卷积进行卷积操作。接下来,卷积的结果与左侧分支进行特征融合,即通道数相加。最后,通道混洗操作被应用于融合后的结果,以实现不同通道之间的信息交互,从而提取更丰富的特征。

在下图的 Unit 2 中,左侧引入了降采样操作,通过深度可分离卷积(DW)和逐点卷积进行降维,并进一步减少参数数量。Concatenation 操作将通道数增加到初始输入的两倍,从而增加了网络的宽度,进一步增强了网络的特征提取能力。这些模块的设计使 ShuffleNet V2 能够高效地进行特征提取。

1694601433736

3.4 本章小结

本章深入研究了深度学习的基本理论以及目标检测的原理与实现方法。我们详细探讨了卷积神经网络(CNN)的核心概念,包括卷积层、池化层、全连接层和激活函数的作用与重要性。此外,我们还介绍了两种主要的目标检测方法,即 Two-stage 和 One-stage。

Two-stage 目标检测方法以 R-CNN 为代表,分为两个阶段,分别用于特征提取和候选区域的位置与类别输出。相比之下,One-stage 目标检测方法以 YOLO 为代表,通过端到端的训练直接输出最终的目标类别和位置信息。

最后,我们还深入研究了两种轻量级网络结构,MobileNet 和 ShuffleNet。这些网络的设计目的是在保持性能的同时降低模型的规模,使其更适合于资源受限的环境。这些内容为进一步的研究提供了重要的理论基础和参考。

3. 系统架构与设计

  • 系统整体架构:详细说明智能房屋控制系统的组成部分,包括摄像头、人脸识别模型、门控制装置、音乐播放器等。
  • 数据流程:阐述信息从摄像头到各个模块的传递与处理过程。

4. 人脸识别模型开发

  • 数据收集与预处理:收集人脸图像数据集并进行预处理,包括人脸对齐、尺寸调整等。
  • 模型选择与训练:选择适当的人脸识别模型,使用百度飞桨框架进行模型训练。
  • 模型评估与优化:评估模型性能,优化模型参数以提高准确率和鲁棒性。

5. 智能房屋控制系统实现

  • 门控制装置:设计与实现自动门禁装置,通过人脸识别结果控制门的开关。
  • 音乐播放器:开发音乐播放器模块,实现在主人回家时自动播放音乐的功能。

6. 用户界面与交互设计

  • 开发手机应用或网页界面:为用户提供操作界面,展示人脸识别结果和手动控制选项。
  • 用户交互设计:设计用户与系统的交互流程,确保操作简便友好。

7. 系统测试与性能评估

  • 功能测试:验证人脸识别、门控制和音乐播放功能的正确性和稳定性。
  • 性能评估:测试系统的响应时间、识别准确率等指标,检验系统的性能表现。

8. 结论与展望

  • 总结设计成果:回顾整个毕业设计,总结取得的成果和创新点。
  • 展望未来:探讨该系统在智能家居领域的潜在应用,提出进一步改进和拓展的方向。

9. 参考文献