周 兵, 刘晓楠,, 臧文乾, 陈 恒,(河南大学 计算机与信息工程学院, 开封 47500)(中国科学院遥感与数字地球研究所, 北京 000)
数据密集型计算的遥感图像预处理方法①
周 兵1, 刘晓楠1,2, 臧文乾2, 陈 恒1,21(河南大学 计算机与信息工程学院, 开封 475001)2(中国科学院遥感与数字地球研究所, 北京 100101)
针对大数据时代, 数据密集型计算已经成为国内外的一个研究热点. 遥感数据具有多源化、海量化特点,是名副其实的大数据. 研究适用于遥感影像自动化、业务化处理的数据密集型计算方法, 是目前遥感应用技术面临的挑战所面临的挑战, 本文提出了一种基于数据密集型计算的遥感图像处理方法. 在文中, 首先围绕遥感数据自动化、业务化预处理等问题, 深入调查和分析了国内外研究现状, 进而介绍了系统体系结构, 通过工作流灵活组织多种算法模型协同工作, 设计以“5并行1加速”的计算体系解决数据密集型的遥感图像预处理, 并通过产品生产实例对其性能进行测试. 结果表明, 该系统在保证处理精度的前提下, 大大提高了遥感大数据预处理的效率.
遥感数据; 遥感预处理; 数据密集型计算; 并行计算; 5并行1加速; 工作流
随着航空与遥感技术的不断发展, 遥感数据正在以太比特级(TB)速度增长, 数据的处理环节速度却普遍缓慢, 现有的人工作业方式的时效性已经不能满足日常科研和生产活动的要求[1]. 由于遥感卫星上的传感器种类众多, 各类型数据处理的算法不同, 进行大尺度范围、长时间序列的数据密集型计算[2]特性日渐凸显, 因此通过独立于数据处理的流程来组合算法减少系统复杂度成为了当下研究的热点问题.
商用软件存在操作方法各异、参数设置复杂等问题,而且涉及几何处理上欠缺自动化批量处理的模式[3]. 针对这些问题遥感数据处理需要设计出一个可靠的半自动生产模型并在保证精确度的同时提高处理的效率.国内外一些学者对于这些问题也做了一定研究, 如文献[4]提出一种带几何约束的大幅面自动快速配准方法来提升影像处理速度. 针对海量数据的遥感图像处理,除了提高处理效率还需要可靠、鲁棒的自动化生产.文献[5]和文献[6]运用主副版本机制有效的提高了调度算法的可靠性. 文献[7]通过工作流实现遥感数据和处理算法的统一控制和管理, 以达到简化系统复杂度的目的. 通过工作流和有效的调度算法可以极大的提高构件的可复用性, 更好的实现数据流的自动控制.文献[8]和文献[9]通过GPU-CPU协同模式为算法的性能提高和遥感影像处理系统构建提供了高效的解决方案, 充分发挥单机环境下不同硬件资源的计算优势.文献[10]通过最大值似然分类算法验证基于云计算可以实现遥感图像的快速处理. 文献[11]将数据、功能、任务并行融合到遥感生产中, 形成三级并行的设计方案有效的提高业务化处理的效率.
结合目前的研究现状, 本文设计的遥感预处理系统根据定量化应用需求, 利用0-2级产品进行几何和光谱精化校正获得基础标准信息产品. 针对遥感影像数据量大、涵盖信息多、处理模型复杂、处理时间长等问题, 采用灵活的工作流模式组织几何纠正、云检测、大气纠正、融合、数据标准化等多种算法模型形成全链路处理系统, 并实现结构简单具备通用性、可扩展性的处理架构, 结合多种并行方式来缩短遥感影像处理的生产时间, 实现遥感数据的业务化生产.
本系统针对遥感产品的生产需求和遥感数据量大、数据类型复杂的特点, 结合多种并行方式缩短遥感数据的生产时间, 利用生产节点、分布式数据库构成高速计算环境, 通过资源的合理配置有效的组织多种模型协同工作, 系统体系结构如图1所示.
(1) 人机交互层的主要作用是由任务订单推送得到要处理的原始数据; 然后针对不同类型的数据调用不同的算法进行处理, 按照订单需求定制合理的工作流进行数据生产; 最后将结果和分析以可视化的方式呈现并提供质量检测查看数据精度.
(2) 通讯层主要包括各生产节点之间的数据和消息传输, 服务于自动配准的瓦片获取和将处理好的产品数据入库.
(3) 基础算法层集成了大量的算法模型, 解决不同遥感数据在具体问题上的分析计算, 通过工作流实现算法模型的统一管理和调用触发.
图1 系统总体框图
系统的工作核心是生产多源定量遥感产品, 通过任务推送和本地文件获得要处理的数据集, 以工作流形式组织管理多种算法模型, 支持协同处理过程中的顺序、异步和并行等多种业务流程与批处理等工作模式, 通过XML记录算法模型、业务流程和数据等信息并对生产过程进行监控.
2.1 算法模型的组织管理
遥感观测数据通过遥感算法模型与地表目标参数联系起来, 遥感数据的生产过程是一系列包含大量计算的复杂过程, 将这个复杂过程分解为多个环节处理, 每个处理环节对应于具体的遥感算法模型, 将这些算法模型集成起来协同完成整个处理来解决定量遥感生产问题.
由于模块众多、参数复杂等问题, 为了处理不同的任务往往需要对算法进行灵活组合, 进而形成自适应的工作流程. 将业务过程按照预先设定的规则借助应用程序和操作人员对相关数据的处理形成的工作流模式, 正适应于这种多模块多种参数调节的批量数据业务化生产. 将算法统一编译为基于命令行的无GUI信息的控制台程序, 系统通过插件模式, 动态组织、加载现有的算法模型, 并将输入输出参数以及运行所依赖的库文件等信息以XML文件的形式保存起来, 以便进行参数校验和异常处理. 将算法模型按照一定的逻辑功能顺序有机的组合成阶段性任务, 根据需求设置配置文件定制相应的业务生产流程, 执行时解析模型属性类实现模型和数据交换. 如图2所示, 以工作流[12]模式来组合算法模型能更好的解决业务化中模块多、算法重复使用、开发和维护成本高等问题, 实现将业务逻辑和实际应用分离, 更好的适应遥感数据处理的快速变化.
图2 工作流组织管理算法模型
2.2 工作流程
由于遥感图像成图时受传感器、地球旋转、大气等因素影响, 图像与其对应地物的实际信息会产生一定的偏差. 为了纠正这些偏差本系统以模型库和任务流方式, 集成了图像配准、几何纠正、大气纠正、融合、云检测、信息统计、数据标准化和快视图等多种处理模型应用于遥感大数据密集型预处理计算工作流程如图3所示. 图像配准主要根据底图与配准影像的特征地物来保证图像位置的正确性, 通过原始影像经纬度范围按照图像分辨率经过公式转换成对应的层级和行列号范围, 通过Web Service服务从数据库中检索瓦片并下载到本地, 将获取的瓦片数据拼接为区域一致的基准影像经过HARRIS或SIFT算法自动提取控制点. 访问数据库获取基准图像动态提取控制点的方法省去了人工采集的繁琐; 基准图像存储在分布式的数据库中节省本地存储空间提高系统可移植性; 基准影像的数据类型可按照生产需要进行调整进一步提高配准精度.
经纬度转换行列号公式为:
其中某个点的经纬度坐标为(Long, Lat), Z为影像层级x瓦片分割间隔度数的倒数, floor为下取整函数.
几何纠正模块主要通过有理函数模型或多项式模型来消除影像中的几何误差. 有理函数模型根据原始影像的RPC参数, 通过最小二阶乘法求解RPC参数结合岭估计[13]实现函数模型纠正. 多项式模型不考虑成像空间几何过程, 直接对影像变形本身进行数学模拟,计算中的待定系数由控制点坐标确定. 根据几何纠正模型中不同模块的数据依赖关系, 在模型调用前根据生产要求结合文件检测自动匹配合适的纠正模型进行处理. 融合模块利用全色的高分辨率和多光谱的波普信息进行融合获得比单一数据更丰富的信息. 目前仅对高分一号2m全色和8m多光谱以及高分二号1m全色和4m多光谱进行融合, 其它数据类型则不做融合处理. 针对这种情况采用条件触发方式调用, 根据卫星和传感器判断数据类型, 对满足条件的数据检索模型参数是否存在即几何纠正后的多光谱及全色数据,参数检测正常则进行融合处理.
标准化模块将纠正后的数据按照五层十五级标准[14]进行切分, 切分后的数据可以快速聚合实现了灵活的管理调度服务于并行计算. 工作流在执行过程中进行过程控制, 通过Log类监控每个任务标记其属性并输出日志文件记录主任务时间和算法模型执行时间以及错误信息, 通过时间和异常信息判断模型的调用情况.根据模型间的逻辑关系建立的工作流既能满足算法模型的灵活组织管理, 又能服务于业务化生产减少人工操作更好的应用于数据密集型计算.
遥感数据呈现出的多时相、多光谱、多分辨率和多传感器等现状形成了数据量大且类型各异的特点.遥感数据的处理是一个复杂的过程涉及处理器硬件、磁盘存储、算法模块、网络通信等一系列因素. 处理环节中除了将算法模型进行合理的组织管理, 还需要提高数据的处理效率. 在业务化的处理时根据数据量将数据按生产订单进行划分, 分布到多机环境下进行同步处理缩短生产时间. 在生产节点按时间和优先级结合的方式处理任务上结合算法模型间的逻辑关系并行处理数据提高CPU利用率. 针对一景遥感影像数据量很大无法全部读入计算机内存的现象, 通过对数据分区分块, 利用GPU在图形图像上的处理优势在算法中进行加速. 待一景遥感数据分为较小图像后可以通过多线程将不同数据块同时处理. 形成结合多机并行、任务并行、数据并行、算法并行、多线程并行和GPU加速的“5并行1加速”的计算体系, 结构体系如图3所示.
图3 系统工作流程图
图4 “5并行1加速”结构体系图
3.1 多机并行
多机并行是一组计算机通过网络连接部署相同的处理环境使其能协作完成计算工作. 每台参与计算的计算机都是一个生产节点, 负责一部分任务的执行处理. 在接收到产品生产订单后分给调度服务器进行任务分配, 多机环境下要充分考虑节点的负载通过任务分配进行调度, 节点的生产能力主要取决于当前的可用内存、CPU利用率、磁盘读写速度、网络带宽, 综合这四方面性能指标通过公式分析节点生产能力值Pi,对Pi值高的节点优先分配任务, 实现满足节点负载均衡的多机计算环境.
其中Mi、Ci、Di、Ni表示第i个节点的可用内存、CPU利用率、磁盘读写速度及网络带宽, Mmax、Cmax、Dmax、Nmax分别对应四个方面上的最大值, W1、W2、W3、W4为四个指标的权重系数, 且W1+W2+ W3+W4=1, 根据节点即要满足数据传输又要处理密集型计算, 这里设置w值均为0.25.
在任务分配服务器上存有生产订单Dready、等待订单Dwait用于分配任务, 空闲队列Nspare和忙碌Nbusy队列用于调度节点. 任务订单信息D(D1,D2,…,Di)其中Di为订单编号, 节点队列信息N (Node1, Node2,…,Nodei),其中 Nodei(Mi,Ci,Di,Ni,Pi,Numi) 存储节点的基本信息信息, 其中Numi为节点i的当前任务数.
对节点进行任务分配方法如下:
(1) 任务调度解析订单信息, 对任务编号形成子任务并放入Dwait.
(2) 判断Nspare是否为空, 不为空则根据节点Pi值对节点空闲队列排序, 对Pi值相等的节点按Numi值排序, 从Dwait中移出子任务加入Dready并分配生产节点,同时把生产节点从Nspare中移出存入Nbusy; Nspare为空则继续等待.
(3) 收到子任务生产完成消息时, 将子任务从Dready中移除, 并将生产节点从Nbusy中删除, 加入Nspare.
(4) 判断Dwait是否为空, 不为空执行(2), 为空则执行(5).
(5) 判断Dready是否为空, 不为空则任务没有执行完等待, 等待直到有子任务生产完成即第3步; 为空则任务生产结束执行结束.
3.2 任务并行
在完成任务分配后任务订单被分配到生产节点上,分解产品订单生成任务, 由于遥感数据处理时间长、耦合高将任务根据类别分为普通任务队列Tcom(T1,T2,…Ti)和应急任务队列Temer(T1,T2,…Ti)Ti为任务编号, 任务队列基于FIFO先来先服务策略按任务到达时间顺序执行, 在每个任务执行前会先判断Temer是否为空, 是则继续Tcom队列按顺序生产, 否则结合基于优先级的调度算法, 暂停Tcom队列出队生产Temer中数据直到结束后继续Tcom. 将任务按照优先级和时间戳属性进行划分通过任务队列的协同处理模式提高生产效率.
3.3 数据并行
数据并行分为数据传输上的并行和数据计算上的并行. 数据传输上的并行主要通过将数据分发到多个生产节点进行同时生产, 数据计算上的并行主要在单机环境下对工作流引擎执行过程中产生的中间数据集进行并行计算, 这些数据一般会继续被后续子任务使用, 数据放置在相关度[15]最大的数据中心减少不必要的传输开销. 相对像素级的并行处理来说, 其数据之间相关性较小, 不同的数据块可能需要执行相同的操作. 通过线程各自读取分配的影像, 每个数据独立完成其计算任务. 例如在一景影像分波段后得到红绿蓝波段和红外波段, 通过数据标准化算法分别开设线程对四个波段的图像同时执行切片操作得到瓦片数据.融合后的切片数据量多达上百个, 在大量瓦片数据生成快视图时按顺序操作处理时间长, 需要对不同行列号下的数据同时生产提高效率.
3.4 算法并行
算法并行在工作流中结合算法参数信息, 调用多个算法模型同时处理. 下一级算法之间共享数据的读取, 不同算法输出不同的结果防止写入冲突, 处理完成后的结果由上级算法使用. 遥感产品生产的依赖关系不容易形成回路依赖, 通过有向无环图的算法描述结构分析算法之间的依赖关系进一步并行提高效率.如图5所示云检测、天顶角方位角(AZ)、和融合主要依赖于几何纠正后的数据, 在几何纠正完成后通过共享数据读取的方式并行启动上一级算法. 由于遥感数据存在部分需要做融合处理, 所以将分波段算法放入更高级等待当前算法均完成处理后启动. 生成快视图需要Alpha通道和分波段后的影像数据做波段组合,位于同一并行级别的生成Alpha通道算法和分波段算法则可并行生产获得快视图产品.
图5 算法依赖关系描述图
3.5 多线程并行
大数据量的遥感数据由于一次只能读取一部分数据造成磁盘访问频繁, 等待过程未充分利用CPU资源.系统对整景影像在单个计算节点上通过OpenMP进行多线程加速, 在切片处理后形成数据个数多而数据量小的瓦片数据, 通过Parallel类中的方法生成并行工作计划处理数据集中数据. 根据IOCP原理线程开设应为CPU数量的2倍, 然而处理中有大量读写硬盘文件的操作造成线程等待, 这里使用动态创建线程法, 保留一个等待线程数量的属性作为线程唤醒时的判断,并设置其值为最大线程数量, 以此提高CPU的利用率进而提高生产效率. 主要流程为: 读取图像宽高或个数等图像信息; 动态创建线程完成数据处理修改等待线程数量的值防止创建过多; 查询线程状态标识已处理完则释放结束操作, 否则继续等待.
3.6 GPU加速
GPU的全称是图形处理器, 适用于具有相似处理过程的大数据的并行计算. 在遥感影像数据的计算上, GPU的性能是基于CPU的并行计算方式的数十倍甚至上百倍. 这主要是由于CPU所要处理的任务种类类型繁多, 其不仅要负责内存管理还要负责任务调度等一系列非计算类任务, 通过OpenMP等多线程机制实现的是一种软件粗粒度的多线程, 有线程上下文的切换的时间开销. 而GPU则是专门为数据的并行计算而设计的, 其内部没有CPU那样复杂的控制单元和寄存器, 取而代之的是大量的计算核心, 并且基于硬件管理的轻量级线程在计算密度较高可以隐藏其延迟从而实现零开销的线程切换. 这些差异使GPU在执行数据密集型计算时性能远超过同期CPU. 系统中用于控制点提取的SIFT算法, 用于图像融合的atrous小波、HIS等多种算法都是通过CUDA的GPU计算框架实现的.
由于遥感影像的数据量较大, GPU的可用显存有可能不足以加载整景的遥感数据, 所以需要对遥感数据进行分片. 但是显存的读取操作是经过PCI Express接口传输的, 显存与内存之间的传输效率很低, 因此分片不能过小, 过小的话会导致频繁的数据交互从而严重的降低运算效率. 分片的过程主要是根据GPU当前的可用显存结合遥感影像的宽度将原始影像划分为n个条带状的影像块, 该步骤的计算量小并且需要持久化分块信息因此需要在CPU上运行.当计算出影像块的行列号范围后, 在CPU的调度下影像块被依次传输至GPU中进行计算. 传输完成后CPU会通知GPU调用相应的内核函数对显存中的数据进行并行计算. 内核函数会调用GPU中的多个处理单元, 每个处理单元可以看作一个计算线程. 每个线程负责一部分数据的计算, 由于各个数据之间没有依赖关系因此各个线程可以在不受其他线程影响的情况下对数据进行计算. 在线程的运算完成时, 运算结果会被暂存在显存中, 当所有的线程都完成计算的时候唤醒CPU, 然后在CPU的调度下将计算结果从显存重新传输到内存中.
为了验证预处理系统在保证处理精度的同时能有效的缩短生产时间, 本文通过对不同类型的高分数据进行实验, 从并行后的算法执行时间、多景影像处理时间和模型精度三个方面说明. 实验中用到的CPU型号为Intel Core i7 4核处理器, 显卡型号为NVIDIA Tesla C2050.
表1为算法模型的执行时间表, 表中的数据是通过对GF数据不同类型的5景数据多次测试取平均值得到的. 实验中用到的全色数据均指融合后的图像,通过表中数据可以看出数据标准化和快视图生成这两个算法模块通过多线程加速能够有效的缩短生产时间,大幅提升处理效率.
表1 各算法执行时间比较
PCI GXL是用于卫星影像数据自动化生产的地理影像集成软件系统, 具有强大的海量数据批量生产能力, 采用灵活的模块组合实现自动化生产, 相较于其他遥感影像处理系统有其独特的优势. 本文选取北京地区的50景高分数据进行数据处理实验, 通过对比在本系统上和PCI GXL系统上的数据处理耗时来验证系统能在一定程度上缩短影像生产时间. 表2是每景影像在各个模块上的平均处理时间. 从表中可以看出,本系统在几何纠正和图像融合上花费的时间远小于PCI GXL系统, 配准时间稍长的原因在于需要从数据库中检索瓦片下载到本地然后再拼接为基准影像, 这一步骤要花费一定时间. 经过与商业软件的对比得出:利用“5并行1加速”的计算体系对高分数据的生产效率有了很大的提高.
表2 影像处理时间表
图6 GF1数据瓦片卷帘对比图
图7 GF2数据瓦片卷帘对比图
通过不同时间拍摄的影像数据在同一层级行列号下瓦片数据地理位置基本一致验证模型精度. 如图6为高分一号8米瓦片数据, 标注为1的是20151012日数据, 标注为2的是20160324日数据; 图7为高分二号4米瓦片数据, 标注为1的是20150217日数据, 标注为2的是20150912日数据. 由图中可以看出系统能在一定范围内保证模型精度.
在遥感数据处理中, 如何快速准确的解决影像处理任务、找到适应于影像业务化处理的数据密集型计算方法是现阶段的研究方向. 本文设计的预处理系统通过组织多种遥感算法模型形成工作流来完成遥感数据的业务化处理, 借助不同的并行方式提升计算能力、缩短生产时间形成“5并行1加速”的计算体系. 通过实际验证在高分数据的生产上能够保证处理精度的同时大幅度提升生产效率.
1 何国金,王力哲,马艳,等.对地观测大数据处理:挑战与思考.科学通报,2015,60(5-6):470–478.
2 Ma Y, Wang L, Liu P, et al. Towards building a data-intensive index for big data computing–A case study of remote sensing data processing. Information Science, 2014, 319: 171–188.
3 Tang P, Zhang HW, Zhao YC, et al. Practice and thoughts of the automatic processing of multispectral images with 30 m spatial resolution on the global scale. Journal of Remote Sensing, 2014, 18(2): 1007–4619.
4 张谦,贾永红,吴晓良,等.一种带几何约束的大幅面遥感影像自动快速配准方法.武汉大学学报:信息科学版,2014. 39(1):17–21.
5 Zhang J, Sha HM, Zhuge Q, et al. Efficient fault-tolerant scheduling on multiprocessor systems via replication and deallocation. International Journal of Embedded Systems, 2014, 6(2/3): 216–224.
6 景维程.海量遥感数据的高可靠并行处理方法.测绘工程, 2015,(6):14–17.
7 Peter F, Matthew B, Mark B, et al. Web-based processing of remote sensing data in a workflows environment. ISRSE2011: The GEOSS Era: Towards Operational Environmental Monitoring, Sydney Convention&Exhibition Centre. 2011.
8 Tang M, Zhao JY, Tong RF, et al. GPU accelerated convex hull computation. Computers & Graphics, 2012, 36(5): 498–506.
9 卢敏,王金茵,卢刚,等.CPU/GPU异构混合并行的栅格数据空间分析研究--以地形因子计算为例.计算机工程与应用, 2015.
10 Wang P, Wang J, Chen Y, et al. Rapid processing of remote sensing images based on cloud computing. Future Generation Computer Systems, 2013, 29(8): 1963–1968.
11 张树凡,余涛,李家国,等.基于三级并行的遥感业务化处理系统研究.计算机工程与设计,2012,10(33):3828–3832.
12 孙小涓,雷斌,程兆运,等.遥感数据处理运行控制中的工作流应用.计算机工程,2012,38(4):28–30.
13 张过.缺少控制点的高分辨率卫星遥感影像的几何纠正[博士学位论文].武汉:武汉大学,2005.
14 王栋,郑逢斌,赖积保,等.基于五层十五级遥感数据结构的并行算法研究.微计算机信息,2012,28(1):116–167.
15 刘少伟,孔令梅,任开军,等.云环境下优化科学工作流执行性能的两阶段数据放置与任务调度策略.计算机学报, 2011,34(11):2121–2130.
Remote Sensing Image Preprocessing Method Based on the Data Intensive Computing
ZHOU Bing1, LIU Xiao-Nan1,2, ZANG Wen-Qian2, CHEN Heng1,21(School of Computer and Information Engineering, Henan University, Kaifeng 475001, China)2(Institute of Remote Sensing and Digital Earth, Chinese Academy of Sciences, Beijing 100101, China)
In the era of big data, the research on data-intensive computing is becoming more and more popular both at home and abroad. As a typical branch of big data, remote sensing data is characterized both by the variety of the data sources and the huge data quantity. One of the biggest challenges facing the remote sensing application is how to find out a data-intensive computing method which aims at the automation of the business processions of remote sensing images. In this paper, a new data-intensive computing method for the procession of remote sensing images is proposed. After a deeply study focusing on the automation of the business processions of remote sensing data, a new systematic architecture using workflow is introduced which can coordinate the work among different algorithm models. In addition, in the pre-processing of the remote sensing images, a new computing architecture with five different types of parallelism and a stage of acceleration is also adopted. The computing method proposed in this paper has been tested in many products in real production environment in order to testify its effectiveness. The results show a significant improvement on the efficiency of the pre-processing of remote sensing data in the condition of ensuring the processing precision.
remote sensing data; remote sensing data preprocessing; data intensive computing; parallel computing; five parallelism and one acceleration; workflow
高分重大专项(Y4D00100GF);高分重大专项(Y4D0100038);中科院战略先导专项课题(Y1Y02230XD)
2016-07-21;收到修改稿时间:2016-09-02
10.15888/j.cnki.csa.005699