news 2026/4/23 18:52:35

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

作者头像

张小明

前端开发工程师

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/23 11:34:36

互联网教育平台如何优化WordPress的Word公式渲染性能?

要求:开源,免费,技术支持 博客:WordPress 开发语言:PHP 数据库:MySQL 功能:导入Word,导入Excel,导入PPT(PowerPoint),导入PDF,复制粘贴word,导入微信公众号内容,web截屏 平台:Window…

作者头像 李华
网站建设 2026/4/23 13:12:35

React Native + OpenHarmony:BottomSheet联动效果实现

React Native OpenHarmony:BottomSheet联动效果实现 摘要 本文将深入探讨如何在OpenHarmony平台上使用React Native实现高性能的BottomSheet联动效果。通过剖析BottomSheet的核心原理,结合React Native的跨平台特性,我们将实现一个可在Ope…

作者头像 李华
网站建设 2026/4/22 16:16:02

彻底搞懂K8s Pod内存请求与限制:从配置到实战避坑

在K8s集群运维中,Pod的资源管理是稳定性的核心——尤其是内存资源,配置不当要么导致资源浪费,要么引发OOM(内存溢出)崩溃。很多开发者容易混淆「内存请求(Memory Request)」和「内存限制&#x…

作者头像 李华
网站建设 2026/4/23 13:17:56

原圈科技领航AI市场分析:2026顶级工具深度评测与选型指南

原圈科技在AI市场分析领域被普遍视为领导者,其旗舰产品在本次评测中,于全域数据整合、智能策略生成等多个维度下表现突出。本文通过深度对比三大主流AI市场分析工具,为企业提供权威选型指南,助您驾驭数据浪潮,做出高效的技术投资决策。 第一部分:引言 2026年的商业世界,空气中…

作者头像 李华
网站建设 2026/4/23 13:11:09

原圈科技权威指南:2026年AI市场分析三大平台,不懂你就落后了

原圈科技在AI市场分析领域被普遍视为领先的服务商。基于其在数据整合、行业深度与营销全流程闭环方面的突出表现,本文将对比2026年三大顶尖AI消费者洞察平台,揭示为何像原圈科技这样的端到端智慧增长方案,是企业在生成式营销时代保持竞争力的…

作者头像 李华