基于Hadoop云计算平台的CBIR设计

2014-10-22 20:27卓友胜刘利
电脑知识与技术 2014年27期
关键词:云计算

卓友胜 刘利

摘要:当今的数字时代,数据的增长速度不断加快,人们面临着需要高效快速处理大量数据的问题,由此诞生分布式计算机系统框架Hadoop。图像搜索方面,在海量图像数据的环境下,基于内容的图像检索(CBIR)相比传统基于文本的图像检索更具优越性。Hadoop适用于图像文件数无限大的情况,因此本文在简单介绍Hadoop之后,详细的描述了基于Hdoop的CBIR系统的设计与实现,并给出了系统性能的测试结果。

关键词:基于内容的图像检索;云计算;Hadoop

中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2014)27-6318-03

Abstract:Data of growth is accelerating on todays digital era, people facing the problem that fast and efficient processing of large amounts of data. Therefore the distributed computer system framework, Hadoop was born. Under the massive image data environment, content based image retrieval (CBIR) has more advantages than traditional text based image retrieval, Hadoop is applicable to the image file number infinite case. This article introduces Hadoop, then described the implementation of a content based image retrieval system in detail, and gived out the performance test results.

Key words: CBIR; Cloud computiong; Hadoop

基于内容的图像检索(Content Based Image Retrieval ,CBIR)[1,2]是在1992年的时候提出的,并且很快得到了国内外科技人员的广泛重视和研究。因为传统的图像检索方法是基于文本的,需要人为地对图像进行标注并入库,然后通过关键词检索图像。而基于内容的图像检索的基本思想是根据图像所包含的颜色、纹理、形状及对象的空间关系等信息,提取图像特征,再进行特征匹配。然后随着多媒体技术的发展,海量的图像数据对CBIR的存储和检索性能都提出了新的挑战。

Hadoop项目是仿照Google云计算开发的开源实现,基本实现了Google File System的功能。Hadoop是当前开源的分布式文件系统技术和分布式计算技术中较为完善的一项技术。Hadoop能对大数据的处理的速度进行优化,适用于CBIR系统[3,4]。因此本文基于Hadoop设计并实现了一个CBIR系统,并对最终实现的系统进行了性能测试。测试结果表明基于Hadoop的CBIR系统相比于传统的CBIR系统,在图像数据比较大的情况下可以提高检索速度。该文所对系统的实现进行了详细的描述,可以为搭建Hadoop平台,以及建立CBIR系统的人员提供参考。

1.3 安装和配置步骤

下面以Linux终端为例,给出安装和配置Hdoop步骤:

1) 下载并解压hadoop:tar -xvf hadoop-1.0.3-bin.tar.gz

2) 进入解压目录,编辑conf/hadop-env.sh:修改JAVA_HOME(java环境的位置)。

3) 编辑core-site.xml:fs.default.name,设置hdfs://localhost:9000。

4) 编辑hdfs-site.xml:dfs.replication,1。(这里1代表数据只有一份副本。)

5) 编辑mapred-site.xml:mapred.job.tracker,设置localhost:9001。

6) 修改host文件,关联主机名和对应的IP地址,并设置master和slave节点。(不同Linux的host文件位置不一样,一般是/etc/hosts)

7) 配置ssh,生成密钥,使得通过SSH可以免密码连接另外的Linux。

8) 格式化HDFS:./hadoop namenode -format。(格式化后才能启动hadoop,否则会环境启动失败。)

9) 使用bin/start-all.sh启动hadoop。

搭建Hadoop平台的时候,最麻烦的是SSH的免密码连接。如果发现连接不上,请检查防火墙是否关闭,SSH是否完整安装,有没有获取Linux的最高权限等。要配置好所有节点之后才能启动hadoop服务,因为启动的时候要对HDFS进行一次格式化,不然的话启动hadoop会失败。

2 基于Hadoop的CBIR系统设计

CBIR系统主要包括图像的存储和图像检索两部分,下面分别给出设计方案。

2.1 图像存储

存储是检索的基础。这里使用的数据存储系统用到了Hadoop中的HDFS(Hadoop Distributed Filed System)。使用HDFS的是因为可以增加数据的安全性,不会因为个别机器的损坏而导致系统损坏。其次是使用HDFS可以加快I/O速度,这是至关重要的。HDFS的特点中,一次写入多次读取,适用于这个CBIR系统的机制。一般在建立索引之后,会有一段时间不会再去建立索引,这段时间进行多次搜索也即是多次读取索引。现在所说的数据存储主要是数据库内的存储。首先需要将要需要进行提取特征的图像上传到HDFS上,上传时为每个图像分配一个唯一ID。整个流程有三步,如图2所示。

Step 1:Map阶段,提取每个图像的颜色、形状、纹理特征,并生成缩略图。把提取后的数据作为一行记录存入HBase中,如提取失败则记录图像ID。

Step 2:Reduce阶段,用一个reducer把无效的图像ID返回到HDFS。

Step 3:读出无效的ID,返回给用户。

2.2 图像检索

假设这一段时间内只有提交了一张图片,那么系统需要的就是把这张图片的特征值与索引的记录比对,<相似度,ID>作为键值对作为map输出。最后索引中记录都比较过之后,收集map输出,排序后返回。

在整个MapReduce任务过程中,输入的是存放特征值索引的全部记录。整个流程的大体步骤有如下几步,如图3所示。

Step 1:在Map阶段,首先从HDFS的分布式缓存中读取关键图像,提取它的特征值,然后与索引中的图像特征进行特征值的比较和相似度的匹配。<相似度,图像ID>键值对,作为map的输出。

Step 2:对map输出的所有<相似度,图像ID>键值对,按照相似度的从大到小,进行排序和重新划分,然后再输入到reducer。

Step 3:在Reduce阶段,收集全部的上面说的键值对,再对这些键值对进行相似度的排序,把前面n个键值对写入到HDFS。

Step 4:最后输出与关键图像最相似的那些图像的ID。有了ID就可以显示图像。

3 系统性能结果

系统性能测试的图片样本有100,000张左右,源于文献[5]。此次测试程序只使用了三组数据进行建立索引和进行搜索,测试结果如表1所示。表示是在一台计算机下的三台虚拟机上运行的结果,其中包括一个主节点和两个从节点。

测试结果显示在建立索引的时候耗时较长,主要是需要大量的CPU资源。而在搜索图片的时候也是需要大量的CPU资源,同时需要部分I/O资源。从测试结果中可以看出,Hadoop平台上运行CBIR系统,存在一定的好处。数据规模较小的时候,基于Hadoop平台上的CBIR系统和普通PC上运行CBIR系统的效率差不多。随着图像的不断增多,增加存储的节点数量会加快图像特征提取和存储的效率;在图像比较少的情况下,不应该采用太多的节点去进行存储。这里处理速度提高不大的原因是从节点只有两个。

4 总结

Hadoop因具有高可靠性、高拓展性、高效率性和高容错性等特性深受广大用户的欢迎,并在大数据处理领域占领了一席之地。对海量图像数据的存储和访问,云计算是必不可少的。在本文的实验中,由于程序的运行是在一台电脑下的三台虚拟机上运行的,所以结果可能有点出入。但是正是可以从这里看出Hadoop对低配置机器的包容性。此外在一台机设置一个主节点、两个从节点都可以提高效率,若是在实际的多台分布式环境下,效率便能进一步提高。因此基于Hadoop建立CBIR系统是实际可行,而且确实可以解决海量图像数据导致CBIR性能降低问题。

参考文献:

[1] 詹洪陈,王怀登,何菁,等.基于内容的图像检索[J].现代电子技术,2014,37(7):68-70.

[2] 钱晶,高月松.图像检索系统中的CBIR 技术研究[J].电脑知识与技术, 2011,2(2):415-416.

[3] 张学浪.基于Hadoop的海量图像检索关键技术研究[D].西安:西安农林科技大学,2013.

[4] 张良将.基于Hadoop云平台的海量数字图像数据挖掘的研究[D]. 上海:上海交通大学,2013.

[5] James Wang.http://wang.ist.psu.edu/wang/.

猜你喜欢
云计算
志愿服务与“互联网+”结合模式探究
云计算与虚拟化
基于云计算的移动学习平台的设计
实验云:理论教学与实验教学深度融合的助推器
云计算中的存储虚拟化技术应用