生成—真实图像分类研究

摘要:本研究基于深度学习技术,使用ResNet18 模型对包含9 个类别的图像数据集进行分类任务。我们采用了预训练的ResNet18 模型作为基础网络,并通过迁移学习的方式调整模型以适应特定的图像分类任务。在实验过程中,我们使用了训练集和测试集进行模型的训练和评估,并记录了训练损失、训练准确率、测试损失以及测试准确率等指标。通过实验结果的分析,我们对模型的性能进行了评估和讨论,展示了模型在图像分类任务上的表现和潜在应用前景。

关键词ResNet18,预训练,深度学习

1引言

深度学习在计算机视觉领域中有着广泛的应用,其中图像分类是其中的重要任务之一。本文介绍了如何使用PyTorch 实现ResNet18 模型进行图像分类,并且对训练过程进行了可视化展示。通过本文的学习,读者可以了解到深度学习在图像分类中的基本原理和实现方式,以及如何使用PyTorch 框架进行模型的搭建和训练。

2基于深度学习的分类方法

深度学习是研究和解决在深度神经网络中表达数据特征的一种机器学习方法,其被广泛应用于图像分类和识别中,尤其在海量图像的高级抽象特征自动提取方面效果很好,分类的精度和准确度都有所提升。

2.1 卷积神经网络
一个典型的卷积神经网络结构如图 1 所示,主要 包括输入层、执行卷积运算的卷积层、执行池化采样 运算的池化层、全连接层和输出结果层 5 部分。图像 分类中关注的是图片中各个部分的边缘和轮廓,而边 缘和轮廓只与相临近的像素有关。卷积神经网络 CNN 通过卷积计算可以将复杂问题简化,可以提取图片的 边缘和轮廓,把大量参数降维成少量参数,即使当图 像做旋转,翻转或者变形,截取部分图片时,也能准 确地识别出来是类似的图像。

图1 典型的卷积神经网络基本结构
2.1.1 基本概念
2.1.1.1 卷积核 ( Kernel)
又称滤波器,在对图像数据进行卷积运算时,需要对图像数据某个局部矩形区域进行加权和,以获取图像的边缘核轮廓特征,其中的权值就是卷积核。

2.1.1.2 卷积核大小 ( Kernel Size)
卷积核的矩形区域大小称为卷积的大小,卷积核大小一般为奇数。如,一般使用二维卷积核 3×3。

2.1.1.3 步长 ( Stride)
当进行卷积运算时,卷积核每次向右或向下移动的像素称为步长,一般用 Stride 表示。如,Stride = 2,表示进行卷积运算时,卷积核每次移动 2 个像素。

2.1.1.4 填充 ( Padding)
为了防止边缘信息丢失,在卷积运算之前,在原图像或图像特征数据四周边缘上填充一层或多层 0 像素。

2.1.1.5 卷积过程
卷积过程是把卷积核中的 k×k 个元素依次和图像中相同区域对应的像素进行相乘求和运算后作为对应位置新的特征值,然后把该卷积核沿着图像向右或向下平移步长 Stride 个像素,继续计算新的特征值,直至完成整个图像的计算。

2.2 模型选择
目前卷积神经网络的典型架构有 LeNet-5、Alex Net-8、VGG16 - 19、ResNet 等。本文采用 ResNet 模型结构使用 Pytorch 框架构建 ResNet18 模型研究生成—真实图像分类研究

3ResNet18 网络架构或研究内容

3.1 ResNet18 介绍
ResNet(Residual Network)是由微软亚洲研究院提出的深度残差网络,旨在解决深度神经网络中的梯度消失和过拟合问题。ResNet 使用残差块(Residual Block)来构建深度网络,使得网络可以学习残差映射,从而加快训练速度并提高网络的表现。

ResNet18 是ResNet 系列中的一种经典网络结构,它由18 个层组成,其中包含16 个卷积层和2 个全连接层。ResNet18 的基本单元是残差块,每个残差块由两个3x3 大小的卷积层组成,中间有一个跳跃连接,将输入直接传递给输出。这种跳跃连接可以避免梯度消失,并且可以减少模型参数量,提高网络的泛化能力。ResNet18 还使用了池化层、归一化层、非线性激活函数等技术,来进一步优化网络性能。

3.2 ResNet18 结构和功能
ResNet18 是ResNet 系列中较为简单的一个网络结构,它由多个相同的基本残差块(Basic Block)堆叠而成。下面我们来详细介绍ResNet18 的结构和每个部分的功能。

1.输入层:ResNet18 的输入是图像数据,通常为RGB 三通道的图像。输入图像经过归一化处理后,作 为网络的输入。

2.卷积层:ResNet18 首先使用一个7x7 的卷积层进行特征提取,输出通道数为64,步长为2,用于减   小图像尺寸。然后经过一个池化层,将特征图尺寸缩小为输入的1/4 大小。

3.残差块:ResNet18 由多个残差块组成。每个残差块都有两个卷积层和一个跳跃连接。具体而言,每个残差块包含两个3x3 的卷积层,输出通道数相同。在第一个卷积层之后会进行批标准化和非线性

激活函数(通常是ReLU)。然后再经过第二个卷积层,输出特征图与输入特征图的通道数相同。最后,将输入特征图与输出特征图相加,得到残差映射。

4.残差块堆叠:ResNet18 将多个残差块堆叠在一起,形成更深的网络。具体而言,ResNet18 由4 个残   差块组成,每个残差块内有两个卷积层。

5.全局平均池化:在残差块之后,ResNet18 使用全局平均池化层对特征图进行降维,将特征图的高和 宽缩减为1,并保留通道数。

全连接层:最后,通过一个全连接层将特征映射到最终的类别数上。在ResNet18 中,通常是一个具有1000个神经元的全连接层,用于ImageNet 数据集的1000 个类别分类任务。

3.3 初始网络模型
深度残差网络是由HE 等于2016 年提出的,残差网络结构如图2 所示。该研究证明了引入跳层连接能有效解决梯度弥散导致的模型难以收敛和深度神经网络退化两大问题,并使计算轻量化。[1]

图2 残差网络的基本结构

Resnet18 是一种基于上述残差结构构造的网络,其模型 如图3 所示。Resnet18 的残差模块中首先进行一次3×3 卷积, 其次进行批标准化和ReLU 激活,再次进行一次3×3 卷积和标 准化,最后与输入特征图相加后进入ReLU 激活。残差模块Ⅱ 在跳层连接中加入了1×1 卷积进行下采样。

图3 ResNet18 模型 3.4 数据增强
本实验使用了常见的数据增强技术,包括:
a.RandomHorizontalFlip:随机水平翻转图像,增加数据的多样性。

b.Resize:将图像大小调整为 (224, 224) 大小,这是典型的用于训练深度神经网络的图像大小。

c.ToTensor:将PIL Image 或者numpy.ndarray 转换为tensor,并且归一化到[0, 1]

d.Normalize:对图像进行标准化,减去均值(0.5, 0.5, 0.5)并除以标准差(0.5, 0.5, 0.5),这是常见的图像预处理

操作。

这些数据增强技术可以帮助模型更好地泛化到新的数据上,提高模型的性能。[2]

4 测试与分析

4.1 数据集
本实验数据集共九个类别,有飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck ,分别为Gen_dataImageNet两类,本实验做两次实验:
1)采用真实图像训练模型,使用真实图像作为验证集。

2)采用生成图像训练模型,使用真实图像作为验证集。

数据集一共由9410 张图片构成,ImageNet4640 张图片,Gen_data4772 张图片,数据集展示如下图4

所示。

4 九类数据集

4.2 训练参数设置
1 训练参数

网络模型

参数名称

数值

ResNet18 网络模型

迭代次数

epoch=50

小批量数据

batch_size =64

初始学习率

Learning_rate= 0.001

损失函数

loss=“CrossEntropyLoss

优化器

optimizer=“SGD

输入图片大小

224×224×3

4.3 实验过程分析
        4.3.1 初始网络模型测试与分析
在这个实验过程中,我们首先定义了一个ResNet18 模型,并加载了预训练好的ResNet18 模型的权重。然后使用数据预处理操作对训练集和测试集进行处理,包括随机水平翻转、调整图像大小、转换为张量以及归一化等操作。接下来,我们使用ImageFolder 类加载训练集和测试集,并使用DataLoader 类将其转换为可迭代的数据加载器。然后,我们定义了损失函数和优化器,其中损失函数使用交叉熵损失函数,优化器使用随机梯度下降(SGD)算法。接着,我们开始训练网络,设置了总共的训练轮数为50 轮。在每一轮的训练过程中,我们迭代遍历训练集数据,并对网络进行前向传播、计算损失、反向传播和参数更新等操作。同时,我们还计算并记录了训练集和测试集的损失和准确率。最后,我们绘制了训练过程中的损失和准确率曲线。

通过这个实验过程,我们可以测试初始网络模型在数据集上的表现,并分析其训练和测试的损失和准确率变化情况。这有助于我们了解初始网络模型的性能,并可以作为后续改进和优化的基准。

4.3.2 数据增强过程测试与分析
在这个实验过程中,我们使用了数据增强技术对训练集进行处理。具体而言,我们使用了随机水平翻转操作,即将图像在水平方向上进行随机翻转。这样做的目的是增加训练集的多样性,提高模型的泛化能力。通过这个实验过程,我们可以测试数据增强技术对模型性能的影响,并分析在使用数据增强后的训练集上的训练和测试的损失和准确率变化情况。这有助于我们评估数据增强技术的有效性,并确定是否需要进一步优化数据增强方法。

4.3.3 采用预训练的网络特征提取过程测试与分析
在这个实验过程中,我们使用了一个预训练的ResNet18 模型,并将其作为特征提取器。具体而言,我们固定了模型的所有参数,只将最后一层全连接层的权重进行重新训练。这样做的目的是利用预训练模型在大

规模图像数据上学习到的特征表示能力,提高模型在我们的小规模数据集上的表现。

通过这个实验过程,我们可以测试采用预训练的网络特征提取方法对模型性能的影响,并分析在使用预训练的特征提取器后的训练和测试的损失和准确率变化情况。这有助于我们评估采用预训练特征提取的有效性,并确定是否需要进一步调整特征提取层或引入其他优化策略。

4.3.4 微调模型测试与分析
在这个实验过程中,我们对整个ResNet18 模型进行微调。具体而言,我们解冻了所有模型的参数,并对整个模型进行训练。这样做的目的是通过在我们的小规模数据集上进行端到端的训练,进一步提高模型在我们的任务上的表现。

通过这个实验过程,我们可以测试微调模型对模型性能的影响,并分析在微调后的训练和测试的损失和准确率变化情况。这有助于我们评估微调模型的有效性,并确定是否需要进一步调整微调的策略或引入其他优化方法。[3]

5 实验结果对比分析

5.1 准确率对比分析

5.1.1 采用生成图像训练模型,使用真实图像作为验证集。

本次实验通过用ResNet18 模型准确率最终高达99.89%,在epoch=20 的时候基本开始收敛。

经过epoch=50 训练后的ACCLoss 图像如图5 所示:

图5 Train Loss 和Test Loss 即Train AccuracyTest Accuracy 图像

采用真实图像训练模型,使用生成图像作为验证集的Training Confusion Matrix 和Testing Confusion

Matrix 如图6 所示:

图6  Training Confusion Matrix 和Testing Confusion Matrix

5.1.2 采用真实图像训练模型,使用生成图像作为验证集。

本次实验通过用ResNet18 模型准确率最终高达91.57%,在epoch=20 的时候基本开始收敛。

运行出的结果绘制出的Loss 和ACC 图像如图7 所示:

7  Train  LossTest  Loss 图像及Train  AccuracyTest  Accuracy 图像

采用真实图像训练模型,使用生成图像作为验证集的Training Confusion Matrix 和Testing Confusion

Matrix 如图8 所示:

Training Confusion Matrix 和Testing Confusion Matrix

6 总结

本文通过对九类图片组成的数据集进行初始训练,然后优化训练方法和技巧,采用生成图像训练模型,

使用真实图像作为验证集,实现了高达99.89%准确率。采用真实图像训练模型,使用生成图像作为验证集,实现了高达91.57%准确率。

这个实验使用了ResNet18 模型对图像数据进行分类。首先,通过torchvision 库加载了预训练的ResNet18

模型,并将其全连接层的输出大小修改为所需的类别数。然后,定义了数据预处理的转换操作,包括随机

水平翻转、调整图像大小、转换为张量和归一化。接下来,使用ImageFolder 类加载训练集和测试集,并利用DataLoader 类对数据进行批量加载和数据增强操作。在模型定义方面,使用了交叉熵损失函数和随机梯度下降优化器。在训练过程中,迭代了指定次数的epoch,对每个batch 的数据进行前向传播、计算损失函数、反向传播和参数更新。同时记录并计算了训练集和测试集的损失和准确率。最后,打印了每个epoch

的训练损失、训练准确率、测试损失和测试准确率。

参考文献

[1]何彦弘, 徐怡宁, 傅嘉琪, 陈书航, 李俊峰. 基于改进Resnet18的垃圾分类收运监管方法研究[J]. 软件工程, 2023, 26 (01): 24-33.

[2]姜红花, 杨祥海, 丁睿柔, 王东伟, 毛文华, 乔永亮. 基于改进ResNet18的苹果叶部病害多分类算法研究[J]. 农业机械学报, 2023, 54 (04): 295-303.

[3]赵春霞. 基于ResNet18 的图像分类在农作物病虫害诊断中的应用[J]. 农业与技术, 2021, 41 (19): 10-

13.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值