摘要:近年来,深度学习算法,特别是基于全卷积网络(FCN)的方法,在遥感领域变得非常流行。然而,这些方法通常在不同的数据集和深度学习框架中实现和评估,缺乏统一的工具包来整合这些方法。为此,本文介绍了一个名为Geoseg的计算机视觉工具包,专注于建筑分割和轮廓提取。Geoseg实现了九种最先进的模型,并提供了用于模型训练、日志记录、评估和可视化的实用脚本。该工具包的实现强调统一性、简洁性和灵活性。通过在统一的高质量航拍影像数据集上进行比较实验,评估了所有实现方法的性能和计算效率
论文:paper
代码:code

目录
⭐⭐1.核心创新点
-
统一的计算机视觉工具包:Geoseg是一个专注于高分辨率航拍影像建筑分割和轮廓提取的计算机视觉工具包,它整合了多种先进的深度学习模型,包括FCN、U-Net、SegNet、FPN、ResUNet、MC-FCN和BR-Net等,为研究人员和开发者提供了一个统一的平台,方便他们进行模型训练、日志记录、评估和可视化。
-
性能基准的建立:通过在统一的高质量航拍影像数据集上对不同模型进行仔细的训练和评估,产生了各种模型的性能基准,便于对不同模型的性能进行深入比较,为选择合适的模型提供了参考。
-
模型的优化与开源:该工具包经过优化并公开给公众,使得其他研究人员或开发者可以轻松地将其应用于自己的研究中,促进了相关领域的研究进展和技术交流。
-
丰富的评估指标:实现了多种平衡和不平衡的评估指标,如精确度、召回率、总体准确率、F1分数、Jaccard指数和kappa系数等,能够全面、客观地评估模型的性能。
-
模型的改进与创新:在实现原有模型的基础上,对部分模型进行了一些改进,例如BR-Net采用修改后的U-Net结构,用LeakyReLU替代传统的ReLU,并引入额外的边界损失来规范模型,提高了模型的性能。
🍎🍎2.网络结构
-
FCN(Fully Convolutional Networks):经典的FCN方法采用连续的卷积操作和双线性上采样来实现像素到像素的翻译,根据不同中间层的融合和上采样级别,有FCN32s、FCN16s和FCN8s三种变体。
-
U-Net:U-Net方法采用多个跳跃连接,将上层和下层之间连接起来,有助于保留图像的细节信息,提高分割精度。
-
FPN(Feature Pyramid Networks):类似于U-Net,FPN也采用多个跳跃连接,并且生成多尺度预测作为最终输出,能够更好地处理不同尺度的物体。
-
SegNet:与FCN相比,SegNet采用解池化操作,利用对应最大池化操作的池化索引来执行上采样,减少了参数数量和计算量。
-
ResUNet:基于U-Net的基本结构,用残差块替代VGG-16的卷积块,增强了模型的表示能力,从而获得更好的模型性能。
-
MC-FCN(Multi-Constraint FCN):以U-Net为后端,并引入对应输出的多约束条件,通过多方面的约束来提高分割的准确性。
-
BR-Net(Boundary Regulated Network):使用修改后的U-Net作为共享后端,用LeakyReLU(α=0.1)替代传统的ReLU,并引入额外的边界损失来规范模型,使得模型在分割建筑物的同时,能够更好地提取建筑物的轮廓。
工程组织如下:

👍👍3.论文实现结果


🌷🌷4.用自己的数据集复现
🏆4.1数据组织
数据组织目录结构如下:
---data_root_dir
---img
---0.png
---1.png
---2.png
---3.png
...
---mask
---0.png
---1.png
---2.png
---3.png
...
---train.csv
---val.csv
train.csv和val.csv内容如下:

🏆4.2训练过程
训练过程只需要指定对应参数即可,如下:
python src/train.py -root building -net MCFCN -trigger iter -interval 50 -terminal 5000 -batch_size 24
参数说明:
- root:数据集名称
- net:所选网络
- trigger:训练参数,可选iter和epoch,iter为根据迭代次数训练,epoch为根据轮数训练
- interval:每多少轮或者每多少迭代次数验证一次
- terminal:一共训练多少轮或迭代多少次
- batch_size:批处理大小,根据显卡自行调节
训练过程结果如下:

训练完成后的模型保存在./checkpoint文件夹下
命名为:SegNet-3*1*24-building_iter_500.pth
训练完成的checkpoint文件结果如下:

其中checkpoints.csv文件内容如下:

🏆4.3测试过程
测试数据组织目录结构如下:
---src
---data
---img
---0.png
---1.png
---2.png
---3.png
...
---mask
---0.png
---1.png
---2.png
---3.png
...
---test.txt
---ref.csv
测试代码如下:
python src/testPatch.py -root building -checkpoints SegNet-3*1*24-building_iter_500.pth
参数说明:
- root:数据集名称
- checkpoints:模型文件名称
测试结果如下:

测试结果存放在result/building文件夹下

1.png显示如下:

获取建筑物掩膜边界,运行get_outline.py,结果存放在result/building_outline文件夹下。此处的get_outline.py是我自己写的,需要源码的同学请私信留言。
结果如下:

至此,整个网络就复现完成了。
整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

被折叠的 条评论
为什么被折叠?



