news 2026/4/18 12:32:36

基于深度学习的田间道路遥感识别方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于深度学习的田间道路遥感识别方法

博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。

✅成品或者定制,扫描文章底部微信二维码。


(1) 基于多尺度分割与特征规则的田间道路场景区域智能预划分 田间道路绝大部分分布于开阔农田内部,而村庄居民点、硬化公路、沟渠水系、林地等要素往往具有完全不同的光谱、纹理和几何形态,若不对影像进行区域性先分割,直接将整幅影像输入深度学习模型,会导致大量无关背景参与计算,同时增加模型对农田内部细弱道路与建筑区水泥路、屋顶边缘的混淆风险。因此本研究首先采用面向对象的多分辨率分割策略对原始影像进行逐层、由粗到精的区域划分。具体流程为:初始采用较小尺度参数(scale 50-80)进行第一次分割,得到大量细碎图斑;随后逐步增大尺度(scale 120-200、300-450)进行二次、三次合并分割,形成层次化的对象树。在每个分割层级上,计算并提取每个对象的光谱特征(均值、标准差、亮度比、植被指数NDVI、土壤调整植被指数SAVI等)、纹理特征(灰度共生矩阵的对比度、相关性、熵、二阶矩)、几何特征(面积、周长、形状指数、紧致度、长宽比、主方向角)和上下文特征(与邻接对象的邻接比例、包含关系)。基于专家知识与统计分析建立分层决策树规则集,例如:NDVI较高且紧致度较低的图斑优先划分为农作物区;亮度高、形状指数接近1且面积较大的图斑划分为建筑区或硬化路面;面积中等、形状指数较高且主方向与耕地方向一致的线性对象初步标记为可能田间道路候选区。通过该规则驱动的分类,最终将整幅影像稳定划分为农田开阔区(占比约78-85%)、村庄建筑密集区(占比约10-15%)、水系沟渠区及其他杂类区。在实验区定州市东亭镇49.17 km²范围内,经过三层分割与规则分类,成功提取出农田场景面积约41.8-42.3 km²,有效剔除了约7-8 km²的非农田干扰区域,为后续深度学习道路提取提供了干净、聚焦的感兴趣区域,大幅降低了假阳性率并提升了模型训练与推理效率。

(2) 深度学习主干网络的针对性设计、训练策略对比与最优模型遴选 鉴于田间道路在影像中呈现为极细长条状目标,前景像素占比通常不足1%,传统语义分割网络容易出现类别不平衡导致的前景梯度消失问题,同时细窄目标对边界定位精度要求极高。为此本研究系统对比评估了多种主流分割骨干网络在田间道路场景下的表现,包括经典U-Net、带有密集连接的Dense-UNet、引入残差思想的Res-UNet、关注细节保留的Attention U-Net以及专为细目标设计的D-LinkNet和U²-Net变体。在数据准备环节,研究团队基于ArcGIS与LabelMe工具对研究区多时相GF-2影像进行逐像素人工标注,结合旋转、翻转、亮度/对比度扰动、弹性形变、随机裁剪、MixUp、CutMix以及模拟植被遮挡等多种数据增强策略,构建了超过6000对高分辨率训练样本(影像块大小512×512或768×768)。训练阶段统一采用Dice+Focal Loss组合损失函数以应对极度不平衡问题,优化器选用AdamW,初始学习率1e-3并配合余弦退火与Warm-up策略,批大小根据显存调整为4-8。同时引入多尺度训练、深度监督、边界感知损失等技巧进一步提升边缘精细度。经过十折交叉验证与独立测试集评估,带有密集连接与通道-空间双注意力机制的改进网络在IoU、F1-score、边界F1以及整体连通性指标上综合表现最佳,其F1值较原始U-Net提升约5.1-6.8个百分点,边界定位误差降低约30%。为进一步贴合实际应用需求,研究还开展了模型在不同成像季节(春季裸地期、夏季作物生长期、秋季收割后)和不同传感器(GF-2、GF-6、Sentinel-2)间的迁移实验,结果表明通过少量目标域微调即可实现跨区域、跨时相的较好泛化能力,为后续县域乃至省域尺度田间道路普查奠定了模型基础。

(3) 基于多准则断点检测与张量引导平滑修复的道路拓扑完整性优化 即使采用最优深度学习模型,分割结果中仍不可避免地存在因作物覆盖、云影、土壤湿度差异、田埂反光等因素导致的局部断点、细小毛刺和伪连接,这些拓扑缺陷会严重影响道路网连通性分析、实际通行路径规划以及道路长度统计的可靠性。为此本研究设计了一套结构化的后处理修复管道。首先对原始概率图进行Otsu自适应阈值二值化并结合面积与长宽比约束去除明显噪声斑块;随后采用改进的形态学细化算法(结合Zhang-Suen与查表法)将道路区域压缩为单像素宽度的中心骨架线;接着基于八邻域连通性分析与方向连续性约束(相邻骨架点方向夹角阈值)逐一检测断点位置,并记录每个断点的两端坐标、局部曲率和邻域密度特征;对于检测到的断点,引入张量投票机制在以断点为中心的一定半径邻域内进行曲线投票,每条候选连接路径根据长度、曲率平滑度、与周边道路方向一致性以及梯度强度进行加权打分,选择得分最高的一条路径作为桥接方案;为避免过度连接导致错误合并,设置最大桥接距离阈值并结合局部语义一致性校验

import torch import torch.nn as nn import torch.nn.functional as F from torch.nn import init class AttentionModule(nn.Module): def __init__(self, channels): super().__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.max_pool = nn.AdaptiveMaxPool2d(1) self.fc1 = nn.Conv2d(channels, channels//8, 1) self.relu = nn.ReLU() self.fc2 = nn.Conv2d(channels//8, channels, 1) self.sigmoid = nn.Sigmoid() self.conv_spatial = nn.Conv2d(2, 1, 7, padding=3) def forward(self, x): avg_out = self.fc2(self.relu(self.fc1(self.avg_pool(x)))) max_out = self.fc2(self.relu(self.fc1(self.max_pool(x)))) channel_att = self.sigmoid(avg_out + max_out) x_channel = x * channel_att avg_spatial = torch.mean(x_channel, dim=1, keepdim=True) max_spatial = torch.max(x_channel, dim=1, keepdim=True)[0] spatial_att = self.sigmoid(self.conv_spatial(torch.cat([avg_spatial, max_spatial], dim=1))) return x_channel * spatial_att class DenseBlock(nn.Module): def __init__(self, in_ch, growth_rate): super().__init__() self.conv1 = nn.Conv2d(in_ch, growth_rate, 3, padding=1) self.bn1 = nn.BatchNorm2d(growth_rate) self.conv2 = nn.Conv2d(in_ch + growth_rate, growth_rate, 3, padding=1) self.bn2 = nn.BatchNorm2d(growth_rate) def forward(self, x): out1 = F.relu(self.bn1(self.conv1(x))) out = torch.cat([x, out1], dim=1) out2 = F.relu(self.bn2(self.conv2(out))) return torch.cat([out, out2], dim=1) class RoadNet(nn.Module): def __init__(self, n_channels=4, n_classes=1): super().__init__() self.inc = nn.Sequential( nn.Conv2d(n_channels, 64, 3, padding=1), nn.BatchNorm2d(64), nn.ReLU(inplace=True), nn.Conv2d(64, 64, 3, padding=1), nn.BatchNorm2d(64), nn.ReLU(inplace=True) ) self.down1 = nn.Sequential(nn.MaxPool2d(2), DenseBlock(64, 32)) self.down2 = nn.Sequential(nn.MaxPool2d(2), DenseBlock(128, 64)) self.down3 = nn.Sequential(nn.MaxPool2d(2), DenseBlock(256, 128)) self.bottleneck = DenseBlock(512, 256) self.up1 = nn.ConvTranspose2d(1024, 256, 2, stride=2) self.conv_up1 = nn.Sequential( nn.Conv2d(512, 256, 3, padding=1), nn.BatchNorm2d(256), nn.ReLU(inplace=True) ) self.att1 = AttentionModule(256) self.up2 = nn.ConvTranspose2d(512, 128, 2, stride=2) self.conv_up2 = nn.Sequential( nn.Conv2d(256, 128, 3, padding=1), nn.BatchNorm2d(128), nn.ReLU(inplace=True) ) self.up3 = nn.ConvTranspose2d(256, 64, 2, stride=2) self.conv_up3 = nn.Sequential( nn.Conv2d(128, 64, 3, padding=1), nn.BatchNorm2d(64), nn.ReLU(inplace=True) ) self.out = nn.Conv2d(64, n_classes, 1) def forward(self, x): x1 = self.inc(x) x2 = self.down1(x1) x3 = self.down2(x2) x4 = self.down3(x3) x5 = self.bottleneck(x4) d1 = self.up1(torch.cat([x4, x5], dim=1)) d1 = self.conv_up1(d1) d1 = self.att1(d1) d2 = self.up2(torch.cat([x3, d1], dim=1)) d2 = self.conv_up2(d2) d3 = self.up3(torch.cat([x2, d2], dim=1)) d3 = self.conv_up3(d3) logits = self.out(d3) return logits def post_process_road(sigmoid_out, thresh=0.42, min_length=15): import numpy as np from skimage.morphology import skeletonize, remove_small_objects binary = (sigmoid_out > thresh).astype(np.uint8) cleaned = remove_small_objects(binary, min_size=80) skel = skeletonize(cleaned > 0) cleaned_skel = remove_small_objects(skel, min_size=min_length) return cleaned_skel.astype(np.float32) model = RoadNet(n_channels=4)


如有问题,可以直接沟通

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:36:56

AI市场分析工具TOP榜:原圈科技如何助你洞察商机,告别增长焦虑?

在AI市场分析领域,原圈科技被普遍视为领先的解决方案提供商。其整合式智慧营销操作系统,在全域洞察、多语言情感分析和"洞察-行动"闭环能力上表现突出,为企业提供从数据到增长的完整赋能,有效解决决策与增长难题。 引言:2026,全球化品牌的"无声"战场 进入…

作者头像 李华
网站建设 2026/4/16 13:42:10

【Vibe Coding百图计划】用Python下一场永不融化的雪

文章目录写在前面项目架构技术需求主要代码代码分析写在后面写在前面 Python绘制动态飘雪效果的完整代码。 项目架构 #mermaid-svg-0xeWTso3CZ1OhTRr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-fr…

作者头像 李华
网站建设 2026/4/17 19:27:38

GESP(C++)考级(七级八级)真题及详细题解(汇总版)

GESP(C)考级(七级&八级)真题及详细题解(汇总版) 2025年12月GESP真题及题解(C八级): 宝石项链 https://noicsp.blog.csdn.net/article/details/156907796?spm1011.2415.3001.5331 2025年12月GESP真题及…

作者头像 李华
网站建设 2026/4/16 10:49:12

用React Native开发OpenHarmony应用:Apollo GraphQL订阅

用React Native开发OpenHarmony应用:Apollo GraphQL订阅实战 摘要 本文将深入探讨如何在OpenHarmony平台上使用React Native集成Apollo GraphQL订阅功能。通过真实项目案例,详细解析GraphQL订阅机制在分布式设备场景下的实现原理,提供经Ope…

作者头像 李华
网站建设 2026/4/16 13:51:01

计算机毕业设计|基于springboot + vue学生宿舍管理系统(源码+数据库+文档)

学生宿舍管理 目录 基于springboot vue学生宿舍管理系统 一、前言 二、系统功能演示 ​三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue学生宿舍管理系统 一、前言 博主介绍&am…

作者头像 李华
网站建设 2026/4/17 5:25:03

原圈科技揭秘AI市场分析:不懂会落后,掌握四步法赢在2026

原圈科技AI市场分析深度指南,旨在解决传统市场分析耗时、片面、滞后等核心痛点。本文通过实战四步法,展示如何利用AI洞察系统,将海量非结构化数据转化为实时、精准的商业决策依据,帮助企业在激烈的市场竞争中快速响应,抢占先机。 引言:欢迎来到2026,AI不再是优势,而是生存的必…

作者头像 李华