赞
踩
本文总结了基于遥感影像的信息采集工作中“自上而下、一步到位”工作模式下应用深度学习最新智能解译技术方面面临的问题与困境,期望通过“自下而上、分步到位”的途径进行突破,回顾了在这方面的摸索、试验过程,对初步成果——一个交互式自动识别地物边线的QGIS插件Monitask——进行了介绍,并与同类工作进行了比较,可供从事遥感影像分析、地理信息采集工作和研究的同行们参考借鉴。如果对过程不感兴趣,可以直接跳到第三部分的第4节。
目前,遥感影像是地理信息采集的主要数据源,特别是对于大范围地理信息采集,具备合适的遥感影像基本上是必不可少的前提条件。经过多年的技术发展,数据源越来越丰富,影像数据的预处理效率也大幅提升,信息采集的软件工具也越来越丰富,但信息采集的效率却没有发生类似的革命性变化。尽管近几年来人工智能领域深度学习的发展对遥感影像信息提取起到了很大的推动作用,在一些特定应用方面,例如目标识别、典型地物类型识别、场景分类等方面具有显著的应用效果,一定程度上解决了“大海捞针”的痛点。但对于全要素或全覆盖的地物类型识别,包括地表覆盖分类、土地利用分类以及在此基础上或与之相关的地表变化监测,由于涉及面广、影响因素多、应用需求精准度要求高等特点,始终离不开人工为主的采集模式,效率提升远达不到应用需求的期许。
在这方面,就笔者的理解,主要面临以下两个个方面的挑战:
1)横向空间分异。水热和地质条件不同,演化出千差万别的地理环境,催生出形形色色的地表万象。所谓“一山有四季,十里不同天”,这种分异导致的不同,有时候是 突变,有时候是渐变。技术方法要灵活适应这种差别,需要付出极大的努力。
2)纵向时相变换。各种地理现象除开表现为各类地物在空间上的组合模式,也表现为在时间上的组合模式。例如落叶阔叶林,是阔叶树在空间上的达到一定密度的聚合,也表现为四季荣枯轮回变化的时间模式。信息采集中要获取这样的信息,就必须有足够的数据源和强大的技术手段支持。
3)地物的时空渗透。绝大部分地物或地理现象互相渗透,在空间和时间维度上相互交叠,形成复杂的时空组合。如果用静态的眼光对待,往往导致似是而非的结果。例如乔木林-乔灌混合林-灌木林形成的过渡地带,草原-稀树草原-森林形成的过渡带,城市-城乡结合部-乡村形成的过渡地带等。又如水田-旱地的季节交替组合,粮食-疏菜-水果等农作物的轮作变化等。
4)随机因素的扰动。作为复杂现实世界映像的遥感影像,还会受成像条件和其他技术条件随机变化的影响,进一步加剧复杂性,如成像光照条件、成像角度、云雾雨雪、几何畸变等。
1)多视角。不同应用关注地物的不同属性。例如,生态保护更关注地物的物理属性,如土地上的覆盖物的具体类型和表征其结构、质量的物理参数;规划监督实施更关注土地的社会属性,包括用途、权属、效益以及利用方式的合规性等。当然,有时候社会属性需要结合物理属性进行推定,反过来社会属性会驱动物理属性的变化。但就遥感监测手段的局限来说,遥感影像反映的是某个瞬间的表象,对于这一表象下蕴含的其他信息,需要结合时序变化以及现场调查等多方面的信息才能准确获取。不同的视角,在信息采集中,集中反映在分类体系中,不同的视角会对应不同的分类体系。
2) 多尺度。不同应用立足不同的空间尺度。例如,耕地保护中对于占用耕地新建的居民小区,只需要采集小区的用地范围;而城市违规建筑治理中则需要采集每一栋房屋的范围。在信息采集中,一方面反映到最小图斑面积指标上,另一方面也反映在分类体系的详细程度上。
上述两种情形叠加,形成千变万化的工作目标。目前的技术途径,难以以一当百,形成应对各种需求的通用解决方案。如果要想针对特定的区域或特定的应用需求,精耕细作,各个击破,又面临天量的工作量,难以企及;另一方面,即使想各个击破,也限于技术天花板,自动识别结果的精度和准度总难两全,要想达到应用目标需求,都需要人工对结果进行核查和补充,才能提高到应用容许的指标。而提高的这一部分工作需要的投入,和全部靠人工的投入相比,往往相差不多,加上需要克服已有作业模式和管理机制惯性所需成本,可能和传统人工作业模式差不多甚至还不如。
目前,我们一般是按照应用目标,建立直接满足应用需求的分类体系,分类体系往往面向人类可理解的目标建立,较少考虑遥感影像的特征和计算机可识别能力,通过努力建立解译标志实现遥感影像和分类类别的对应,并在此基础上开展信息采集。由于解译标志难以准确表征对应的类型,还需要辅助大量人类隐式知识才能发挥作用。因此,这种分类体系本质上是针对人类的知识体系建立的分类体系,作业中也自然离不开人的参与。
虽然分类体系是面向人建立的,由于应用基于此,因此我们在尝试新技术手段时,也自然而然还是采用这套分类体系去要求计算机。实践表明,这种错配逐渐让我们已经似乎看到技术手段的天花板,走入了一个困境。
此外,由于分类体系实际上是某一类特定应用对信息需求的形式化表现,同时建立分类体系是一项需要共识和高成本的工作。因此,有些应用,其目标即使与某一已有分类体系不适合,但为了避免成本,往往会受限只能采用已有的分类体系,或在其之上进行修正或再解释,来满足自己的需要。这进一步加剧了前述困境。
把按照一定需求目标和逻辑规则,从一个起点出发,通过不断对概念进行拆分细化建立分类体系和相关技术体系的方法称为“自上而下、一步到位”的方法。从方法学上讲,是基于分析的方法,具体以线分类法为主,有时结合面分类法,形成的分类体系具有一定的层级关系。从认识过程来讲,属于基于先验知识的分类,每个类型和拆分类型的过程结合了大量已有显式或隐式知识。这些知识,有的可以规则化,有的无法规则化,需要作业人员在掌握相关显式知识的基础上通过大量实践进行意会。
具体到遥感影像分类,“自上而下、一步到位”的方法典型例子就是基于地理国情监测地表覆盖分类体系的信息采集。地理国情监测地表覆盖分类体系的建立,就是以地表植被覆盖的情况作为条件划分为有植被和无植被两大类,再分别从自然和人为因素的角度对其进行细分。比如,有植被覆盖的地物中一类主要是在自然状态下生长,受自然力控制较多,人为干扰小或者很少,按类型可分为林地和草地;而另一类主要是人类为了满足自身生存、生活、休闲、娱乐等活动而营造或管理的植被,结合主要植被形态和用途可分为耕地和园地。同样,按照这个分类方法,没有植被覆盖的地物中也可分为两类,一类是自然状态下形成的荒漠与裸露地表、水域,另一类按照由高到低的形态特征则可分为房屋建筑(区)、构筑物、道路和人工堆掘地。
这种方法的最大问题是包含了较多的隐式知识,例如“耕地”,在影像上可以体现为生长农作物、翻耕等明显的耕作特征,同时也可能是其他非耕作状态,而非耕作状态的情况就需要引入隐式知识才能判定。而隐式知识的主观性和不确定性较大,对一线普通作业人员的要求较高,不利于数据质量的控制。
另外一种方法,是基于归纳的方法,就是以大量事实为基础,对其进行归纳,按照相似的程度由近及远进行归类并建立层级关系,在此基础上,根据各个类的共同特征,再赋予其特定的语义,由此建立一个基于事实的分类体系。但基于事实的分类体系并不直接面向应用,需要进一步与特定应用通过类型映射或组合进行对接,最终满足应用需求。这种方法称之为“自下而上、分步到位”的方法。
具体到遥感影像分类,该方法就是基于遥感影像上的各类地物表现出来的可识别的、特别是计算机可识别的各类影像特征,确定可以分辨出来的最底层的地物类别,如厂房、平房、农村瓦房、独栋别墅、单元居民楼、办公楼、机场候机楼、火车站站房等等。如果影像分辨率足够高,甚至可以按照房屋的高度、结构、主要建筑材料以及建筑风格等分为更加具体的底层类,这些类根据影像特征即可准确归类,同时也无法再进行细分,是特定分辨率下影像数据源可支持的原子类。为了对接应用需求,需要在这些底层的原子类的基础上,针对应用领域的业务逻辑,按照一定规则逐级进行归纳,向上形成层级化的用户分类体系,如上述房屋可以归并为生产建筑设施、居民建筑和公共建筑等,也可以归并为农村房屋、城市建筑等。
信息采集的过程,是首先获取对应底层原子类的数据,再按照归并规则合成符合用户分类体系的数据。因此,是通过两步达到用户需求的。但自底向上归纳时,底层原子类是出发点,可以面向不同的应用需求建立出不同的用户分类体系。也就是说,这种方式只需充分发挥数据源的利用极限,采集一套数据,通过不同的转换映射规则,可以分别响应多种应用需求,达到以不变应万变的效果。而且在确立转换映射规则时,可以充分利用其他资料条件,统一规范化引入隐式知识,在灵活响应需求的同时,保持口径一致。同时,由于底层原子类采集时主要依据影像特征体现的显式信息,这有利于发挥智能解译技术的长处,避开需要隐式知识参与带来的主观性和不确定性问题。但最大的问题是,底层原子类极其丰富,难以穷尽,且与空间和时间尺度紧密相关。不过,对于有限的时间空间范围内,底层原子类的数量总是有限的,因此采用分而治之的策略,理论上也具有一定的可操作性。
笔者对“自下而上、分步到位”的路径进行了摸索,由于知识有限,只堪“瞎子摸象”。现将过程与初步结果记录如下,以作备忘。
几年前,深度学习给遥感影像分类带来了无限想象力,我们也开始在这方面利用一些有利条件进行探索,同时与领域内的一些机构开展合作,力图在遥感影像自动分类方面有所收获。经过较长时间的试验,针对前面提到的自上而下建立的地表覆盖分类体系,采集了大量训练样本,结合当时一些热门模型开展了长时间反复训练。结果表明,对于一些比较纯的覆盖类型,例如水面、连片的森林草原等,可以得到比较理想的结果;对于一些包含隐式知识较多的类型,准确率达不到可用的程度。另外,很难做到全部分类体系的全覆盖,哪怕是对一级类或二级类的覆盖。这样,对于工程化应用基本上没有希望。之后,试图将模型训练融入到人工作业流程之中,通过嵌入到业务流中进行无感迭代,但受限于模型架构,也缺乏相应的实现能力,只能作罢。
后来发现,虽然语义分类不能完全达到期望,但是单从边缘分割的角度来看,很多模型都具有较好的表现。因此,将重心转向了图像分割,希望通过分割-分类两步来实现语义分割,也就是影像分类。
直接进行图像语义分割碰到绕不过去的困难,加上模型在边缘检测上的效果超出预期,因此自然而然想发挥其优势。仔细分析语义分割的困难,感觉主要是因为有些类型包含的隐式语义信息太多,难以反映在影像特征上,模型也就很难学习到。如果影像中包含的各类边界信息能够较好的学习到,那就可以在此基础上实现影像的简单分割,而且分割出的影像块内部的特征一般应具有较强的一致性。然后采用聚类方法对这些影像块进行归并,从而可以形成一个基于影像块特征的类型体系,对于每一类影像块特征具体的语义类别,可以通过人机交互加必要的外业调查即可确定。这实际上也是传统的面向对象分类的方法。只是图像分割这一步借助最新的深度学习方法。
这一路线实际上依赖于两个关键:一是分割更准确,二是聚类要有效。期望通过在分割和聚类两个环节都分别引入深度学习的方法,检验是否能够比传统的面向对象分类更可用。
为此,针对地理空间信息的特点和丰富的网络数据资源,为了便于模型训练过程中影像和Label样本数据的获取与管理,编写了专门的python包,结合缓存机制,将WMTS或WMS在线服务包装为paddlepaddle或Pytorch的Dataset,简化了训练数据准备流程,为按需在线获取样本数据进行训练提供了便利。在这种机制下,需要的label数据也可以发布为WMS或WMTS服务,也可以利用网络上已有的地图资源,经过适当的在线后处理,直接作为Label使用。因此,可以组合利用一些优质的网络地理信息资源,拓宽了信息来源,可一定程度上缓解标注资源匮乏的问题。
在准备进一步开展训练以提升模型边缘检测能力的过程中,对已有的一些相关边缘检测模型进行了调研和试验,发现一些在地面照片数据集基础上训练的预训练模型直接用于遥感影像,检测出的边界粗略看也有不错的效果,如:
HED:https://arxiv.org/abs/1504.06375, GitHub - moabitcoin/holy-edge: Holistically-Nested Edge Detection
pidinet:https://github.com/zhuoinoulu/pidinet
由于训练过程涉及大量工作量,加上预训练模型不错的效果,因此,直接基于可用的预训练模型开展“先分割、再分类”思路的摸索。
为了验证这一路线的可行性,基于边缘检测结果封闭生成初步的图斑,然后基于这些图斑切割图像形成图像块,在此基础上进行了初步聚类分析试验。主要步骤如下:
如果边缘检测结果比较理想,就可以沿着这条路走下去,进一步优化提升聚类分析的方法即可。但仔细查看分割线的时候,会发现存在两个主要的问题:一是有的地方分割过细,二是有的地方边界线不连续,另外也存在边界漏检的情况,特别是地物间界线不太清晰、存在过渡带的情况下。过细的问题,部分可以通过设定阈值去除空洞的方式处理,但部分较多相邻细碎分割的情况需要合并,如何正确合并较难处理。边界线不连续,可以通过延伸等做一定程度的后处理,但无法完全避免。
边缘检测的速度很快,可以自动成批处理,但如果要利用检测的边界结果,必须对其进行人工编辑。由于需要在大量数据中查找错误、修改节点、处理相互拓扑关系等,人工编辑工作量较大,用户体验很不友好。
因此,这条路线即使能走通,如果为了达到质量要求,必须在中间插入大量人工核查修改的环节,要用于实际工程中也存在很大的障碍。看来必须寻找其他突破口。
上述过程都是计算机自动批量化处理为主,过程中人工难以参与,只能对批量处理结果进行人工检查修改。面对大量需要检查处理的数据时,看上去密密麻麻,无所适从,要定位错误和修改错误都比较复杂,很容易让人产生厌烦和气馁的情绪。如果分割过程中能够引入人机交互,一方面计算机辅助提升边界提取效率,一方面人工及时判断对错,并针对性进行修改,从而做一个准一个,可能更符合工程化应用的要求。
因此,调整工作思路,不求全部自动化,着眼提升现有人工作业的效率,用人机交互的模式,加快图斑提取速度,做一个准一个,润物无声,便于实施。那既要保证质量,又要提高效率,如何借力AI,并且在实际作业中能够用起来呢?这既要解决方法的问题,也要解决AI模型到实际应用最后一公里实现路径的问题。这个时候,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,体现“先分割、再分类”的思路,实现交互式的遥感影像分类,并尽可能将分割和分类结合,且更易于操作,以更符合实际工程化应用场景的需求。
于是,花了差不多半年时间,一步一步往前摸索。学习QGIS plugin的开发方法,摸索QT界面设计和事件机制,跟着例子研究pyqgis接口,跌跌撞撞走通了AI模型的接入,解决一个问题又冒出另一个问题,走过一关又有一关,其实都是别人摸过的石头,真真切切体会了一轮“知道的越多,发现自己越无知”。尽管如此,第一次走这条路,经过通往各处的大大小小路口,总是有“柳暗花明又一村”的感觉。回顾一下,罗列一些遇到的主要问题:
基本完成上述摸索后,终于形成了一个可以用来干活的工具,命名为Monitask,意为Monitoring Task。以前想做一个监测项目资源调度管理和作业方面的综合工具,当时就起了这个名字,没做完,这次接着在原来基础上加了采集的功能,犯懒,没有改名字,就这个了。
质本洁来还洁去,所有的工作取材于开源社区,因此也还回开源社区,全部代码已经发到gitee(https://gitee.com/grainseed/monitask)和github(https://github.com/grainseed/monitask)上,也已提交到了QGIS插件库(QGIS Python Plugins Repository),希望与感兴趣的同道们切磋,共同致力于技术发展推动美好生活。
Monitask是一个基于遥感影像交互高效提取和编辑地理信息的QGIS插件。该插件利用当前较为成熟的深度学习AI模型,通过交互的方式,依据用户点击的提示信息,实时对影像按用户意图进行分割形成图斑,并提供了相应的灵活标注功能,方便用户对图斑进行类型标注和属性填充。还可利用QGIS内置的图形编辑功能,对生成的结果进行进一步的精细编辑以符合数据规范要求。
利用该插件,可以进行地理信息数据采集生产,特别对采集图斑类数据,可以大幅度提高工作效率。也可以利用该插件,开展遥感影像分类标注工作,可以大大提升AI模型训练样本数据采集的工作效率和样本质量。
此外,该插件对分割形成的图斑可以自动进行邻接图斑公共边协调,同类图斑合并,边线简化、平直化、光滑等后处理,大图斑自动扩展等特色功能,分割功能可以自动适应影像显示比例尺的变化,以便于降比例尺采集大面积图斑,也可升比例尺精细采集实地面积小的图斑。利用该插件,可以自定义适应自身需求的标注系统或分类系统,可自动辅助判断分割结果的类型,还支持对标注系统或分类系统根据标注结果进行优化调整。
由于该插件需要依赖较多的python包,通常的QGIS plugin安装方法可能比较费劲,因此基于移动版QGIS(https://github.com/pigreco/QGIS_portable_3x)制作了完整的绿色QGIS包,感兴趣的可以直接下载解压运行即可。下载链接如下:
Baidu Drive: https://pan.baidu.com/s/177Y0KY0rqxATunR1CcFRmw?pwd=yiqc
运行效果先睹为快:
详细使用方法,请参见https://gitee.com/grainseed/monitask/wikis
后续将在此基础上优化完善已有功能,消除bug,同时在以下方面进一步摸索:
完成上述工作后,自觉动作太慢,估计已有较大发展,感觉开源社区应该也有别人在做同样的工作,找了一下,还真有,相关的有以下三家,也都是QGIS插件:
1、Geo-SAM:https://github.com/coolzhao/Geo-SAM
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的操作体验应该还是相对较好,除开功能上更加贴近实用,对初次接触的用户来说,还体现在以下几个方面:
经过大半年的跋涉,终于可以坐下来,抹抹汗,回望一下来时的路,回想一下出发时的心情,默念一下支持我的人们,整整行装,向着红日升起的方向,再出发!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。