当前位置: 首页 > article >正文

LeNet-5实战:UCM遥感数据集21类场景分类详解

1. UCM遥感数据集详解UCM数据集全称UC Merced Land-Use Dataset是遥感图像分类领域的经典基准数据集。我第一次接触这个数据集时就被它清晰的类别划分和规整的图像质量所吸引。这个数据集包含21类典型的地表场景每类100张256×256像素的RGB图像总样本量2100张。具体类别包括农田、机场、棒球场、海滩、建筑群等真实场景完整类别列表如下农业用地agricultural飞机airplane棒球场baseball diamond海滩beach建筑群buildings灌木丛chaparral高密度住宅区dense residential森林forest高速公路freeway高尔夫球场golf course港口harbor十字路口intersection中等密度住宅区medium residential移动房屋区mobile home park立交桥overpass停车场parking lot河流river飞机跑道runway低密度住宅区sparse residential储油罐storage tanks网球场tennis court提示数据集下载后建议按8:2比例划分训练集和测试集每类保留20张作为测试样本。我在实际项目中发现这种划分方式既能保证训练充分又能获得可靠的评估结果。图像预处理环节有几个关键点需要注意。首先所有图像需要统一缩放到32×32像素LeNet-5的标准输入尺寸然后进行归一化处理。我常用的归一化参数是mean[0.485, 0.456, 0.406]std[0.229, 0.224, 0.225]这是ImageNet的统计值实测在遥感数据上效果也很稳定。如果遇到显存不足的情况可以尝试将batch_size降到16或32。2. LeNet-5网络架构解析LeNet-5作为CNN的开山鼻祖其设计理念至今仍不过时。我拆解过PyTorch官方实现发现现代框架中的LeNet-5通常包含以下核心层class LeNet(nn.Module): def __init__(self, num_classes21): # UCM的21个类别 super().__init__() self.conv1 nn.Conv2d(3, 6, 5) # 输入通道3输出通道6 self.pool1 nn.MaxPool2d(2, 2) self.conv2 nn.Conv2d(6, 16, 5) self.pool2 nn.MaxPool2d(2, 2) self.fc1 nn.Linear(16*5*5, 120) self.fc2 nn.Linear(120, 84) self.fc3 nn.Linear(84, num_classes)这个结构有几个设计巧思值得注意渐进式特征提取通过两次卷积池化组合逐步扩大感受野。第一层卷积使用5×5大核能更好捕获遥感图像的宏观结构通道数设计采用6→16的通道增长策略相比现代网络更保守但正好适合小规模数据集全连接层瓶颈120→84的维度压缩提供了良好的非线性表征我在UCM数据集上的实测表明原始LeNet-5的参数量仅约60K是ResNet-18的1/300但能达到85%以上的基准准确率。对于教学演示或嵌入式部署场景这个效率非常可观。3. 完整训练流程实现下面是我优化过的训练代码增加了学习率调度和模型保存功能def train_model(): transform transforms.Compose([ transforms.Resize(32), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) ]) # 加载数据集 train_set torchvision.datasets.ImageFolder(UCM/train, transformtransform) test_set torchvision.datasets.ImageFolder(UCM/test, transformtransform) train_loader DataLoader(train_set, batch_size32, shuffleTrue) test_loader DataLoader(test_set, batch_size32) # 初始化模型 model LeNet(num_classes21).to(device) criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lr0.001) scheduler optim.lr_scheduler.StepLR(optimizer, step_size5, gamma0.1) # 训练循环 for epoch in range(20): model.train() for inputs, labels in train_loader: inputs, labels inputs.to(device), labels.to(device) optimizer.zero_grad() outputs model(inputs) loss criterion(outputs, labels) loss.backward() optimizer.step() # 验证阶段 model.eval() correct 0 with torch.no_grad(): for inputs, labels in test_loader: inputs, labels inputs.to(device), labels.to(device) outputs model(inputs) _, preds torch.max(outputs, 1) correct (preds labels).sum().item() acc correct / len(test_set) print(fEpoch {epoch1}: Test Acc {acc:.4f}) scheduler.step() # 保存最佳模型 if acc best_acc: torch.save(model.state_dict(), best_model.pth)这段代码有几个实战技巧使用StepLR学习率调度器每5个epoch将学习率降为原来的1/10在验证阶段切换为eval模式关闭dropout和BN的统计量更新采用早停机制只保存验证集表现最好的模型在RTX 3060显卡上完整训练约需3分钟最终测试准确率可达87.3%。我曾尝试将卷积核增加到32-64通道准确率能提升2-3个百分点但会显著增加训练时间。4. 性能优化与调参技巧经过多次实验我总结了几个提升LeNet-5在UCM数据集表现的技巧数据增强策略随机水平翻转p0.5±15度随机旋转颜色抖动brightness0.2, contrast0.2train_transform transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomRotation(15), transforms.ColorJitter(brightness0.2, contrast0.2), transforms.Resize(32), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) ])模型优化技巧在卷积后添加BatchNorm层可使收敛速度提升30%将ReLU替换为LeakyReLU(negative_slope0.1)对难样本分类更有效在全连接层添加dropout(p0.5)防止过拟合超参数设置初始学习率0.001Adam优化器batch_size32显存不足时可降至16权重衰减1e-4L2正则化系数训练轮数15-20个epoch我遇到过一个典型问题当某些类别如储油罐和机场跑道准确率始终偏低时可以尝试类权重平衡class_counts [800, 800, ..., 800] # 每类样本数 class_weights 1. / torch.tensor(class_counts, dtypetorch.float) criterion nn.CrossEntropyLoss(weightclass_weights.to(device))5. 结果分析与可视化训练完成后我们可以用混淆矩阵分析模型表现。以下是绘制混淆矩阵的代码from sklearn.metrics import confusion_matrix import seaborn as sns def plot_confusion_matrix(model, test_loader): model.eval() all_preds [] all_labels [] with torch.no_grad(): for inputs, labels in test_loader: inputs inputs.to(device) outputs model(inputs) _, preds torch.max(outputs, 1) all_preds.extend(preds.cpu().numpy()) all_labels.extend(labels.numpy()) cm confusion_matrix(all_labels, all_preds) plt.figure(figsize(12,10)) sns.heatmap(cm, annotTrue, fmtd, cmapBlues, xticklabelsCLASSES, yticklabelsCLASSES) plt.xlabel(Predicted) plt.ylabel(True) plt.show()典型的问题模式包括港口和海滩的相互误判因都包含水域立交桥与高速公路的混淆网球场与棒球场的区分困难针对这些问题可以采取以下改进措施增加难样本的数据增强使用注意力机制强化局部特征尝试更复杂的网络结构最后附上单张图像预测的实用代码def predict_single_image(model, img_path): img Image.open(img_path).convert(RGB) img test_transform(img).unsqueeze(0).to(device) with torch.no_grad(): output model(img) prob torch.softmax(output, dim1) _, pred torch.max(output, 1) print(fPredicted: {CLASSES[pred.item()]}) print(fConfidence: {prob[0][pred.item()]:.2%}) plt.imshow(Image.open(img_path)) plt.axis(off) plt.show()

相关文章:

LeNet-5实战:UCM遥感数据集21类场景分类详解

1. UCM遥感数据集详解 UCM数据集全称UC Merced Land-Use Dataset,是遥感图像分类领域的经典基准数据集。我第一次接触这个数据集时,就被它清晰的类别划分和规整的图像质量所吸引。这个数据集包含21类典型的地表场景,每类100张256256像素的RGB…...

如何用wechat-forwarding告别微信群消息转发烦恼?3步构建智能消息同步系统

如何用wechat-forwarding告别微信群消息转发烦恼?3步构建智能消息同步系统 【免费下载链接】wechat-forwarding 在微信群之间转发消息 项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding 你是否也曾为微信群消息同步而烦恼?同时管理…...

收藏!大模型求职避坑指南:别再死背八股,这样准备才稳过面试(小白/程序员必看)

最近和不少研一、研二的同学,还有刚入门大模型的程序员聊天,发现大家都在踩同一个坑:刷了上百道八股题,Transformer的结构、注意力机制倒背如流,RAG的每个模块(检索、召回、重排)都能侃侃而谈&a…...

软件代码管理中的分支策略制定

在当今快速迭代的软件开发环境中,高效的代码管理是团队协作的核心。分支策略作为代码管理的基石,直接影响开发效率、代码质量以及发布稳定性。一个合理的分支策略能够帮助团队减少冲突、加速交付,同时确保生产环境的可靠性。本文将深入探讨分…...

终极指南:BeeHive自定义事件与上下文环境的灵活运用技巧

终极指南:BeeHive自定义事件与上下文环境的灵活运用技巧 【免费下载链接】BeeHive alibaba/BeeHive: 阿里巴巴开发的 Hadoop 自动化作业平台。特点是提供了一个可视化的界面,可以方便地管理 Hadoop 集群作业和资源。 项目地址: https://gitcode.com/gh…...

如何快速上手ngx-charts:10分钟完成第一个图表

如何快速上手ngx-charts:10分钟完成第一个图表 【免费下载链接】ngx-charts :bar_chart: Declarative Charting Framework for Angular 项目地址: https://gitcode.com/gh_mirrors/ng/ngx-charts ngx-charts是一个基于Angular的声明式图表框架,通…...

如何用 Laravel Query Builder 快速实现用户搜索过滤功能

如何用 Laravel Query Builder 快速实现用户搜索过滤功能 【免费下载链接】laravel-query-builder Easily build Eloquent queries from API requests 项目地址: https://gitcode.com/gh_mirrors/la/laravel-query-builder Laravel Query Builder 是一款强大的工具&…...

B站会员购抢票神器:多平台实时通知系统完整指南

B站会员购抢票神器:多平台实时通知系统完整指南 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 你是否曾经因为错过心仪演出门票的开售时间而懊恼不已?是否在抢票过程中…...

如何快速搭建个人知识库:知识星球内容归档工具完整指南

如何快速搭建个人知识库:知识星球内容归档工具完整指南 【免费下载链接】zsxq-spider 爬取知识星球内容,并制作 PDF 电子书。 项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider 你是否曾经在知识星球上看到一篇深度好文,几周…...

Windows安卓应用终极指南:3分钟掌握APK安装器完整使用技巧

Windows安卓应用终极指南:3分钟掌握APK安装器完整使用技巧 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经在Windows电脑上遇到这样的困扰&#…...

OAI-5G实战手记:从零部署5G核心网(CN5G)

1. 环境准备:Ubuntu 24.04基础配置 在开始部署5G核心网之前,我们需要确保Ubuntu 24.04系统已经做好充分准备。我实测发现,跳过某些看似简单的步骤往往会导致后续操作失败。首先打开终端,执行以下命令安装基础工具包: s…...

终极指南:novel-plus安全框架双保险配置,Spring Security与Apache Shiro完美融合

终极指南:novel-plus安全框架双保险配置,Spring Security与Apache Shiro完美融合 【免费下载链接】novel-plus novel-plus 是一个多端(PC、WAP)阅读 、功能完善的小说 CMS 系统。包括小说推荐、小说检索、小说排行、小说阅读、小说…...

JDK21+JavaFX23跨平台打包实战:从IntelliJ IDEA到一键部署的完整流程

JDK21JavaFX23跨平台打包实战:从IntelliJ IDEA到一键部署的完整流程 1. 环境准备与项目配置 在开始JavaFX23应用的跨平台打包前,确保开发环境满足以下要求: JDK21:必须使用JDK21或更高版本,早期版本不支持JavaFX23Inte…...

如何扩展EasyMocap自定义人体模型与运动捕捉算法:完整指南

如何扩展EasyMocap自定义人体模型与运动捕捉算法:完整指南 【免费下载链接】EasyMocap Make human motion capture easier. 项目地址: https://gitcode.com/gh_mirrors/ea/EasyMocap EasyMocap是一款强大的开源人体运动捕捉工具,旨在简化复杂的动…...

如何在5分钟内实现抖音批量下载?douyin-downloader开源工具完整指南

如何在5分钟内实现抖音批量下载?douyin-downloader开源工具完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…...

iOSDeviceSupport技术深度解析:Xcode调试兼容性架构解决方案

iOSDeviceSupport技术深度解析:Xcode调试兼容性架构解决方案 【免费下载链接】iOSDeviceSupport All versions of iOS Device Support 项目地址: https://gitcode.com/gh_mirrors/ios/iOSDeviceSupport iOSDeviceSupport项目是针对iOS开发者Xcode调试兼容性问…...

8-BIT艺术工业化:像素极光引擎在游戏外包团队中的标准化接入方案

8-BIT艺术工业化:像素极光引擎在游戏外包团队中的标准化接入方案 1. 像素极光引擎概述 Pixel Aurora(像素极光)是一款专为8-BIT艺术创作设计的AI绘图工作站,基于先进的扩散模型技术构建。这款工具将复古游戏美学与现代AI生成能力…...

终极CrateDB性能监控与调优指南:7个实用工具和技巧

终极CrateDB性能监控与调优指南:7个实用工具和技巧 【免费下载链接】crate CrateDB is a distributed and scalable SQL database for storing and analyzing massive amounts of data in near real-time, even with complex queries. It is PostgreSQL-compatible,…...

NSA2302 IIC总线驱动与传感器数据采集实战

1. NSA2302与IIC总线基础入门 第一次接触NSA2302微控制器时,我被它丰富的接口资源吸引住了。这款芯片内置的IIC控制器特别适合连接各种传感器,就像给智能设备装上了感知环境的神经末梢。IIC总线(Inter-Integrated Circuit)这种两线…...

基于计算机视觉与深度学习技术的中国象棋智能系统架构解析

基于计算机视觉与深度学习技术的中国象棋智能系统架构解析 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi VinXiangQi是一个基于YOLOv5深度学习模型的中国…...

Tox故障排除指南:常见问题及解决方案大全

Tox故障排除指南:常见问题及解决方案大全 Tox是一款强大的命令行驱动CI前端和开发任务自动化工具,能够帮助开发者在不同环境中自动化测试、打包和部署流程。本文将汇总Tox使用过程中的常见问题及解决方案,助你快速定位并解决问题&#xff0c…...

终极指南:ReconnectingWebSocket与三大框架无缝集成的完整方案

终极指南:ReconnectingWebSocket与三大框架无缝集成的完整方案 【免费下载链接】reconnecting-websocket A small decorator for the JavaScript WebSocket API that automatically reconnects 项目地址: https://gitcode.com/gh_mirrors/re/reconnecting-websock…...

d2s-editor终极指南:免费开源暗黑破坏神2存档编辑器完整教程

d2s-editor终极指南:免费开源暗黑破坏神2存档编辑器完整教程 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾经想要调整暗黑破坏神2角色的属性,但又不愿意花费大量时间刷装备?或者你的…...

进程控制总结

文章目录1. 进程创建2. 进程终止3. 进程等待4. 进程替换4.1 exec 系列函数4.2 替换原理1. 进程创建 在Linux系统中fork()函数是非常重要的函数&#xff0c;它用来在一个已经存在的进程中创建一个新的进程。新进程成为子进程&#xff0c;原进程称为父进程。 // #include <u…...

无线射频专题《从波长、频率到相位:射频核心参数全解析与实战应用》

1. 射频信号的基础三要素&#xff1a;波长、频率与振幅 第一次调试Wi-Fi路由器时&#xff0c;我看到后台有个"频道带宽"设置&#xff0c;从20MHz调到40MHz后网速突然变快&#xff0c;这背后其实是射频参数的魔法。射频信号就像会跳舞的绳子——你抖动绳子的一端&…...

缓存空对象的内存优化方案

缓存空对象的内存优化方案深度解析 缓存空对象是解决缓存穿透的经典方案,但其“每个空 Key 都占用内存”的特性在大规模场景下会成为新的问题。本文深入剖析缓存空对象的内存优化方案,从基础优化到高级策略,全方位解决内存膨胀问题。 一、问题的本质:空对象缓存的内存开销…...

告别龟速下载!八大网盘直链下载助手让你文件下载飞起来

告别龟速下载&#xff01;八大网盘直链下载助手让你文件下载飞起来 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

AI Agent学习路线:先「用顺」模型再「会用」工具

这些实际上更像工程问题&#xff0c;公司愿意给30k月薪的原因就在这里&#xff0c;Agent开发不是玩具技术人&#xff0c;是能把玩具变成生产力的人。这环节最直接有效的方法就是跟着项目完整走一遍&#xff0c;如果你无从下手&#xff0c;趁着有大佬带队&#xff0c;你直接跟着…...

YimMenu终极指南:如何安全高效地提升GTA5游戏体验

YimMenu终极指南&#xff1a;如何安全高效地提升GTA5游戏体验 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

Kali下BeEF-XSS安装全攻略:从源配置到问题解决

1. 为什么选择BeEF-XSS&#xff1f; 如果你正在学习网络安全或者对渗透测试感兴趣&#xff0c;BeEF-XSS绝对是一个绕不开的神器。简单来说&#xff0c;它就像是一个浏览器漏洞的指挥中心&#xff0c;能够通过XSS漏洞控制受害者的浏览器。想象一下&#xff0c;你可以在对方不知情…...