面向高分遥感影像的快速解译系统设计与实现
2023-04-07胡子涵蒿兴华
段 贺 胡子涵 蒿兴华 沈 红
1(中国科学院电子学研究所苏州研究院 江苏 苏州 215123) 2(苏州市空天大数据智能应用技术重点实验室 江苏 苏州 215123) 3(合肥工业大学软件学院 安徽 合肥 230601) 4(中国人民解放军31108部队 江苏 南京 210016)
0 引 言
随着我国遥感系列卫星的持续发射运行,遥感技术不断发展,产生的遥感影像分辨率不断提高。高分遥感影像中的地物信息比低分辨率影像更加丰富,单幅影像的大小可达几百MB甚至几GB,大量影像数据的存储以TB为单位计算。高分遥感影像数据的爆炸性增长给影像的处理和解译带来巨大挑战[1]。传统遥感影像解译算法以人工筛选重点影像并调用相应算法进行解译为主,效率低,难以适用于海量数据。在应对一些突发事件时(如重大灾情、安全防御等),针对目标区域开展高分影像的解译和跟踪,对解译结果的时效性及质量要求极高。因此,需要设计一种适用于海量高分遥感影像快速处理与解译的方法,使高分数据在侦察监控突发事件过程中发挥其自身的最大优势和价值。
针对海量影像的高效存储和处理,不少学者从优化计算性能的角度开展了相关研究。例如,张涵斐等[2]提出了针对海量遥感影像的存储与快速调度显示方法,依托高性能计算机的强大处理能力来提高影像的基础预处理能力。王俊等[3]将计算机集群处理技术应用到遥感影像的处理上,通过Hadoop分布式文件系统(HDFS)的云存储。Lin等[4]实现了大型影像文件的多并发同步快速读写测试。深度学习技术的不断开拓和应用,为海量高分遥感影像数据的处理和解译提供了新途径。Maggiori等[5-8]的实验表明,基于卷积神经网络(Convolutional Neural Network, CNN)提取的高分影像特征在区域分类、场景理解、地物识别等方面具有很好的效果。高常鑫等[9]利用高分遥感影像对典型目标开展检测和识别研究中,提出了一种分层深度学习模型以实现高精度目标检测。张鑫龙等[10]针对高分遥感影像的配准误差和特征提取问题,采用深度学习方法提升高分遥感影像变化检测能力。
为加快高分影像的处理和解译效率,本研究开发了一种基于B/S架构的遥感影像快速解译系统,以多并发、多节点、多线程、多用户、多任务为计算模式,快速实现大幅影像的入库、影像信息的录入及处理;以深度学习算法为核心解译技术,设计并实现了一套以自动识别为主、人工校验判读为辅的影像解译流程;以模块化的方式构建部署深度学习模型训练平台,提供可视交互的模型构建和训练服务;结合影像金字塔、分块瓦片技术以及改进的Nginx服务器,实现高分影像的快速加载和可视。
1 系统设计
1.1 架构设计
整个快速解译系统基于B/S架构,整体分为四层,即前端交互层、Web服务层、业务逻辑层和计算服务层,如图1所示。
图1 系统架构设计
(1) 前端交互层。前端交互层为用户提供可交互式的影像数据入库、影像判读、可视化地搭建深度学习模型以及专题产品输出四大功能模块。
(2) Web服务层。Web服务层连通了用户界面交互和系统的业务功能。由改进的Nginx服务器提供稳定高并发的网页、数据、文本等资源的访问和大影像的快速加载等服务。
(3) 业务逻辑层。业务逻辑层实现了影像数据调度、影像解译调度、算法模型构建等业务逻辑。系统通过业务逻辑层统一调度数据资源与作业处理,优化资源分配与计算效率。主要包括影像入库、智能初级解译、人工校验、推送解译结果、模型快速构建与更新等模块。
(4) 计算服务层。计算服务层为系统提供数据存储、数据计算等功能。主要包括影像的入库服务、数据库服务、算法运行服务、深度学习模型训练服务四个服务模块。
1.2 高分影像快速解译流程设计
用户通过前端交互层,将高分遥感影像数据导入系统。系统生成影像金字塔并进行影像数据分块,随后影像数据被保存到分布式文件系统,同时将影像相关信息记录存入数据库表。
遥感影像数据入库后,业务逻辑层自动调用相应的解译算法,并调度系统的计算节点,分配计算资源,执行影像数据解译任务。解译任务完成后,得到初步解译结果,业务逻辑层将结果反馈到前端层。
用户在前端的影像判读模块查看解译结果,进行人工校验,校验完成后,业务逻辑层保存解译结果,生成相应的专题产品,并推送解译结果至前端交互层。交互逻辑如图2所示。
系统中的影像解译算法由算法模型快速构建模块产出。用户在前端层的算法可视化搭建界面中,通过拖拽算法组件的形式,可以快速搭建出算法模型。算法模型信息被推送到业务逻辑层。业务逻辑层根据模型结构调度相应的算法组件,构建对应的算法运行流程。
业务逻辑层将搭建的算法运行流程推送到计算服务层模型训练模块,进行模型训练。训练完成后,业务逻辑层将成熟模型算法调度至算法运行模块,供后续影像解译过程使用。
1.3 功能设计
本节侧重描述该影像解译系统的主要功能模块的详细设计情况。
1) 影像数据存储。海量高分遥感影像数据量巨大,影像数据的存储需要考虑运行成本、访问效率以及容错能力等问题。本系统的影像数据存储可分为遥感影像金字塔分块、分布式文件系统存储和影像信息入库三个部分。
录入系统的高分遥感影像生成影像金字塔和数据分块瓦片。影像金字塔是以原始影像作为底层,按一定重采样方法建立的分辨率由细到粗的层次结构。同时,遥感影像被分割成许多分块瓦片存储。在前端显示影像时,系统会根据显示区范围和分辨率等信息计算加载相应的块数据,以便于遥感影像数据的存储管理和减少数据读盘时间。
高分遥感影像建立影像金字塔和分块瓦片后,其数据被存储在HDFS分布式文件系统。HDFS具有高度的容错性,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
遥感影像入库的同时会建立记录影像信息的Oracle数据库表,其目的是:① 通过建立影像唯一产品标识,便于影像相关信息进行管理与搜索;② 便于通过影像标志查询相关处理信息;③ 建议相应的产品输出的数据库表,便于专题产品的管理。影像快速解译过程是以Oracle数据库进行管理与调度的。
2) 影像快速加载与显示。遥感影像被划分成若干较小的分块瓦片,影像显示时会根据显示区范围和分辨率等信息计算加载相应的遥感影像块数据,实现遥感影像的快速无延迟缩放加载。通过对Nginx服务器进行改进,开发定制功能模块来支持金字塔数据加载。主要扩展模块包括:基于GDAL开发的窗口自动加载影像金字塔层级数据及瓦片数据模块,实现了快速无延迟加载影像;遥感影像色调处理和存储模块。通过以上拓展模块,支持窗口影像的金字塔层级瓦片数据的加载与显示,极大地提高了影像数据加载的速度,使数据加载延迟可以忽略不计。
3) 影像预处理与算法解译。高分遥感影像的处理工作量庞大,人工方式调度影像解译过程较为缓慢,成本巨大,且影像解译速度较慢,等待过程漫长。若影像入库时就直接预处理并调度相应算法解译,通过服务器多节点强大的计算能力,实现24小时不间断自动处理,将避免用户的持续等待。
基于以上构想,实现影像入库时,系统自动根据影像类别,同步调用相应算法对影像的相关信息进行标注,如机场、港口等。
同时,为加快解译速度,采用单幅存储大影像分块多节点算法处理,并且算法设计中对影像进一步分块,以多线程多核处理,充分利用计算机配置资源,尽可能减少影像的算法处理时间。通常多线程资源处理的均分原则是:假设计算机硬件最多可支持创建N个线程,需要处理M个的影像资源块,在影像分块结束后,即一次性分配处理资源块,则第i个线程分配的资源块数量是:
(1)
式中:floor是向下取整,则分配剩余的资源块会分配给最后一个线程,那么最后一个线程需要处理的资源快数量为:
nN=M-(N-1)×ni
(2)
由于影像处理的总时间由运算最后结束的线程决定,故影像处理的时间由最后一个线程处理nN决定,其他线程处理完成后必须等待最后一个线程,浪费了线程资源时间。本文对线程资源分配进行了优化,使得不同线程处理影像的资源块数量差异不超过1个。本文采用的策略是依次分配给每个线程一个资源块,然后循环分配,避免出现某个线程处理可图像块数量太多而造成的整体的时间太长,则每个线程处理的时间是:
(3)
式中:%是求余数运算。这样前M%N个线程处理的资源块数量比后面的线程多处理一个资源块,加快了总体的线程处理影像的时间。
4) 解译影像人工校验。入库影像经过识别信息后将进行自动解译,解译结果时存在两种情况:① 在存在相应解译算法的情况下,影像解译的结果并不能保证100%的准确,解译算法都有一定的适应条件,因此存在一定的解译错误率,直接进行产品输出是不可靠的。通过交互界面,加载遥感影像以及相应的解译结果,通过人工校验的方式,将准确的结果保存至服务后台。② 影像解译并不完全,如一幅标记为机场的影像,既包含机场又包含车辆,此时需人工调用算法进行车辆检测。由于这种漏检的情况出现概率较低,因此对整体影响解译的速度影响甚微。基于上述两种情况,均需要人工校验,因此通过B/S架构就可以实现多人同时对不同的影像进行校验判读,提高高分影像的解译速度。在这样逻辑架构下,实现以自动解译为主,人工解译为辅的解译模式,可极大提高影像的解译速度。
5) 可视交互的组件化深度学习模型构建与训练。高分遥感影像的快速自动解译是以强大且种类齐全的算法为基础的。以人工编写的方式产出解译算法,成本巨大,且可扩展性差。本文以深度学习为算法产生的基本形式,将深度学习的模型构建可视化,将样本选取、模型组建、参数设置、运行查看等过程模块化,构建了一套基于B/S架构的深度学习模型快速构建可视化平台。该平台可以适应于多种算法的产生,降低了构建深度学习模型算法的门槛,方便不同智能基础的用户构建深度学习模型。
深度学习模可视化构建平台在前端交互层构建了组件拖拽式算法流程搭建、算法效果评估和可视化展示等功能。前端提供了模型构建的组件模块,用户拖拽算法组件到页面中的模型构建区域,各组件通过连接点进行链接,并设置组件的参数,即可构建一个深度学习模型。通过前端提交,将当前模型的模块组成、模块逻辑关系以及模型参数输入到计算服务层,由后台自动生成算法处理流程。
计算服务层将常用算法封装为组件并制定规范化的组件接口,目前平台已经集成了数据预处理、分类回归、目标检测等40余个模型组件,以及解决典型场景应用独特性问题的10余种智能算法组件,例如CNN、GoogleNet和ResNet等。
计算服务层根据传入的模型信息自动构建对应的模型运行流程并开始模型训练。模型训练的实时数据会推送至前端,便于使用者监控模型训练的过程状态。模型训练结束,推送训练结果信息至前端。
训练完的模型进行应用部署测试,并进行算法应用效果评价。对于评价较高的算法直接推送至遥感影像解译后台应用,对于评价不理想的模型算法进行模型数据的修改再次进行训练,直至模型算法达到要求。深度学习平台的构建逻辑如图3所示。
图3 深度学习平台的逻辑设计
深度学习平台可视化构建的效果图如图4所示。左侧为模型构建实验目录;中间为模型构建区域与训练过程中的实时曲线区域;右侧为模型组件参数面板与实验属性。通过简单拖拽组件的形式,即可完成深度学习模型的构建与训练,操作简单便捷。
图4 深度学习模型构建效果图
2 系统实现
2.1 关键技术
(1) 基于HDFS系统与数据节点存储优化技术。海量遥感影像的存储需要充分考虑分布式文件存储系统的运行成本、访问效率以及容错能力等问题。本文采用Hadoop分布式文件系统(HDFS),该系统具有高度的容错性,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
本文在使用HDFS时,对管理数据节点(dataNode)的NameNode采用了优化策略,即NameNode节点采用基于共享存储(磁盘阵列)方式的双机热备方案。双机热备是基于高可用系统中的两台服务器的热备,共享存储(磁盘阵列)方式主要通过磁盘阵列提供切换,对数据完整性和连续性的提供保障。用户数据一般会放在磁盘阵列上,当主机宕机后,备机继续从磁盘阵列上取得原有数据。采用该方案,使得数据存储的安全性得到保障。
(2) 基于影像金字塔与分块瓦片的存储技术。影像金字塔是以原始影像作为底层,采用一定的重采样方法,自底向上建立分辨率由细到粗的影像数据分层组织结构。具体来说,即在同一空间参照下,根据用户需求将原始影像以不同分辨率进行存储与显示。金字塔的底层影像分辨率最高,数据量最大,随着层数的递增,影像的分辨率逐层增加,数据量则逐层降低,最终形成多分辨率的金字塔结构。影像金字塔结构主要用于图像的编码和传输。
遥感影像数据分块本质上就是将一幅大的遥感图像分割成许多小块存放,在影像显示时根据显示区范围和分辨率等信息计算加载相应的块数据,遥感影像分块的目的在于把遥感影像划分成若干较小的物理数据块,以便于存储管理和减少数据读盘时间。本文采用的Google 瓦片数据结构进行存储。由于Google瓦片数据格式要求瓦片必须是正方形,且大小必须是256×256、512×512、1 024×1 024、2 048×2 048四种大小中的一种。考虑影像加载的时间与便捷性,本文采用的512×512的瓦片数据格式进行存储,并对Nginx服务器进行改进,以支持加载显示当前视图的金字塔相应层级的瓦片数据,进而极大提高了影像数据加载的速度,数据加载延迟可以忽略不计。
2.2 系统测试
如图5所示,系统测试过程中加载了一幅大小为12 GB的高分卫星影像,从入库-信息录入-目标解译识别-解译结果加载校正,整个过程耗时约2分钟:其中建立金字塔数据耗时15秒,基于深度学习的影像解译耗时38秒,该过程调用3个节点运算,每个节点32个线程同步进行处理运算;人工对影像结果进行校验耗时1分钟,校验结果的存储与加载需5秒。与人工判读所需时长(半小时或更长)相比,影像解译时间得到显著缩短,且检测正确率达95%,加之人工校验的辅助,准确率可达100%。
图5 影像的加载和目标的自动识别
3 结 语
为了解决高分遥感影像解译时效性的问题,本文构建了一个基于B/S架构的高分遥感影像快速解译系统。系统以深度学习解译算法为核心技术,以多并发、多节点、多线程、多用户、多任务为计算模式,以自动运算为主,人工校验为辅的影像解译模式,实现高分遥感影像的快速解译。同时,以模块化的方式构建部署深度学习模型训练平台,提供可视交互的模型构建和训练服务。实验证明,利用本系统开展高分影像的快速解译具有较好的时效性与可靠性。