基于 MapReduce 的海量图像检索算法


输入: HDFS 分布存储的海量图像

输出:图像检索结果

MAP:

① 初始化键值, key:图像特征的所属位置, value:图像的特征属性;
② 调用图像相似判断函数, 计算图像特征的相似度;
③ 根据检索规则, 计算匹配的相似度;
④ 输出中间结果。

REDUCE:

① 调用 Map 输出的中间结果, key:图像特征的相似度, value:图像编号;
② 如果结果的 key 值相同, 将其 value 合并在一起;
③ 按照相似度由大到小的顺序, 对约简后的结果排序;
④ 输出检索结果。

实验环境:

实验中集群环境包含由普通计算机构成的 10 个节点, 其中 1 台计算作为管理节点, 其余为计算节点。每个节点的硬件配置为:双核 2.0 GHz CPU, 4 GB 内存, 500 GB 硬盘, 百兆计算及存储网络; 软件环境采用 RedHat Linux 操作系统。采用 10 万张网络图像作为测试图像集。

实验结果:


摘自:《基于大数据挖掘的图像检索方法研究赵 婕(太原学院计算机工程系 , 姚峰林 (太原科技大学机械工程学院

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DIRS: Distributed Image Retrieval System === 本项目实现了基于分布式数据库的图像检索系统。其中,TF-IDF作为相似度依据,MapReduce+HBase作为分布式框架。 集群配置 --- 4个节点:1个Master,3个Slave,均运行64位Centos系统 运行环境 --- Hadoop:2.7.3 Hbase:1.2.3 python 2.7.3 java 1.8.0 系统架构 --- 1. **分布式存储** 使用了HBase表存储图片信息,包括原始图片的路径、缩略图和图片的bovw(Bag of Visual Word)特征。 流程:图片 => sift特征点检测及描述符提取 => 特征点进行编码,获得图片的bovw特征向量 => 插入HBase 代码:insertTables.py, sift.py - HBase表 - ***dbinfo: { 'rowid': { 'file': [ 'path':(...), 'data':(...) ], 'feature': [ 'hist':(...), 'data':(...) ] } }*** 其中每个cell含义分别为: 'rowid':'file':'path' 原始图片路径 'rowid':'file':'data' 图片的缩略图(读写需使用pickle进行处理) 'rowid':'feature':'hist' 图片的bow特征 2. **分布式检索** 利用HBase提供的MapReduce接口,让'dbinfo'的所有条目与query计算tf-idf相似度,根据tf-idf值从小到大排序,结果取排在前面的若干数据。 流程:query => sift特征点检测及描述符提取 => vocabulary对特征点进行编码,获得图片的bovw特征向量 => 调用MapReduce程序(Java) => Map阶段: 'dbinfo'表的一个条目 -> 计算与query的相似度 -> (tfidf score, id) => Reduce阶段:(不需要) => 从hdfs中读取结果(MapReduce输出默认根据中间结果的Key值排序) => 从'dbinfo'中读取相应的图片信息,并输出结果 代码:queryMR.py, sift.py, SortDriver.java 3. **非分布式检索(做对比)** 利用倒排索引,获取query的候选集,然后从'dbinfo'中读取相应条目,在本地完成tfidf相似度计算以及排序。 代码:query.py 代码构成 --- 构建数据库 creatTables.py 创建数据库表 deleteTables.py 删除数据库表 insertTables.py 对图片进行特征提取,并将数据存入HBase中 视觉特征 sift.py 封装了sift特征提取常用操作 ransac.py,homograpy.py和warpy.py 用于特征点匹配 vocabulary.py 封装了视觉词典对象以及相关操作 trainVoc.py 训练视觉词典 检索 searcher.py 非分布式检索的运行脚本,封装了一些基本操作,包括通过倒排索引获取候选列表,获取图像的特征 query.py 对searcher进行进一步封装,提供检索接口 queryMR.py 分布式检索的运行脚本,将query的特征写入q.dat文件,作为SortDriver输入 SortDriver.java MapReduce的运行程序,计算结果输出到hdfs的/output中 辅助 imtools.py 封装了常用的操作,例如生成路径列表 HBaseConfigure.py HBase配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值