详细介绍:基于深度学习的数字图像分类实验与分析

news/2025/11/10 8:09:27/文章来源:https://www.cnblogs.com/slgkaifa/p/19205749

详细介绍:基于深度学习的数字图像分类实验与分析

基于深度学习的数字图像分类实验与分析

摘要

本文详细记录了基于深度学习的数字图像分类实验的全过程,包括实验环境搭建、数据预处理、模型选择与搭建、训练与评估等关键环节。通过基础实验、改进实验、进阶实验和补充实验四个部分,逐步深入探讨了深度学习在数字图像分类中的应用。实验结果表明,卷积神经网络(CNN)结合注意力机制在图像分类任务中表现出色,具有较高的准确率和鲁棒性。
在这里插入图片描述

1. 引言

随着深度学习技术的快速发展,数字图像分类已成为计算机视觉领域的研究热点。本文通过一系列实验,系统探讨了深度学习在数字图像分类中的应用,旨在为相关领域的研究人员提供技术参考和实验指导。

2. 实验环境搭建

2.1 软件环境配置

Anaconda安装:首先下载并安装Anaconda,这是一个包含Python解释器和大量科学计算库的集成环境。安装教程参考Anaconda安装指南。
Python版本选择:安装Python 3.9版本,该版本在深度学习领域具有广泛的兼容性和稳定性。下载教程参考Python下载指南。
Python库安装:根据实验需求,安装常用的科学计算库如numpy、matplotlib等。具体安装指导参考Python库安装指南。
Torch库安装:
CPU版本:对于没有独立显卡的计算机,下载并安装CPU版本的torch库。安装指南参考Torch CPU版安装指南。
GPU版本:对于配备独立显卡的计算机,首先根据显卡驱动版本下载并安装CUDA。安装指南参考CUDA安装指南。随后下载并安装GPU版本的torch库,安装指南同上。

3. 实验内容与操作细节

3.1 基础实验一:全连接神经网络(MLP)

在这里插入图片描述

3.1.1 数据预处理
数据集下载:使用animals10数据集,该数据集包含大约28K张中等质量的动物图像,分为10个类别。数据集地址:animals10数据集。
数据集划分:使用data_loader将数据集划分为训练集、验证集和测试集,比例为7:2:1。具体实现代码如下:
python
def get_dataloaders(data_dir, batch_size=32, val_split=0.2, test_split=0.1):
full_dataset = datasets.ImageFolder(data_dir)
train_size = int((1 - val_split - test_split) * len(full_dataset))
val_size = int(val_split * len(full_dataset))
test_size = len(full_dataset) - train_size - val_size
train_dataset, val_dataset, test_dataset = random_split(full_dataset, [train_size, val_size, test_size], generator=torch.Generator().manual_seed(42))
# 创建DataLoader
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False)
test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)
return train_loader, val_loader, test_loader
3.1.2 模型搭建
全连接神经网络(MLP):构建一个简单的MLP模型,包括输入层、隐藏层和输出层。输入层接收展平后的图像数据,隐藏层进行加权求和和非线性转换,输出层给出分类结果。
python
class SimpleMLP(nn.Module):
def init(self, input_size, hidden_size, num_classes):
super(SimpleMLP, self).init()
self.fc1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, num_classes)

def forward(self, x):x = x.view(x.size(0), -1)  # 展平图像out = self.fc1(x)out = self.relu(out)out = self.fc2(out)return out

3.1.3 训练与评估
训练过程:在训练集上训练模型,通过调整学习率等超参数,让模型在测试集上展示最佳性能。训练30个epoch,测试集准确率约为0.4。

3.2 改进实验二:卷积神经网络(CNN)

在这里插入图片描述

3.2.1 数据预处理
数据筛选:从十种动物数据中筛选出牛、羊、马、狗、猫、象、鸡等特定类别的图像进行训练、验证和测试。实现代码如下:
python
class FilteredImageFolder(datasets.ImageFolder):
def init(self, root, classes, transform=None):
super(FilteredImageFolder, self).init(root, transform)
self.classes = classes
self.imgs = [img for img in self.imgs if img[1] in self.classes]
3.2.2 模型搭建
卷积神经网络(CNN):将全连接网络改为CNN网络,增加卷积层和池化层以提取图像中的空间特征。
python
class SimpleCNN(nn.Module):
def init(self, num_classes):
super(SimpleCNN, self).init()
self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
self.relu = nn.ReLU()
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
self.conv2 = nn.Conv2d(16, 32, kernel_size=3, stride=1, padding=1)
self.fc = nn.Linear(32 * 56 * 56, num_classes) # 假设输入图像大小为224x224

def forward(self, x):out = self.conv1(x)out = self.relu(out)out = self.pool(out)out = self.conv2(out)out = self.relu(out)out = self.pool(out)out = out.view(out.size(0), -1)  # 展平特征图out = self.fc(out)return out

3.2.3 训练与评估
可视化训练过程:在训练过程中记录损失和准确率,并使用matplotlib进行可视化。15个epoch后,测试集准确率显著提升。

3.3 进阶实验三:数据增强与高级模型

在这里插入图片描述

3.3.1 数据预处理
数据增强:加入裁剪、旋转、模糊、高斯噪声、遮挡等噪声进行数据增强,以提高模型的泛化能力。
python
transform = transforms.Compose([
transforms.RandomResizedCrop(224, scale=(0.8, 1.0)), # 裁剪
transforms.RandomRotation(15), # 旋转
transforms.ColorJitter(brightness=0.1, contrast=0.1, saturation=0.1, hue=0.1), # 色彩抖动
transforms.GaussianBlur(kernel_size=(5, 9), sigma=(0.1, 2.0)), # 模糊
transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False), # 遮挡
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) # 归一化
])
3.3.2 模型搭建
ResNet与注意力机制:使用ResNet-18作为特征提取器,并在其输出特征图上应用通道注意力机制。
python
class ChannelAttention(nn.Module):
def init(self, in_planes, ratio=16):
super(ChannelAttention, self).init()
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.max_pool = nn.AdaptiveMaxPool2d(1)

    self.fc = nn.Sequential(nn.Linear(in_planes, in_planes // ratio),nn.ReLU(),nn.Linear(in_planes // ratio, in_planes))
def forward(self, x):b, c, _, _ = x.size()avg_out = self.fc(self.avg_pool(x).view(b, c))max_out = self.fc(self.max_pool(x).view(b, c))out = avg_out + max_outreturn torch.sigmoid(out).view(b, c, 1, 1)

class ResNetWithAttention(nn.Module):
def init(self, num_classes):
super(ResNetWithAttention, self).init()
self.resnet = models.resnet18(pretrained=False)
self.attention = ChannelAttention(512) # ResNet-18最后一层特征图通道数为512
self.fc = nn.Linear(512, num_classes)

def forward(self, x):x = self.resnet.conv1(x)x = self.resnet.bn1(x)x = self.resnet.relu(x)x = self.resnet.maxpool(x)x = self.resnet.layer1(x)x = self.resnet.layer2(x)x = self.resnet.layer3(x)x = self.resnet.layer4(x)attention_weights = self.attention(x)x = x * attention_weightsx = self.resnet.avgpool(x)x = torch.flatten(x, 1)x = self.fc(x)return x

3.3.3 训练与评估
实验结果对比:通过对比不同模型在15个epoch后的测试集准确率,发现结合注意力机制的ResNet模型性能显著优于简单MLP和CNN模型。

3.4 补充实验四:迁移实验

在这里插入图片描述

3.4.1 迁移到MNIST手写数字识别
数据集加载:使用torchvision提供的MNIST数据集类,简化数据集加载和预处理过程。
python
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
])
train_dataset = datasets.MNIST(root=‘./data’, train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root=‘./data’, train=False, download=True, transform=transform)
3.4.2 模型迁移与调整
模型调整:将之前训练的模型结构稍作调整,以适应MNIST数据集的输入尺寸和类别数。通过迁移学习,快速适应新的图像分类任务。

4. 结论

本文通过一系列实验,系统探讨了深度学习在数字图像分类中的应用。实验结果表明,卷积神经网络(CNN)结合注意力机制在图像分类任务中表现出色,具有较高的准确率和鲁棒性。同时,数据增强技术有效提高了模型的泛化能力。未来工作将进一步探索更复杂的模型结构和数据增强方法,以提升图像分类的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年口碑好的压缩垃圾车热门厂家推荐榜单

2025年口碑好的压缩垃圾车热门厂家推荐榜单行业背景与市场趋势随着我国城镇化进程加速和环保政策日趋严格,环卫装备行业迎来了快速发展期。据中国城市环境卫生协会最新数据显示,2024年我国环卫装备市场规模已突破850…

2025年质量好的高纤维狗粮实力认证推荐榜

2025年质量好的高纤维狗粮实力认证推荐榜行业背景与市场趋势随着宠物经济的蓬勃发展,中国宠物食品市场规模已突破千亿元大关。根据《2024年中国宠物行业白皮书》数据显示,2024年中国宠物食品市场规模达到1280亿元,同…

2025年靠谱的环保皮革门TOP品牌厂家排行榜

2025年靠谱的环保皮革门TOP品牌厂家排行榜行业背景与市场趋势随着全球环保意识的不断提升和可持续发展理念的深入人心,环保皮革门市场正迎来前所未有的发展机遇。据《2024-2029年中国环保皮革门行业市场调研与投资前景…

如何解决 pip install -r requirements.txt 约束文件 constraints.txt 仅允许固定版本(未锁定报错)问题 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

关闭windows 更新驱动程序的方法

关闭windows 更新驱动程序的方法https://blog.csdn.net/NSJim/article/details/130562802

2025年比较好的拉篮厨房收纳热门产品优选榜

2025年比较好的拉篮厨房收纳热门产品优选榜厨房收纳行业背景与市场趋势随着现代家庭对厨房空间利用效率要求的不断提高,厨房收纳系统正经历着前所未有的技术革新与市场扩张。根据中国家用电器协会最新发布的《2024中国…

洛谷 P14460 【MX-S10-T1】『FeOI-4』寻雾启示 题解

SolutionLink 可做题。 考虑怎么做划算?要么在第 \(0\) 格等待全部铁锭满足之后购买并走到终点,要么重复一个买、走、折返、买、走这样的过程,注意到这个等待时间和行走路程都是可以二分的,但是神秘贪心好像都被毙…

nats mqtt 支持消息处理负载均衡的一些方法

nats mqtt 支持消息处理负载均衡的一些方法nats mqtt 的支持默认是v3.1.1 如果希望使用共享订阅等一些5协议的特性是很不方便的,以下是一个解决方法 参考图 如下图简单说明:上图集成了几种玩法,一种是基于nats 订阅…

深入理解 Laravel Middleware:完整指南

深入理解 Laravel Middleware:完整指南 Laravel 中间件是框架最强大的特性之一,它在 HTTP 请求和应用核心逻辑之间扮演着桥梁的角色。不管你是开发简单的博客还是复杂的企业应用,掌握中间件都是写出安全、易维护、高…

P10789 [NOI2024] 登山 解题报告

Tag:DP,DP 优化。 大约 \(3\text{ months}\) 之前开了这个题,发现自己一点也不会,遂弃之,现在才来补。 做法来源于:《题解:P10789 [NOI2024] 登山》——Larunatrecy。 一开始看了看出题人题解,你的方法小众又独…

代码源2025长训_csp-s_week1

10/9 Day 16 A 题意:给出一棵 \(n\) 个节点的树,你需要从中选择恰好一条边删除,然后任意选择两个点 \(u,v(u≠v)\) 在 \(u,v\) 之间连接一条边,满足操作完之后还是一棵树。 你需要对于每个点 \(i\) 求出操作结束后…

代码源2025长训_csp-s_week3

10/21 Day 21 A 题意:定义 \(d(i,j) = \sqrt{(x_i-x_j)^2+(y_i-y_j)^2}\)。 一个合法连线方案是 \(1 \dots n^2\) 的排列 \(p_1, p_2, \dots, p_{n^2}\),满足总长度 \(\sum_{i=1}^{n^2-1} d(p_i, p_{i+1}) < 2nL\…

代码源2025长训_csp-s_week2

10/14 Day 18 A 题意:给定字符串 \(S\),每次操作可以对三个连续的字符进行以下四种的变换:\(\texttt{ABC} \to \texttt{CBA}\) \(\texttt{CBA} \to \texttt{ABC}\) \(\texttt{BCD} \to \texttt{DCB}\) \(\texttt{DC…

ICPC2024昆明 游记(VP)

5t 铜,艰难依旧坚持。省流 5t 铜,艰难依旧坚持。11.9 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 本来希望能抓紧时间多 vp 点实战,周中队友要上课很慢,最后未能拿到补题链接打了 24 年昆明。 赛时 看到…

随记11/10

目前是间断性和目标明确的使用各种设备,打开自己2024年使用的U盘,在2025年采取类似的方式,让问题更明了,清晰的了解与行动。

AI元人文的内生监督范式:从外部审查到构成性保障的革命

AI元人文的内生监督范式:从外部审查到构成性保障的革命 在AI元人文理论体系中,监督机制完成了根本性的范式跃迁:从一种外部的、后置的、对抗性的审查,转变为内生的、并行的、构成性的保障系统。这一革命性转变的核…

2025年11月宣传片公司推荐榜:五强对比分析与用户真实评价

2025年11月,当品牌部把“明年宣传片预算”提上议程,很多市场人都会陷入同一套焦虑:预算有限,却希望片子能在招商路演、官网首页、抖音信息流里“一眼出圈”;领导要求“高端感”,法务又提醒“资质必须全”;销售等…

2025年11月短视频矩阵获客公司推荐榜:五强评测与关键指标全解析

正在找“短视频矩阵获客公司”的你,大概率面临以下场景:手里有产品却缺精准流量,投流成本一天比一天高;团队拍了大量视频,账号却像孤岛,播放量涨不动,留资率不见起色;市面上SaaS工具五花八门,怕选错平台浪费预…

2025年11月短视频矩阵获客公司权威榜:五强对比评测助你精准选型

如果你正在找能把“内容生产—账号分发—线索回收”做成闭环的短视频矩阵获客公司,大概率面临以下场景:预算被验证ROI的压力追着跑,内部团队剪辑与投流人手不足,平台规则三天一变,账号一不小心就限流;同时,销售…

2025年11月中国电线电缆厂家推荐榜:五强排名与性能对比评价

“项目进入收尾阶段,却临时被要求更换整批电缆,预算只剩七成,工期只剩五天。”这是11月工地例会上最常见的焦虑场景。对基建、机电、家装三类用户而言,电缆既是隐蔽工程,也是安全底线:一旦选型失误,返工成本远高…