传知代码-融合经典与创新的图像分类新途径

代码以及视频讲解

本文所涉及所有资源均在传知代码平台可获取

概述

在当前的深度学习领域,构建兼具高性能与灵活性 的卷积神经网络(CNN)已成为计算机视觉研究的核心课题。本文介绍了一种全新的卷积神经网络架构 ,该网络巧妙地结合了ResNet的残差连接 、Inception的多尺度卷积模块 ,以及多头自注意力机制 ,不仅增强了特征表达能力,还显著提升了模型在不同任务中的适应性。特别值得一提的是,本文还首次引入了一个全新的图像数据集,该数据集目前尚未被其他研究团队使用。这为研究人员和开发者提供了一个前所未有的机会,能够在一个未曾开垦的领域中探索和验证新算法的有效性。

本文创新点

  1. 融合架构:结合了ResNet的残差连接、Inception的多尺度特征提取以及多头自注意力机制的网络设计,充分发挥了各自的优势。
  2. 未使用的数据集:首次使用一个全新的图像数据集,为研究者提供了一个全新的实验平台,具有很高的研究潜力。
  3. 实用性:在多个数据集上的实验验证了模型的鲁棒性和适应性,能够为实际项目和学术研究提供强有力的支持。

残差连接

残差连接 通过引入跨层的直接连接,缓解了深层神经网络中的梯度消失问题,促进了更深层网络的训练。其核心思想是让网络学习到输入和输出之间的残差(即差值),而不是直接学习复杂的映射,从而简化了深层网络的优化过程。这一创新显著提高了深层神经网络的性能,是ResNet取得成功的关键因素。如下图:

残差连接的核心原理可以这么通俗的解释 一下:

想象你在学习一门新的技能,比如骑自行车。刚开始的时候,你需要学会如何保持平衡,避免摔倒。假设你在每一次练习时都能保持一定的平衡,那么学习的难度会降低,因为你不需要从头再学一次如何保持平衡,而是直接在已有的基础上进行改进。

在神经网络中,尤其是很深的网络,训练过程有时会变得非常困难。这是因为每一层都要学习如何从上一层的输出中提取有用的特征。如果网络很深,这个过程可能变得非常复杂,导致训练变得困难,效果也可能变得不稳定。

残差连接的作用就是类似于在骑自行车时给你一个平衡的辅助装置。具体来说:

  1. 直达连接:就像在骑自行车时使用辅助轮,让你在每次练习时都有一个稳定的基础。残差连接允许网络的输入直接跳过一些层,然后和经过这些层处理后的输出进行结合。这就像在网络中添加了一个"直达路径",帮助网络更容易地学习到复杂特征。

  2. 简化学习任务:网络不再需要完全从头开始学习如何处理数据。通过残差连接,网络实际上是学习如何在已有的基础上进行改进,就像你在骑自行车时只需专注于改进平衡,而不必从头再学骑车的基础。

  3. 解决深层网络问题:深层网络有时会遇到训练困难的问题,比如梯度消失(网络无法有效地学习)。残差连接帮助网络保持稳定,因为它允许信息更容易地从前面的层传递到后面的层,就像你的辅助轮帮助你在骑车时保持平衡一样。

多尺度特征提取

Inception模块的核心在于通过并行使用不同大小的卷积核和池化操作,实现了多尺度特征提取,并通过1x1卷积进行降维和特征整合。这种设计使得网络能够有效地捕捉到丰富的特征信息,提高了模型的表现力和灵活性。如下图:

多尺度特征提取核心原理可以通俗的解释 为:

假如你在做一道复杂的菜肴,准备了多种不同的调料和配料。每种调料和配料能够带来不同的味道。如果你只用一种调料,可能无法得到最丰富的口味。而如果你同时使用多种调料,每种调料贡献自己独特的味道,最后合成一个丰富的口味。

Inception模块在神经网络中就像这种做菜的过程。它的核心思想是同时使用多种"调料"(即不同大小的卷积核),以获取丰富的特征信息。

具体来说:

  1. 多种卷积核

    就像你同时使用了不同的调料,Inception模块使用不同大小的卷积核(比如小的和大的卷积核)来提取图像中的不同特征。小卷积核关注细节,大卷积核则捕捉更大的区域特征。这样,网络能够从不同的"视角"来理解图像。

  2. 1x1卷积

    这个操作类似于调整调料的浓度,使得最终的味道更加平衡。在网络中,1x1卷积用于减少特征的数量,降低计算量,同时提取出更重要的特征。

  3. 池化层

    就像在做菜时你可能会去除一些多余的水分,池化层则用来减少图像数据的尺寸,保留最重要的特征信息,进一步减少计算复杂度。

  4. 特征融合

    所有这些不同的卷积操作和池化操作的结果都会被结合在一起,像把所有调料混合在一个菜肴中。这使得网络可以从多种特征中得到综合的信息。

至于多头注意力 ,在另外一篇文章中介绍过,可以参考。

本文框架

本文一共有六个部分组成,这六个部分分别为:网络主干Reduction1不对称卷积块1Reduction2不对称卷积块2 ,平均池化和多头注意力模块

该网络结合了多种模块的神经网络架构,其中包括不对称卷积块、多尺度特征提取模块(类似Inception模块)、多头注意力机制以及Reduction块。融合这些模块主要具备 以下优势

  1. 不对称卷积块
    不对称卷积是通过将一个较大的卷积核(如3x3或7x7)分解为多个较小的卷积核(如1x3和3x1)来实现的。这种设计能够减少参数量和计算量,提升卷积操作的效率,同时保持较大的感受野。应用场景:适合在需要较大感受野但计算资源有限的场景中使用,特别是在深度神经网络中减轻计算负担。
  2. 多尺度特征提取模块(Inception模块)
    多尺度特征提取模块通过并行使用不同大小的卷积核和池化操作来提取图像的多尺度特征。这使得网络能够同时捕捉到细节和全局特征,从而提高特征表达的丰富性和网络的鲁棒性。应用场景:特别适用于需要处理多种尺度信息的任务,如图像分类和目标检测。
  3. 多头注意力机制 :
    多头注意力机制通过多个注意力头并行处理输入数据,能够从不同角度捕捉数据的特征,并将这些信息融合在一起形成更强的特征表示。它尤其擅长处理复杂的数据依赖关系和序列数据。应用场景:广泛应用于自然语言处理任务以及需要捕捉长距离依赖关系的图像处理任务。
  4. Reduction块 :
    Reduction块通过结合卷积操作和池化操作,将特征图的尺寸进行压缩(降维),从而减少计算量,并同时保留关键的特征信息。它有助于在深度网络中有效控制计算资源的消耗。应用场景 :通常用于深层网络中的中间阶段,以减少特征图尺寸并控制计算复杂度,适合用于图像分类和对象检测等任务。
  5. 模型整体优势 :
    这个网络架构通过组合上述各个模块的优势,能够在保持较高精度的同时,显著降低计算成本。其多尺度特征提取和注意力机制的结合,使得网络对复杂场景下的多样化特征有很好的表达能力和适应性。应用场景 :适合应用在需要高精度和高效计算的场景中,如图像分类目标检测医学图像分析等任务。
  6. Softmax分类器 :
    在模型末端使用Softmax分类器可以将网络输出转化为概率分布,这对于多分类问题特别有用。这使得模型输出可以直接解释为每个类别的概率,便于后续的评估和优化。

数据集介绍

NEU-CLS

该数据集是东北大学(NEU)表面缺陷数据库中,收集了热轧钢带的6种典型表面缺陷,即卷积鳞片(RS)斑块(Pa)龟裂(Cr)凹坑表面(PS)夹杂物(In)划痕(Sc) 。该数据库包括1,800 张灰度图像:六种不同类型的典型表面缺陷各 300 个样本。

Happy or Sad img

该数据集是最新发布的开心还是悲伤的图像数据集。这个数据集包含二元情绪分类的标签例子,集中在两个不同的类别: 快乐和悲伤 。该数据集用于训练和测试能够区分正面和负面情绪状态的机器学习模型。
类别 : 数据集分为两类: 快乐类: 表示积极的情绪表达; 悲伤类: 表示消极的情绪表达。

该数据集适用于各种应用,包括但不限于: 情绪分析: 开发基于情绪内容的模型。面部表情识别: 识别和区分快乐和悲伤面部表情的训练模型。
开心

悲伤

模型架构

整体模型架构如图所示

数据集划分

python 复制代码
def split_dataset(dataset_dir, output_dir, train_ratio=0.7):
    classes = os.listdir(dataset_dir)
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    train_dir = os.path.join(output_dir, 'train')
    test_dir = os.path.join(output_dir, 'test')

    if not os.path.exists(train_dir):
        os.makedirs(train_dir)
    if not os.path.exists(test_dir):
        os.makedirs(test_dir)

    for class_name in classes:
        class_dir = os.path.join(dataset_dir, class_name)
        images = os.listdir(class_dir)
        random.shuffle(images)

        train_count = int(len(images) * train_ratio)
        train_images = images[:train_count]
        test_images = images[train_count:]

        train_class_dir = os.path.join(train_dir, class_name)
        test_class_dir = os.path.join(test_dir, class_name)

整体运行框架

运行结果比较

NEU_CLS数据集

模型 Acc 差异
ResNet18 93.70% 0
ResNet34 95.69% +1.99%
OURS 99.81% +4.21%
)
)
)

happy_sad_image_dataset :该数据集是全新发布的数据集,可以做很多改进。

模型 Acc 差异
ResNet18 95.83% 0
ResNet34 96.85% +1.02%
OURS 98.52% +1.67%

Loss与Acc曲线

NEU_CLS数据集:

HappyAndSad数据集:

参考文献

  1. https://arxiv.org/abs/1512.03385
  2. https://arxiv.org/abs/1409.4842
  3. https://arxiv.org/abs/1706.03762

说明

演示示例中只使用了部分数据集 ,仅做演示使用 。事实结果请以附件readme文档中给出的数据集连接为准。

源码下载

相关推荐
这个男人是小帅8 分钟前
【GAT】 代码详解 (1) 运行方法【pytorch】可运行版本
人工智能·pytorch·python·深度学习·分类
__基本操作__10 分钟前
边缘提取函数 [OPENCV--2]
人工智能·opencv·计算机视觉
这是一个图像12 分钟前
从opencv-python入门opencv--图像处理之图像滤波
图像处理·opencv·计算机视觉·中值滤波·高斯滤波·双边滤波·图像滤波
Doctor老王14 分钟前
TR3:Pytorch复现Transformer
人工智能·pytorch·transformer
热爱生活的五柒14 分钟前
pytorch中数据和模型都要部署在cuda上面
人工智能·pytorch·深度学习
HyperAI超神经2 小时前
【TVM 教程】使用 Tensorize 来利用硬件内联函数
人工智能·深度学习·自然语言处理·tvm·计算机技术·编程开发·编译框架
扫地的小何尚4 小时前
NVIDIA RTX 系统上使用 llama.cpp 加速 LLM
人工智能·aigc·llama·gpu·nvidia·cuda·英伟达
埃菲尔铁塔_CV算法6 小时前
深度学习神经网络创新点方向
人工智能·深度学习·神经网络
艾思科蓝-何老师【H8053】7 小时前
【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)
人工智能·信号处理·论文发表·香港中文大学
weixin_452600697 小时前
《青牛科技 GC6125:驱动芯片中的璀璨之星,点亮 IPcamera 和云台控制(替代 BU24025/ROHM)》
人工智能·科技·单片机·嵌入式硬件·新能源充电桩·智能充电枪