英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
MIPr — 一种基于Hadoop进行分布式图像处理的框架
安德烈Sozykin 和Timofei Epanchintsev
数学和力学研究所市区RAS,俄罗斯叶卡捷琳堡
俄罗斯叶卡捷琳堡乌拉尔联邦大学
摘要:如今,图像集合的大小是大幅增加,达到pb的数据,这样的大量数据是无法在可接受时间内被个人电脑上分析处理的。因此,现代图像处理集合需要分布式计算。摘要 MapReduce图像处理框架(MIPr),它提供了使用分布式计算图像处理的能力。这篇论文展示了一种基于Hadoop进行分布式图像处理、具有了分布式进行图像处理的能力的框架(MIPr)。此框架以Apache Hadoop MapReduce和它的开源实现为基础,为以Hadoop格式图片的展现和为集成图像处理信息到Hadoop数据流而工作的输入输出工具提供了多种形式。MIPr框架的图像格式是建立在流行的图像处理库上的,此外,MIPr包括高级图像处理API,为不熟悉Hadoop的开发者提供了便利。这个API允许创建连续函数来处理一个图像或一组相关的图片,MIPr框架把这样的功能运用到了大批量的并行图像等功能适用于大量的并行图像。此外,MIPr包括流行的MapReduce图像处理算法,这些算法不需要额外的软件开发就可以实现分布式图像处理。MIPr框架大大简化了Hadoop分布式环境下的图像处理。
关键词:图像处理; mapreduce; Hadoop; 分布式计算
1介绍
图像处理经常使用在许多科学领域,如医学成像、天文数据分析,遥感等等。在过去的几年里,图像的大小急剧增加,达到pb的数据集合。这样的大量数据是无法在可接受时间内被个人电脑上分析处理的,因此,现代图像处理任务需要分布式计算。
如今,并行和分布式计算的几种技术已经存在,其中最受欢迎的是MPI,OpenMP和MapReduce[1]。几乎所有的图像处理任务都首选MapReduce技术,因为它提供了自动并行化、集群节点之间的工作分配和容错功能。因此,应用程序开发人员可以集中精力处理的图像分析,而不是复杂的分布式计算的细节。此外,受欢迎的MapReduce实现包括分布式文件系统(DFS)[2],允许在商品硬件存储大量的数据,于此,大型图像采集存储的成本显著降低。最流行的开源MapReduce实现是Apache Hadoop[3]。
尽管Hadoop通常用于图像处理[4]—[9],但它原本主要用于文本处理,而并不支持图像处理,因此,应用程序开发人员的常规任务必须自己动手实现,这对每个基于Hadoop的图像处理应用程序都是常见的。这样的任务从DFS读取图像,,再存入内存,再将图像转换为Hadoop的内部表示,最后将图像处理后的结果返回到DFS。
本文提出的MapReduce图像处理(MIPr)框架,,旨在使图像处理在Hadoop上能更简单和高效。MIPr框架提供了以Hadoop格式图片的展现和为集成图像处理信息到Hadoop数据流而工作的输入输出工具。此外,MIPr为不熟悉Hadoop的开发人提供图像处理API。 这API隐藏了Hadoop分布式计算环境的内部细节,让应用程序开发人员能够集中精力创建图像处理算法。
2背景
MapReduce, Hadoop, and HDFS
MapReduce是由谷歌开发的并行编程模型[1]。在这个模型里,数据以键值对列表的形式呈现。数据处理包括两个计算阶段(Map和Reduce)和一个通信阶段(洗牌和排序)。MapReduce编程模型的优点是能够独立并行地处理不同键值对。这样的并行化是由MapReduce实自动现的,应用程序开发人员只需要创建串行Map和Reduce函数。
尽管MapReduce模型有局限性,许多图像处理的任务还是可以很容易地表示为MapReduce任务。最简单的例子是独立处理的大量的图片,例如,SIFT-descriptor[10]提取或人脸识别。这种情况下可以使用仅映射实现的工作,每一个映射函数处理单个图像。更复杂的情况下,例如,co-addition[5],要求处理相关的图片,在这种情况下,单独的映射函数流程不同的相关图片,Reduce函数结合地图输 出生成图像。
谷歌建议MapReduce编程模型,但没有分享它的实现。基于谷歌[1],创建几个开源的MapReduce实现,其中最受欢迎的是Apache Hadoop[3]。除了MapReduce,它包括Hadoop分布式文件系统(HDFS)[11]。
Hadoop Data workflow
Hadoop MapReduce自动化工作流的数据见图1。首先,需要从HDFS读取的数据。为此Hadoop使用输入格式类,它将输入数据划分为逻辑部分,并提供一行记录。每步分割处理一个单独的映射过程(映射)。记录负责读取数据并展示他们作为键值对。
其次,数据必须在内部Hadoop格式以适合序列化。Hadoop用字节流向网络传输数据或临时存储在本地磁盘上。最受欢迎的序列化技术是可写Hadoop,但是还有其他选项,如Apache Avro或Apache Thrift。
最后,数据被MapReduce处理后需要被写回到HDFS ,这过程类似于阅读过程,Hadoop使用OutputFormat类,确定输出和应用Record-Reader的结构。实际上Record-Reader将降至对写入HDFS中。
使图像处理在Hadoop,需要创建三个组件:
bull;图像表征在Hadoop内部格式序列化和反序列化的能力。
bull;自定义实现InputFormat和Record-Reader阅读图像从HDFS Hadoop MapReduce处理。
bull;定制经过MapReduce 处理后的用OutputFormatR 和Record-Writer来写入图像到HDFS的实现。
3 相关工作
Hadoop在几个科学被用于图像处理项目[4]—[9]。在大多数项目开发人员自己在Hadoop实现的图像处理。
Hadoop运行时由于结构复杂,难以扩展,开发人员试图使用基础Hadoop能力来处理图像。在大多数情况下,图像表示为字节数组,每个Map和Reduce函数将字节数组转换为图像处理所需的图像,然后将其转换回字节数组。
这样的方法不是方便,但通常有效。在极少数情况下会出现相反的情况。例如,作者的工作[8]是将远程摇杆图像转化成文本文件,每一行代表一像素,也包含了以文本格式的RGB颜色信息。虽然这种方法允许使用Hadoop文本处理能力,但是它会显著增加数据数量。
有两个现有的基于Hadoop的图像处理系统可:HIPI(Hadoop图像处理接口)[12]和OpenIMAJ(Open Intelligent Multimedia Analysis for Java) [13]。HIPI是一个框架,是专门用于在Hadoop中处理图像;OpenIMAJ是一组用于图像和视频分析的Java库,一些OpenIMAJ 工具可以用于Hadoop实现。
Hadoop HIPI框架提供了所有必要的部分数据图像处理的工作流程:
bull;内部基于像素的简单浮动数组的Hadoop表征图像(FloatImage),。
bull;InputFormat和OutputFormat与相应RecordReader RecordWriter。
HIPI使用Hadoop可写接口FloatImage序列化。此外,FloatImage包括一系列的图像处理操作,如从彩色图像转换到灰度图像,缩放,裁剪等等。在处理之前,图片必须被打包进HIPI映像包,这是一个非标准HIPI文件格式,类似于Hadoop顺序文件。除了图片,HIPI图像包包括图像描述 符,可以用来过滤包图片,和索引快速图片搜索。HIPI映像包提供用来过滤图像的图片描述信息还有用来图像搜索的索引。相比于基础Hadoop能力,HIPI映像包提供了一个高性能图像处理能力。HIPI的主要缺点是它贫乏的功能,应用程序开发人员只可以使用简单的像素数组,图像处理算法必须抓取实现。另一个缺点是缺乏交互操作性:图像必须打包成无法被其他系统读取的HIPI图片包。
OpenIMAJ比HIPI提供了更多的图像处理和分析功能,包括计算机视觉算法的实现、集群化,分类等等。和HIPI一样,OpenIMAJ需要图像文件打包成一个大文件。但相比HIPI,OpenIMAJ使用Hadoop序列标准文件。它与HIPI的另一个显著差异是缺乏方便的Hadoop图像表示。OpenIMAJ用字节数组来表示图像。因此,图像处理需要在每个Map和Reduce函数进行从字节数组到形象到图像的转换。OpenIMAJ的缺点是,它只包含一个现成的MapReduce实现图像处理算法,但不提供MapReduce的开发工具。
4 THE MIPR FRAMEWORK
MIPr 是我们的MapReduce图像处理框架,旨在为图像处理提供简单和方便的方式。MIPr允许开发人员用熟悉的工具并行处理大量的图像,而无需学习分布式计算的细节。
MIPr框架使用基于流行的图像处理库图像表示。因此,应用程序开发人员可以从库里使用现有的图像处理算法,而不是从头开始。
在Hadoop分布式处理的内部细节是对应用程序开发人员隐藏的。MIPr框架提供了一个简单的接口用于创建连续函数来处理一个图像或一组相关的图片。图像已经以一种方便使用的格式被加载到内存中,MIPr框架运用这些连续函数来并行处理大量图像。
MIPr框架的体系结构
MIPr框架三层架构见图二:核心组件、图像处理API,和图像处理库。核心组件层为Hadoop图像处理提供了基础。它包括在Hadoop中图像表示的各种可以被MapReduce程序作为值使用的形式。这一层还提供必要的将图像处理集成到 Hadoop数据工作流的输入/输出工具。
图像处理API层的主要目的是对应用程序开发人员隐藏Hadoop,MapReduce和分布式处理的内部细节,这层包括拥有连续图像处理功能的图像处理API和执行Hadoop工作的MapReduce驱动。
第三层包含了MapReduce实现图像处理算法,可以用于分布式图像处理软件开发。
内部图像表示
目前,MIPr框架包括基于Java 2D(BufferedImage类)和OpenIMAJ(FImage类灰度图像和MBFImage彩色图像)图像的表示格式,可写Hadoop被用作一种序列化技术。MIPr图像格式见图3。
该格式的图像可以使用MapReduce程序中的值。值得一提的是,这些图片不能用作键,因为Hadoop的钥匙必须实现WritableComparable接口而不是 Writable接口。
图像输入/输出的工具
图3为每种类型的可写图像表示,特殊InputFormat和OutputFormat实现已经被实现。InputFormat实现(和相应的 RecordReaders)从HDFS读取图像,创建所需的可写图像wrapper类,生产输入地图的键值对。键值对包括空键和图像中的可写wrapper类作为值。 当前实现不允许文件分裂。因此,整个图像文件被一个映射器读取和处理。
OutputFormat和RecordWriter实现将处理后的图像单独地被当作独立文件传回HDFS。与传统的 MapReduce方法相比,OutputFormat的默认行为是保存文件名和原始图像的扩展信息。这些信息被当作元数据域被存储的可写图像表示里(见图3)。
相比HIPI和 OpenIMAJ,MIPr不需要图片打包成一个大文件。尽管Hadoop在大批量的小文件中表现不尽人意[14],但这个问题可以通过使用 CombineFileInputFormat来解决[15]。合并小文件成大文件是Hadoop的标准能力。从HDFS读取逻辑部分是一次性操作,比分别读取小文件要快得多。 CombineFileInputFormat的另一个优点是每个过程映射多张图片,因此,只需少量映射器,与此同时,启动和停止映射器的开销也降低了。CombineFileInputFormat是一个抽象类,需要具体的实现。这样实现了MIPr框架为每个类型的可写的图像表示(见图3)。
序列文件也可用于MIPr框架,包括输入和输出。MIPr包含打包图像数据集的到序列文件和从这些文件中提取图像的工具。
d图像处理API
当前MIPr实现图像处理包括Java API。API的主类是带有一个重要的图像处理方法的图像处理器,这方法接受一张用必要格式的源图像当作参数,返回一张处理过的图像(见图3)。
图像处理API还包
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[29009],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。