模型训练
- 首先需要训练一个遥感建筑提取的模型,数据集采用的武汉大学的卫星数据集Satellite dataset I (global cities)
- 清洗数据为需要的格式和数据类型
- PaddleX是PaddlePaddle全流程开发工具,包含的PaddleCV覆盖CV领域图像分类、目标检测、语义分割、实例分割四大主流任务场景。其中PaddleSeg是基于PaddlePaddle开发的端到端图像分割开发套件,覆盖了DeepLabv3+, U-Net, ICNet, PSPNet, HRNet, Fast-SCNN等主流分割网络。通过模块化的设计,以配置化方式驱动模型组合,帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。在百度的AI Studio平台,使用全流程工具PaddleX,训练一个建筑提取的模型。使用deeplabv3+训练大概500轮,保存模型,精度如下
miou=0.815452,
category_iou=[0.99341516 0.63748982],
macc=0.993491,
category_acc=[0.99626439 0.80194003],
kappa=0.775318 .
- 将预测模型导出在本地文件夹
- 本地测试的结果如下
- 对结果进行开闭运算,去掉小的毛刺和填补小的孔洞,再将结果转换为二值图像。使用opencv-python中的findContours方法来寻找边界,寻找到的边界由坐标构成,再对边界进行面积和周长的统计。使用contourArea和arcLength方法计算面积周长,保存在字典中
- 基于上面得到的面积周长和实际建筑的高度,利用回归得到一个高度预测模型,用于预测建筑拉伸的高度
grasshopper电池构建
- Grasshopper(简称GH)是一款可视化编程语言,它基于Rhino平台运行,是数据化设计方向的主流软件之一,同时与交互设计也有重叠的区域。与传统设计方法相比,GH的最大的特点有两个:一是可以通过输入指令,使计算机根据拟定的算法自动生成结果,算法结果不限于模型,视频流媒体以及可视化方案。二是通过编写算法程序,机械性的重复操作及大量具有逻辑的演化过程可被计算机的循环运算取代,方案调整也可通过参数的修改直接得到修改结果,这些方式可以有效的提升设计人员的工作效率
- 注意
- 下载ghcpython,grasshopper自带python为基于.net的ipython,要做深度学习的预测需要用到原生的python,ghcpython可以满足
- 32位tif的遥感图像无法读取,需转为8位或24位的tif
- 在rhnio中将图像平移到以左上点为顶点的位置,对应边界位置,创建边界进行拉出,通过标签测试建立建筑
- 连接电池,常规操作用自带的ipython,而本地装上opencv和paddle使用ghcpython编写电池,此时只需要在遥感图像电池中输入图像的地址,在模型路径电池写上对应的路径,就可以在秒时间内得到建筑的快速白模
- 电池和模型放在AI Studio的项目中了(CSDN的积分下载太坑了)
待改进问题
- 由于各国各地的建筑风格不统一,且Satellite dataset I (global cities)数据集数据量较少,分割的效果一般
- 建筑高度信息数据过少过集中,且使用的因子较少,所以导致模型高度的预测准确性较差
- 建筑轮廓过于不规则,可以使用一些方法进行调整