遥感影像智能化分割分类工程化实施路径摸索

本文总结了基于遥感影像的信息采集工作中“自上而下、一步到位”工作模式下应用深度学习最新智能解译技术方面面临的问题与困境,期望通过“自下而上、分步到位”的途径进行突破,回顾了在这方面的摸索、试验过程,对初步成果——一个交互式自动识别地物边线QGIS插件Monitask——进行了介绍,并与同类工作进行了比较,可供从事遥感影像分析、地理信息采集工作和研究的同行们参考借鉴。如果对过程不感兴趣,可以直接跳到第三部分的第4节。

一、面临的挑战与困境

目前,遥感影像是地理信息采集的主要数据源,特别是对于大范围地理信息采集,具备合适的遥感影像基本上是必不可少的前提条件。经过多年的技术发展,数据源越来越丰富,影像数据的预处理效率也大幅提升,信息采集的软件工具也越来越丰富,但信息采集的效率却没有发生类似的革命性变化。尽管近几年来人工智能领域深度学习的发展对遥感影像信息提取起到了很大的推动作用,在一些特定应用方面,例如目标识别、典型地物类型识别、场景分类等方面具有显著的应用效果,一定程度上解决了“大海捞针”的痛点。但对于全要素或全覆盖的地物类型识别,包括地表覆盖分类、土地利用分类以及在此基础上或与之相关的地表变化监测,由于涉及面广、影响因素多、应用需求精准度要求高等特点,始终离不开人工为主的采集模式,效率提升远达不到应用需求的期许。

(一)面临的挑战

在这方面,就笔者的理解,主要面临以下两个个方面的挑战:

1、现实世界的复杂性

1)横向空间分异。水热和地质条件不同,演化出千差万别的地理环境,催生出形形色色的地表万象。所谓“一山有四季,十里不同天”,这种分异导致的不同,有时候是 突变,有时候是渐变。技术方法要灵活适应这种差别,需要付出极大的努力。

2)纵向时相变换。各种地理现象除开表现为各类地物在空间上的组合模式,也表现为在时间上的组合模式。例如落叶阔叶林,是阔叶树在空间上的达到一定密度的聚合,也表现为四季荣枯轮回变化的时间模式。信息采集中要获取这样的信息,就必须有足够的数据源和强大的技术手段支持。

3)地物的时空渗透。绝大部分地物或地理现象互相渗透,在空间和时间维度上相互交叠,形成复杂的时空组合。如果用静态的眼光对待,往往导致似是而非的结果。例如乔木林-乔灌混合林-灌木林形成的过渡地带,草原-稀树草原-森林形成的过渡带,城市-城乡结合部-乡村形成的过渡地带等。又如水田-旱地的季节交替组合,粮食-疏菜-水果等农作物的轮作变化等。

4)随机因素的扰动。作为复杂现实世界映像的遥感影像,还会受成像条件和其他技术条件随机变化的影响,进一步加剧复杂性,如成像光照条件、成像角度、云雾雨雪、几何畸变等。

2、应用需求的多面性

1)多视角。不同应用关注地物的不同属性。例如,生态保护更关注地物的物理属性,如土地上的覆盖物的具体类型和表征其结构、质量的物理参数;规划监督实施更关注土地的社会属性,包括用途、权属、效益以及利用方式的合规性等。当然,有时候社会属性需要结合物理属性进行推定,反过来社会属性会驱动物理属性的变化。但就遥感监测手段的局限来说,遥感影像反映的是某个瞬间的表象,对于这一表象下蕴含的其他信息,需要结合时序变化以及现场调查等多方面的信息才能准确获取。不同的视角,在信息采集中,集中反映在分类体系中,不同的视角会对应不同的分类体系。

2) 多尺度。不同应用立足不同的空间尺度。例如,耕地保护中对于占用耕地新建的居民小区,只需要采集小区的用地范围;而城市违规建筑治理中则需要采集每一栋房屋的范围。在信息采集中,一方面反映到最小图斑面积指标上,另一方面也反映在分类体系的详细程度上。

上述两种情形叠加,形成千变万化的工作目标。目前的技术途径,难以以一当百,形成应对各种需求的通用解决方案。如果要想针对特定的区域或特定的应用需求,精耕细作,各个击破,又面临天量的工作量,难以企及;另一方面,即使想各个击破,也限于技术天花板,自动识别结果的精度和准度总难两全,要想达到应用目标需求,都需要人工对结果进行核查和补充,才能提高到应用容许的指标。而提高的这一部分工作需要的投入,和全部靠人工的投入相比,往往相差不多,加上需要克服已有作业模式和管理机制惯性所需成本,可能和传统人工作业模式差不多甚至还不如。

(二)现实困境

目前,我们一般是按照应用目标,建立直接满足应用需求的分类体系,分类体系往往面向人类可理解的目标建立,较少考虑遥感影像的特征和计算机可识别能力,通过努力建立解译标志实现遥感影像和分类类别的对应,并在此基础上开展信息采集。由于解译标志难以准确表征对应的类型,还需要辅助大量人类隐式知识才能发挥作用。因此,这种分类体系本质上是针对人类的知识体系建立的分类体系,作业中也自然离不开人的参与。

虽然分类体系是面向人建立的,由于应用基于此,因此我们在尝试新技术手段时,也自然而然还是采用这套分类体系去要求计算机。实践表明,这种错配逐渐让我们已经似乎看到技术手段的天花板,走入了一个困境。

此外,由于分类体系实际上是某一类特定应用对信息需求的形式化表现,同时建立分类体系是一项需要共识和高成本的工作。因此,有些应用,其目标即使与某一已有分类体系不适合,但为了避免成本,往往会受限只能采用已有的分类体系,或在其之上进行修正或再解释,来满足自己的需要。这进一步加剧了前述困境。

二、跳出困境的想法

(一)“自上而下、一步到位”

把按照一定需求目标和逻辑规则,从一个起点出发,通过不断对概念进行拆分细化建立分类体系和相关技术体系的方法称为“自上而下、一步到位”的方法。从方法学上讲,是基于分析的方法,具体以线分类法为主,有时结合面分类法,形成的分类体系具有一定的层级关系。从认识过程来讲,属于基于先验知识的分类,每个类型和拆分类型的过程结合了大量已有显式或隐式知识。这些知识,有的可以规则化,有的无法规则化,需要作业人员在掌握相关显式知识的基础上通过大量实践进行意会。

具体到遥感影像分类,“自上而下、一步到位”的方法典型例子就是基于地理国情监测地表覆盖分类体系的信息采集。地理国情监测地表覆盖分类体系的建立,就是以地表植被覆盖的情况作为条件划分为有植被和无植被两大类,再分别从自然和人为因素的角度对其进行细分。比如,有植被覆盖的地物中一类主要是在自然状态下生长,受自然力控制较多,人为干扰小或者很少,按类型可分为林地和草地;而另一类主要是人类为了满足自身生存、生活、休闲、娱乐等活动而营造或管理的植被,结合主要植被形态和用途可分为耕地和园地。同样,按照这个分类方法,没有植被覆盖的地物中也可分为两类,一类是自然状态下形成的荒漠与裸露地表、水域,另一类按照由高到低的形态特征则可分为房屋建筑(区)、构筑物、道路和人工堆掘地。

这种方法的最大问题是包含了较多的隐式知识,例如“耕地”,在影像上可以体现为生长农作物、翻耕等明显的耕作特征,同时也可能是其他非耕作状态,而非耕作状态的情况就需要引入隐式知识才能判定。而隐式知识的主观性和不确定性较大,对一线普通作业人员的要求较高,不利于数据质量的控制。

(二)“自下而上、分步到位”

另外一种方法,是基于归纳的方法,就是以大量事实为基础,对其进行归纳,按照相似的程度由近及远进行归类并建立层级关系,在此基础上,根据各个类的共同特征,再赋予其特定的语义,由此建立一个基于事实的分类体系。但基于事实的分类体系并不直接面向应用,需要进一步与特定应用通过类型映射或组合进行对接,最终满足应用需求。这种方法称之为“自下而上、分步到位”的方法。

具体到遥感影像分类,该方法就是基于遥感影像上的各类地物表现出来的可识别的、特别是计算机可识别的各类影像特征,确定可以分辨出来的最底层的地物类别,如厂房、平房、农村瓦房、独栋别墅、单元居民楼、办公楼、机场候机楼、火车站站房等等。如果影像分辨率足够高,甚至可以按照房屋的高度、结构、主要建筑材料以及建筑风格等分为更加具体的底层类,这些类根据影像特征即可准确归类,同时也无法再进行细分,是特定分辨率下影像数据源可支持的原子类。为了对接应用需求,需要在这些底层的原子类的基础上,针对应用领域的业务逻辑,按照一定规则逐级进行归纳,向上形成层级化的用户分类体系,如上述房屋可以归并为生产建筑设施、居民建筑和公共建筑等,也可以归并为农村房屋、城市建筑等。

信息采集的过程,是首先获取对应底层原子类的数据,再按照归并规则合成符合用户分类体系的数据。因此,是通过两步达到用户需求的。但自底向上归纳时,底层原子类是出发点,可以面向不同的应用需求建立出不同的用户分类体系。也就是说,这种方式只需充分发挥数据源的利用极限,采集一套数据,通过不同的转换映射规则,可以分别响应多种应用需求,达到以不变应万变的效果。而且在确立转换映射规则时,可以充分利用其他资料条件,统一规范化引入隐式知识,在灵活响应需求的同时,保持口径一致。同时,由于底层原子类采集时主要依据影像特征体现的显式信息,这有利于发挥智能解译技术的长处,避开需要隐式知识参与带来的主观性和不确定性问题。但最大的问题是,底层原子类极其丰富,难以穷尽,且与空间和时间尺度紧密相关。不过,对于有限的时间空间范围内,底层原子类的数量总是有限的,因此采用分而治之的策略,理论上也具有一定的可操作性。

三、瞎子摸象

笔者对“自下而上、分步到位”的路径进行了摸索,由于知识有限,只堪“瞎子摸象”。现将过程与初步结果记录如下,以作备忘。

(一)前期工作:合作开展基于深度学习的遥感影像分类探索

几年前,深度学习给遥感影像分类带来了无限想象力,我们也开始在这方面利用一些有利条件进行探索,同时与领域内的一些机构开展合作,力图在遥感影像自动分类方面有所收获。经过较长时间的试验,针对前面提到的自上而下建立的地表覆盖分类体系,采集了大量训练样本,结合当时一些热门模型开展了长时间反复训练。结果表明,对于一些比较纯的覆盖类型,例如水面、连片的森林草原等,可以得到比较理想的结果;对于一些包含隐式知识较多的类型,准确率达不到可用的程度。另外,很难做到全部分类体系的全覆盖,哪怕是对一级类或二级类的覆盖。这样,对于工程化应用基本上没有希望。之后,试图将模型训练融入到人工作业流程之中,通过嵌入到业务流中进行无感迭代,但受限于模型架构,也缺乏相应的实现能力,只能作罢。

后来发现,虽然语义分类不能完全达到期望,但是单从边缘分割的角度来看,很多模型都具有较好的表现。因此,将重心转向了图像分割,希望通过分割-分类两步来实现语义分割,也就是影像分类。

(二)“自下而上、分步到位”思路的摸索

1、先分割、再分类

直接进行图像语义分割碰到绕不过去的困难,加上模型在边缘检测上的效果超出预期,因此自然而然想发挥其优势。仔细分析语义分割的困难,感觉主要是因为有些类型包含的隐式语义信息太多,难以反映在影像特征上,模型也就很难学习到。如果影像中包含的各类边界信息能够较好的学习到,那就可以在此基础上实现影像的简单分割,而且分割出的影像块内部的特征一般应具有较强的一致性。然后采用聚类方法对这些影像块进行归并,从而可以形成一个基于影像块特征的类型体系,对于每一类影像块特征具体的语义类别,可以通过人机交互加必要的外业调查即可确定。这实际上也是传统的面向对象分类的方法。只是图像分割这一步借助最新的深度学习方法。

这一路线实际上依赖于两个关键:一是分割更准确,二是聚类要有效。期望通过在分割和聚类两个环节都分别引入深度学习的方法,检验是否能够比传统的面向对象分类更可用。

为此,针对地理空间信息的特点和丰富的网络数据资源,为了便于模型训练过程中影像和Label样本数据的获取与管理,编写了专门的python包,结合缓存机制,将WMTS或WMS在线服务包装为paddlepaddle或Pytorch的Dataset,简化了训练数据准备流程,为按需在线获取样本数据进行训练提供了便利。在这种机制下,需要的label数据也可以发布为WMS或WMTS服务,也可以利用网络上已有的地图资源,经过适当的在线后处理,直接作为Label使用。因此,可以组合利用一些优质的网络地理信息资源,拓宽了信息来源,可一定程度上缓解标注资源匮乏的问题。

在准备进一步开展训练以提升模型边缘检测能力的过程中,对已有的一些相关边缘检测模型进行了调研和试验,发现一些在地面照片数据集基础上训练的预训练模型直接用于遥感影像,检测出的边界粗略看也有不错的效果,如:

HED:https://arxiv.org/abs/1504.06375GitHub - moabitcoin/holy-edge: Holistically-Nested Edge Detection

 pidinet:https://github.com/zhuoinoulu/pidinet

BDCN:GitHub - pkuCactus/BDCN: The code for the CVPR2019 paper Bi-Directional Cascade Network for Perceptual Edge Detection

RINDNET:GitHub - MengyangPu/RINDNet: RINDNet: Edge Detection for Discontinuity in Reflectance, Illumination, Normal and Depth, in ICCV 2021 (oral)

由于训练过程涉及大量工作量,加上预训练模型不错的效果,因此,直接基于可用的预训练模型开展“先分割、再分类”思路的摸索。

为了验证这一路线的可行性,基于边缘检测结果封闭生成初步的图斑,然后基于这些图斑切割图像形成图像块,在此基础上进行了初步聚类分析试验。主要步骤如下:

  • 1) 利用QGIS Processing工具箱中的Polygonize工具将边缘检测结果生成的线层转换为多边形;
  • 2) 编写一个采样工具,针对每个多边形,取该多边形内可容纳的最大正方形(包括旋转角度)或最大圆的外切正方形,从影像上裁切出影像块,作为代表该图斑的图像样本。具体实现中,以某个在线影像服务为数据源,将图斑边界多边形作为输入,并打包裁切操作,辅以缓存机制,一起封装为一个paddlepaddle的Dataset类,供后续环节按需调用,不需要事先生成数据集。
  • 3) 采用合适的AI模型,提取各个图像样本的特征向量,基于这些特征向量,采用各类聚类算法进行聚类分析。试验中采用了ppim中的rednet或swin模型作为编码器抽取特征,分别试验了sklearn中的SpectralClustering(谱聚类)、DBSCAN、FINCH、AffinityPropagation等聚类方法,也简单测试了基于深度学习的聚类模型DeepDPM(https://arxiv.org/abs/2203.14309),由于需要进行针对性训练,对DeepDPM的测试不够充分。其中,DBSCAN分析的结果,基本可以达到将试验所用分割图斑进行正确归簇的目的。初步验证了技术路线的可行性。

如果边缘检测结果比较理想,就可以沿着这条路走下去,进一步优化提升聚类分析的方法即可。但仔细查看分割线的时候,会发现存在两个主要的问题:一是有的地方分割过细,二是有的地方边界线不连续,另外也存在边界漏检的情况,特别是地物间界线不太清晰、存在过渡带的情况下。过细的问题,部分可以通过设定阈值去除空洞的方式处理,但部分较多相邻细碎分割的情况需要合并,如何正确合并较难处理。边界线不连续,可以通过延伸等做一定程度的后处理,但无法完全避免。

边缘检测的速度很快,可以自动成批处理,但如果要利用检测的边界结果,必须对其进行人工编辑。由于需要在大量数据中查找错误、修改节点、处理相互拓扑关系等,人工编辑工作量较大,用户体验很不友好。

因此,这条路线即使能走通,如果为了达到质量要求,必须在中间插入大量人工核查修改的环节,要用于实际工程中也存在很大的障碍。看来必须寻找其他突破口。

上述过程都是计算机自动批量化处理为主,过程中人工难以参与,只能对批量处理结果进行人工检查修改。面对大量需要检查处理的数据时,看上去密密麻麻,无所适从,要定位错误和修改错误都比较复杂,很容易让人产生厌烦和气馁的情绪。如果分割过程中能够引入人机交互,一方面计算机辅助提升边界提取效率,一方面人工及时判断对错,并针对性进行修改,从而做一个准一个,可能更符合工程化应用的要求。

因此,调整工作思路,不求全部自动化,着眼提升现有人工作业的效率,用人机交互的模式,加快图斑提取速度,做一个准一个,润物无声,便于实施。那既要保证质量,又要提高效率,如何借力AI,并且在实际作业中能够用起来呢?这既要解决方法的问题,也要解决AI模型到实际应用最后一公里实现路径的问题。这个时候,SAM来了。

2、SAM来了,想打瞌睡时递来了枕头

2023年4月,Meta发布了Segment-anything Model( SAM:https://github.com/facebookresearch/segment-anything )。开始尝试了SAM的批量分割模式,效果与前面其他模型差不多。看介绍,SAM应该生来就适合人机交互模式。因此,刚刚进入黑暗,又出现一丝亮光,还有不抓住的道理?

SAM一出现,各类深化和应用很快冒了出来,最吸引人的就是人机交互标注工具,比如salt: Segment Anything Labelling Tool, 交互式半自动图像分割标注工具ISAT。其应用模式和效果非常切合调整后的工作思路。只是这些工具都是针对单张图片,也没有地理坐标的概念,无法直接用于地理信息采集。也有一些针对遥感影像采集地理空间信息的软件包,如segment-geospatial(https://samgeo.gishub.org),是一个python包,需要通过其他接口进行调用,缺乏图形化的应用界面,采集结果的交互编辑修改不方便。因此,决定在前期大量工作的基础上,借鉴各方长处,摸索着做个QGIS Plugin,体现“先分割、再分类”的思路,实现交互式的遥感影像分类,并尽可能将分割和分类结合,且更易于操作,以更符合实际工程化应用场景的需求。

3、摸人家已经摸过的石头

于是,花了差不多半年时间,一步一步往前摸索。学习QGIS plugin的开发方法,摸索QT界面设计和事件机制,跟着例子研究pyqgis接口,跌跌撞撞走通了AI模型的接入,解决一个问题又冒出另一个问题,走过一关又有一关,其实都是别人摸过的石头,真真切切体会了一轮“知道的越多,发现自己越无知”。尽管如此,第一次走这条路,经过通往各处的大大小小路口,总是有“柳暗花明又一村”的感觉。回顾一下,罗列一些遇到的主要问题:

  • SAM模型怎么接进来?SAM模型的调用问题不大,主要是设计好交互流程,适时给它喂入需要的参数(影像、提示点),考虑地理坐标系,正确显示结果,处理好地理位置关系和结果保存。
  • 谁的工作影像只有1024*1024?SAM每次处理的图像大小为1024*1024,可是工作所使用的遥感影像远远大于这个尺寸,如果数据源来自于WMTS等服务,则范围基本没有限制。因此,设计了移动窗口的机制。但又不能受限于这个窗口,因此引入了窗口自动扩展的机制。同时,对于范围极大的图斑,如草原、森林、湖泊等,即使窗口自动扩展,也还是需要多次移动窗口才能完整采集,为此,采用基于频幕分辨率采样的机制进行解决,用户可以对图像进行缩放,降低影像显示分辨率,所见即所得,分割采集图斑时可以覆盖更大的地理范围。
  • 分割结果要变成矢量图斑才行。SAM的分割结果是栅格形式的Mask,需要进行矢量化,矢量化的结果除要保持正确坐标系外,还需要考虑简化等后处理操作,后处理操作不能千篇一律,应该与具体类型有关。例如,房屋边线一般应该是平直的,道路边线应该比较光滑等。
  • 相邻图斑交错在一起怎么办?也碰到一些集成AI模型的工具,采集的基本上都是离散图斑,彼此独立,互不相扰,没问题。但需要连片采集图斑时,如果不处理,先后采集的图斑会存在边界交错的情况,同类图斑也需要手动编辑合并,这在地理信息采集中是无法接受的。如果都留给作业人员手动处理,工作效率不但提不起来,还带来额外负担。因此,必须在交互的过程中,以作业员无感的方式自动完成相邻图斑的接边,使其符合拓扑要求。
  • 类型标注能不能智能点?每当完成一个图斑的分割,都需要明确图斑的类型,这需要用户的输入。如果每次用户都需要不厌其烦重复做出判断,也不利于提高效率。设计了实时采样对比机制,辅助用户根据之前的工作做出正确判断,尽可能缩短或简化判断过程的逻辑链条,提升标注效率。
  • SAM的参数量巨大,需要8GB以上显存的GPU支持,才能够达到人机交互对响应速度的基本要求,否则,每采集一个图斑,都会经历卡顿,很不友好。对此,感恩于开源社区众人拾柴火焰高,引入了轻量化的SAM-HQ(Segment Anything in High Quality)和MobileSAM(GitHub),即使没有GPU的支持,也能顺畅使用。
  • “同物异谱”、“”同谱异物“有没有?能不能帮助解决?用户采集大量图斑的过程中,有意或无意,都会产生这样的情况:标注为同一类型的若干图斑,其影像特征相差甚远;或者影像特征类似的若干图斑,被标注为不同的类型。如何辅助用户检查和处理这些情况?为此,基于相似性判断和聚类的方法,提供了相应的辅助检查工具,一方面有利于开展质量检查与控制,另一方面可以在此基础上对分类体系进行优化。
  • 此外,越来越多的遥感监测任务重点是采集变化部分,因此变化检测是一个关键环节。如果纯粹人工识别变化,劳动强度很高,比较费人。但变化检测,目前还没有特别理想的方法,初步加入了利用相似度计算结果给出参考结果的方法,也可以添加第三方变化检测的变化结果作为图斑采集指引,系统可自动为用户切换工作范围。后续将进一步探索或引入更好的变化检测方法。
  • 属性值借用。具体工作中,采集的图斑除类型属性,往往需要附带很多其他属性信息,而这些信息又是来自于已有的专题资料,为了减少后期处理环节,引入了属性借用的机制,对属性项可以设定属性值来源的其他外部图层,可快速实现属性值借用。

4、给“思路”搭了一个简陋的台

基本完成上述摸索后,终于形成了一个可以用来干活的工具,命名为Monitask,意为Monitoring Task。以前想做一个监测项目资源调度管理和作业方面的综合工具,当时就起了这个名字,没做完,这次接着在原来基础上加了采集的功能,犯懒,没有改名字,就这个了。

质本洁来还洁去,所有的工作取材于开源社区,因此也还回开源社区,全部代码已经发到gitee(https://gitee.com/grainseed/monitask)和github(https://github.com/grainseed/monitask)上,也已提交到了QGIS插件库(QGIS Python Plugins Repository),希望与感兴趣的同道们切磋,共同致力于技术发展推动美好生活。

1)都能干些啥?

Monitask是一个基于遥感影像交互高效提取和编辑地理信息的QGIS插件。该插件利用当前较为成熟的深度学习AI模型,通过交互的方式,依据用户点击的提示信息,实时对影像按用户意图进行分割形成图斑,并提供了相应的灵活标注功能,方便用户对图斑进行类型标注和属性填充。还可利用QGIS内置的图形编辑功能,对生成的结果进行进一步的精细编辑以符合数据规范要求。
利用该插件,可以进行地理信息数据采集生产,特别对采集图斑类数据,可以大幅度提高工作效率。也可以利用该插件,开展遥感影像分类标注工作,可以大大提升AI模型训练样本数据采集的工作效率和样本质量。
此外,该插件对分割形成的图斑可以自动进行邻接图斑公共边协调,同类图斑合并,边线简化、平直化、光滑等后处理,大图斑自动扩展等特色功能,分割功能可以自动适应影像显示比例尺的变化,以便于降比例尺采集大面积图斑,也可升比例尺精细采集实地面积小的图斑。利用该插件,可以自定义适应自身需求的标注系统或分类系统,可自动辅助判断分割结果的类型,还支持对标注系统或分类系统根据标注结果进行优化调整。

2)怎么用?

由于该插件需要依赖较多的python包,通常的QGIS plugin安装方法可能比较费劲,因此基于移动版QGIS(https://github.com/pigreco/QGIS_portable_3x)制作了完整的绿色QGIS包,感兴趣的可以直接下载解压运行即可。下载链接如下:

运行效果先睹为快:

详细使用方法,请参见https://gitee.com/grainseed/monitask/wikis

3)到此为止吗?

后续将在此基础上优化完善已有功能,消除bug,同时在以下方面进一步摸索:

  • 变化检测正宗点
  • 影像分类体系建立与优化
  • 影像分类体系的共享与融合
  • 影像分类体系和应用分类体系的对接
  • 应用分类体系的映射转换
  • 数据成果的融合与分析

5、找点自信

完成上述工作后,自觉动作太慢,估计已有较大发展,感觉开源社区应该也有别人在做同样的工作,找了一下,还真有,相关的有以下三家,也都是QGIS插件:

1、Geo-SAM:https://github.com/coolzhao/Geo-SAM

GitHub - luisCartoGeo/GeoAI_Plugin: Plugin para ejecutar el modelo de META Segment Anything en QGISPlugin para ejecutar el modelo de META Segment Anything en QGIS - GitHub - luisCartoGeo/GeoAI_Plugin: Plugin para ejecutar el modelo de META Segment Anything en QGISicon-default.png?t=N7T8https://github.com/luisCartoGeo/GeoAI_Plugin

 Geo-SAM的思路比较特别,可能是为了解决SAM模型太大导致的速度慢的问题。它将影像特征提取和分割分开在两个插件里实现,分割利用提前提取的影像特征交互进行,速度问题解决了,这一思路值得学习,不过随着SAM-HQ等轻量化模型的提出,必要性大为降低。特征提取部分应是批量化方式处理,这一步除开有插件,也有独立的python包,可以通过命令方式批量化执行。对于单幅影像,操作起来应该还可以,如果影像数据源是WMTS等在线服务的话,可能无法处理。此外,用户界面脱离了QGIS的通用界面,在自己专门的窗口中操作,提取后的图斑也没有相关后处理功能支持,用户友好性有待提升。

2、GeoAI_Plugin:https://github.com/luisCartoGeo/GeoAI_Plugin

根据github上的介绍和提供的几段录屏,该插件提供交互分割模式和全分割模式两种,可以让用户选择哪种SAM模型,但只支持Meta提供的不同大小的几个模型,不支持SAM-HQ等其他轻量化模型。由于界面只有西班牙语的,看不懂,试着操作了一下,CPU模式下如果载入SAM提供的预训练模型,速度太慢,基本无法使用。通过录屏了解,其交互模式的界面可交互性较差,用户操作并不能得到即时反馈,有点莫名其妙的感觉。

3、Geometric-Attributes:https://github.com/BjornNyberg/Geometric-Attributes-Toolbox/wiki/User-Guide#segment-anything-model

Geometric-Attributes是一个QGIS插件形式的工具箱,里面提供了调用SAM的对话窗口(基于 segment-geospatial(https://samgeo.gishub.orghe jishushouduan)实现),但和ARCGIS Pro类似,采用的是针对全部影像范围一次产生全部Mask的方式,不是交互式的方式,目前(2023年11月)可用性不高。

综合来看,目前Monitask的操作体验应该还是相对较好,除开功能上更加贴近实用,对初次接触的用户来说,还体现在以下几个方面:

  • 一是默认采用轻量化后的模型,默认工作在CPU上,对作业用的计算机没有特别要求,响应速度也能够满足人机交互的要求,基本没有等待感。
  • 二是人机交互即时反馈,每一次操作马上就可以看到效果,所见即所得,用户不需要琢磨。
  • 三是提供了免安装的绿色包,下载后解压即可用,没有安装门槛。

四、后记

经过大半年的跋涉,终于可以坐下来,抹抹汗,回望一下来时的路,回想一下出发时的心情,默念一下支持我的人们,整整行装,向着红日升起的方向,再出发! 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 遥感影像多尺度分割是遥感图像处理和机器学习领域的重要研究方向,其目的是将原始遥感影像分成多个具有不同语义的区域。Python作为一种广泛使用的编程语言,在遥感图像处理和机器学习领域也广泛应用。以下是Python实现遥感影像多尺度分割的方式: 1. 使用Python图像处理库(如opencv、PIL)读取原始遥感影像,并进行图像预处理(如尺度变换、颜色转换、滤波等)。 2. 对预处理后的遥感影像进行多尺度分割。常用的多尺度分割算法包括Fuzzy C-means聚类、K-means聚类、Mean-shift聚类等。Python中可以使用sklearn等机器学习库来实现这些算法。 3. 对多尺度分割结果进行后处理,包括去除小区域、填充空洞、边缘平滑等。这些后处理算法可以使用Python中的图像处理库来实现。 4. 最后将处理后的遥感影像输出为标准格式(如Tiff、png等)供后续应用使用。 需要注意的是,Python实现遥感影像多尺度分割需要较高的计算资源和较长的运行时间。因此,使用合适的硬件设备和优化算法是非常重要的。同时还要注意遥感影像多尺度分割算法的准确性和鲁棒性,避免过拟合和欠拟合现象的出现。 ### 回答2: Python遥感影像多尺度分割中是一种成熟且广泛使用的编程语言。遥感影像多尺度分割是指将遥感影像通过均值漂移、分水岭等算法划分成多个区域,以便更好地分析和处理遥感数据。 Python中能够实现遥感影像多尺度分割的库很多,比如在scipy中的ndimage子模块查找图片的局部最大值,然后使用连通组分分离出不同的区域。还有在opencv-python库中的image分割模块实现图像分割。 在Python中实现遥感影像多尺度分割的具体步骤如下: 1. 读取遥感影像,并对其进行预处理:消除噪声、增强对比度等。 2. 使用算法处理影像,将其分为多个不同的区域。最常用的算法包括:均值漂移、分水岭、K均值聚类、基于区域的分割等。 3. 对分割结果进行后处理,使其更加平滑并去除不必要的分割。 4. 可以对分割结果进行分类与识别,以提取感兴趣区域。比如使用机器学习算法对分割结果进行分类,识别出其中的植被、水域、道路等。 Python的灵活性和开源性使得其成为遥感影像多尺度分割的理想工具。与其他语言相比,Python的开发速度快,且可以支持更多的算法和模型库。同时,Python拥有丰富的可视化工具,可以对分割结果进行可视化,能够更加直观地展示分割结果。此外,Python代码也易于分享,使得不同的研究者之间能够更方便地交流和合作。 ### 回答3: Python是一种广泛应用于各种领域的编程语言,包括遥感影像领域。在遥感影像处理中,多尺度分割是一种常用的方法,它可以对影像进行分层处理,将大尺度的结构分解成更小的尺度结构。Python提供了一系列强大的遥感图像处理库,如GDAL、OpenCV和Scikit-image,它们可以在实现多尺度分割时提供重要的支持。 多尺度分割的过程可以分为以下几个步骤: 1. 数据准备。首先,需要从遥感数据源中读取影像数据,这通常可以使用GDAL库来完成。读入的影像通常是大的TIFF文件,需要注意像素值的数据类型和投影坐标系。 2. 图像预处理。图像预处理是保证多尺度分割算法准确性的基础,常见的预处理方法包括灰度变换、直方图均衡、尺度变换等。这一步可以使用NumPy和Pillow库来实现。 3. 多尺度分割算法。多尺度分割算法有很多种,比如分水岭算法、区域生长算法、基于聚类的算法等。其中,分水岭算法是最常用的方法之一,可以使用Scikit-image库来进行实现。 4. 分割结果处理和后续分析。分割完成后,需要对分割结果进行后处理,这包括去除假阳性区域、合并通路等。此外,还需要对分割结果进行可视化、分类和存储等处理,这可以借助Pillow和NumPy库完成。 总的来说,Python遥感影像多尺度分割中起到了非常重要的作用。Python提供了丰富的图像处理库和数据处理工具,可以帮助分析师更加高效地完成遥感影像多尺度分割任务。同时,Python还具有丰富的社区和文档资源,可以帮助用户充分掌握Python语言在遥感影像处理领域的应用
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值