multithreading - Hadoop 可以减少 SIFT 的运行时间吗?

标签 multithreading hadoop real-time sift

我们可以使用 hadoop 在多个图像上运行 SIFT 吗?

SIFT 在每个图像上花费约 1 秒来提取关键点及其描述符。考虑到每次运行都独立于其他运行,并且无法减少 1 次运行的运行时间,我们是否可以减少运行时间?

多线程将运行时间减少了您拥有的核心处理器数量的一个因素。我们可以在每个处理器上运行每个图像。

hadoop 是否可以用于在多个图像上并行运行?
如果是,假设我们有 3 个集群,它可以通过什么因素减少运行时间?

最佳答案

是的,Hadoop 可用于从多个图像中提取 SIFT 描述符。这是一个 example of SIFT descriptor extraction for Hadoop using OpenIMAJ .

Hadoop 将在所有集群节点上并行处理图像。但潜在的加速取决于图像数据集的大小。如果大小很小,运行时间可能会由于 Hadoop 开销而增加。

您可能会遇到两个问题。

  1. 将图像复制到 HDFS 可能会很慢。在一台计算机上处​​理所有图像然后将它们复制到 HDFS 并在 3 节点集群上处理可能会更快。这取决于数据集的大小和集群中的节点数量。

  2. 与 HDFS block 大小(默认为 64M)相比,图像大小通常较小。 Hadoop 无法处理此类文件 (see Cloudera blog)。您可以使用 Hadoop 序列文件将许多小图像文件合并为一个大文件。 OpenIMAJ 包含可用于此目的的 SequenceFileTool。

关于multithreading - Hadoop 可以减少 SIFT 的运行时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23652779/

相关文章:

java - Hadoop如何在多个数据节点之间分配数据和Mapreduce任务

c - 在linux内核模块中寻找意外抢占的原因

javascript - 断断续续的过渡 : translate multiple paths (and xaxis) concurrently

c# - Monitor.Pulse 丢失信号?

java - 执行等待和通知时返回意外结果

C++ std lib <mutex>, <conditional_variable> 库和共享内存

java - Hadoop 2.2.0 源码打包

r - 如何安装 Apache spark 并为 R 启动和运行它?

java - 线程似乎神奇地开始了

linux - 如何屏蔽Linux调度程序中的CPU(防止将线程调度到该CPU上)?