深度学习大规模道路网络自动提取

好久没有更新了,近期做了一个工作,就是用深度学习方法来自动提取高分辨率遥感影像上的道路网络,16年的时候都是用的什么SVM,什么增强线性指数等

手工设计的线性目标增强特征,然后去提取道路,那些个东西说白了,没啥用,在一个小区域可能做的有那么点效果,但是换一个场景,立马就没了,没有任何普适性

可言,之前用深度学习方法做过高分辨率影像变化监测工作,这一次,我重新把网络进行了设计,用于提取道路网络,最终生成道路中心,并进行大规模场景实验,结果

还是非常不错的,个人觉得在一定程度上可以减少人工提取道路网络的工作量。如需要代码:Email:[email protected],qq:1044625113,添加好友时,请备注:道路网络自动提取!

好了不多说了,介绍下道路网络提取的部分工作,首先是样本部分,样本采用开源的道路网络数据和标签(应该是国外某个地区),大家可以到开源数据网站下载,

训练集大概是6000多张1024*1024的三通道高分辨率影像,看下面:

图1 样本和标签

其实,客观的说,这个样本做的确实不够好,为什么呢,因为有一些道路该画出来的,没有画出来,比如说这个样本上的中间那条路,就没有画出来,但是总的来说,在深度学习里面,

样本是燃料,有总比没有要好,是吧!接下来就输入到我设计的网络中来,总体来说,参考了Deeplabv3+的思想,使用多尺度特征进行提取,但是全部采用分离卷积替换resnet50层,这样

有一个好处,学习速度快,而且轻量,比Deeplab轻了5倍,更为关键的是,一张卡可以扔进更多的样本。一张RTX2080ti可以扔进16个1024*1024的样本,而一般的Deeplabv3v 只能扔进4个,

多了就out of memory了,可能在学术上意义不大,但是在工程上意义巨大,因为工头往往不会有那么多时间给你训练!!!!!(开个玩笑)

    模型训练完毕,测试结果代码如下所示:

function resultBlock = testDLmodel(imgBlock, inputSize, net)
% we can use this function to process big image

TestImg = imgBlock(:,:,1:3);                                            % google 地图下载的是四个通道

patchSize = inputSize;                                                 % 按照训练图像块的大小去分块预测
Result = segmentImage(TestImg, net, patchSize);
Result = im2bw(mat2gray(Result), 0.1);

line = extractionLine(Result);                                         % 提取中心线

se = strel(‘disk‘,2);
line = imdilate(line, se);
resultBlock = labeloverlay(mat2gray(TestImg),line,‘Transparency‘,0);          % 叠加到原始影像上

fprintf([‘a block has been finished...\n‘]);

% imwrite(mat2gray(line),[path(1:end-4),‘_LiteSeg_out_Line.tif‘]);
% imwrite(mat2gray(Result),[path(1:end-4),‘_LiteSeg_out.tif‘]);

end

  由于影像实在太大,我用了分块处理的方式进行解决,这样简单而又方便的解决IO,内存不足的问题了,这个比较工程手段了,其实我个人学术上也做了一点工作,

我发现学院派有一个很大的缺点,就是小区域做个实验就完事了,但是真正的工程不是这样的,小区域实验成功后,应当大规模应用起来,所以我的博客都是一些实际而

又有用的工作,比如下面这个分块处理大影像问题:

%% read test image
load net_liteSegModel.mat
inputSize = [4096, 4096];

%% block process to extract road line
fun = @(block_struct) testDLmodel(block_struct.data, inputSize, net);        % 调用分块处理超大影像
blockproc(‘岳麓区.tif‘, inputSize, fun, ‘Destination‘, ‘岳麓区中心线.tif‘);

     在开源数据训练完毕后,我直接爬了google数据进行测试,地区选择国内湖南地区,大小是4万*3万像素,总共是14个g,跑完大概花了30分钟,如果换成固态硬盘会快的多,如果并行的话,

控制在10分钟以内应该问题不大,主要时间花在IO上面了,穷人只能用机械硬盘,唉。。。。。好了,直接看结果吧!

图2 道路提取结果

图中蓝色区域为道路中心线,大家可能看的不是非常清晰,下面我放大几个区域:

图3 农田部分

图4 山区公路部分

图5 山区盘山泥泞小路

图6 丘陵地带道路提取结果

从结果来看,确实是不错的,但是仍然存在部分道路网络断裂,弯曲等等,这些可以通过后续优化来改进,不是特别难的问题了,好吧,如果大家有需要的代码的,请联系我吧。

原文地址:https://www.cnblogs.com/wzp-749195/p/12422455.html

时间: 2024-11-06 07:27:33

深度学习大规模道路网络自动提取的相关文章

深度学习图像分割——U-net网络

写在前面: 一直没有整理的习惯,导致很多东西会有所遗忘,遗漏.借着这个机会,养成一个习惯. 对现有东西做一个整理.记录,对新事物去探索.分享. 因此博客主要内容为我做过的,所学的整理记录以及新的算法.网络框架的学习.基本上是深度学习.机器学习方面的东西. 第一篇首先是深度学习图像分割--U-net网络方面的内容.后续将会尽可能系统的学习深度学习并且记录. 更新频率为每周大于等于一篇. 深度学习的图像分割来源于分类,分割即为对像素所属区域的一个分类. 有别于机器学习中使用聚类进行的图像分割,深度学

深度学习大规模MIMO中的功率分配

摘要-本文使用深度学习的方法在大规模MIMO网络的下行链路中执行max-min和max-prod功率分配.更确切地说,与传统的面向优化的方法相比,训练深度神经网络来学习用户设备(UE)的位置和最优功率分配策略之间的映射,然后用于预测新的UE集合的功率分配曲线?与传统的优化定向方法相比,使用深度学习的方法显著提高了功率分配的复杂性-性能折衷?特别地,所提出的方法不需要计算任何统计平均值,而是需要使用标准方法来计算,并且能够保证接近最优的性能. 1 引言 大规模MIMO是指一种无线网络技术,其中基站

深度学习——深卷积网络:实例探究

1. 三个经典网络 红色部分不重要,现在已经不再使用 这篇文章较早,比如现在常用max,而当时用avg,当时也没有softmax 这篇文章让CV开始重视DL的使用,相对于LeNet-5,它的优点有两个:更大,使用ReLU 以作者名字命名 same表示使用same过滤器,也就是输入和输出维度一致 16表示总共有16个CONV和FC,这篇文章指出了信道数和维度变化的规律性(随网络增加/减少),缺点是参数实在太多了 阅读论文顺序:2-3-1 2. 残差网络 残差网络由残差块组成,它使得网络可以变得更深

深度学习之GRU网络

1.GRU概述 GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种网络.GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依赖问题. 在LSTM中引入了三个门函数:输入门.遗忘门和输出门来控制输入值.记忆值和输出值.而在GRU模型中只有两个门:分别是更新门和重置门.具体结构如下图所示: 图中的zt和rt分别表示更新门和重置门.更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带

深度学习框架的评估与比较

转自深度学习微信公众号 本文来自:InfoQ http://www.infoq.com/cn/news/2016/01/evaluation-comparison-deep-learn 人工智能无疑是计算机世界的前沿领域,而深度学习无疑又是人工智能的研究热点,那么现在都有哪些开源的深度学习工具,他们各自的优缺点又是什么呢?最近zer0n和bamos在GitHub上发表了一篇文章,对Caffe.CNTK.TensorFlow.Theano和Torch等深度学习工具从网络.模型能力.接口.部署.性能

[译]深度学习(Yann LeCun)

深度学习 严恩·乐库  约书亚•本吉奥  杰弗里·希尔顿 摘要深度学习是计算模型,是由多个处理层学习多层次抽象表示的数据.这些方法极大地提高了语音识别.视觉识别.物体识别.目标检测和许多其他领域如药物发现和基因组学的最高水平.深学习发现复杂的结构,在大数据集,通过使用反向传播算法来说明如何一台机器应改变其内部参数,用于计算每个层中表示从前一层的表示.深度卷积网络在处理图像.视频.语音等方面都带来了新的突破,而递归网络在连续的数据,如文本和语音有更出彩的表现.引言机器学习技术增强了现代社会的许多方

用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

转自https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路.做法和部分实践的经验. 业务问题描述: 淘宝商品的一个典型的例子见下图,图中商品的标题是"夏装雪纺条纹短袖t恤女春半袖衣服夏天中长款大码胖mm显瘦上衣夏".淘宝网后台是通过树形的多层的类目体系管理商品的,覆盖叶子类目数量达上万个,商品量也

深度学习网络训练技巧汇总

转载请注明:炼丹实验室新开了一个专栏,为什么叫炼丹实验室呢,因为以后会在这个专栏里分享一些关于深度学习相关的实战心得,而深度学习很多人称它为玄学,犹如炼丹一般.不过即使是炼丹也是可以摸索出一些经验规律的,希望和各位炼丹术士一起多多交流. 训练技巧对深度学习来说是非常重要的,作为一门实验性质很强的科学,同样的网络结构使用不同的训练方法训练,结果可能会有很大的差异.这里我总结了近一年来的炼丹心得,分享给大家,也欢迎大家补充指正. 参数初始化. 下面几种方式,随便选一个,结果基本都差不多.但是一定要做

深度学习网络调参技巧

转自https://zhuanlan.zhihu.com/p/24720954?utm_source=zhihu&utm_medium=social 之前曾经写过一篇文章,讲了一些深度学习训练的技巧,其中包含了部分调参心得:深度学习训练心得.不过由于一般深度学习实验,相比普通机器学习任务,时间较长,因此调参技巧就显得尤为重要.同时个人实践中,又有一些新的调参心得,因此这里单独写一篇文章,谈一下自己对深度学习调参的理解,大家如果有其他技巧,也欢迎多多交流. 好的实验环境是成功的一半 由于深度学习实