我们可以使用hadoop在多个图像上运行sift吗?sift在每幅图像上花费~1秒来提取关键点及其描述符。考虑到每一次运行都是独立的,并且一次运行的运行时间不能减少,我们可以减少运行时间吗?多线程减少了运行时的核心处理器数量的一个因素。我们可以在每个处理器上运行每个图像。hadoop可以在多个映像上并行运行吗?如果是的话,假设我们有3个集群,它能减少运行时间的因素是什么?
e7arh2l61#
是的,hadoop可以用来从多个图像中提取sift描述符。下面是一个使用openimaj为hadoop提取sift描述符的示例。hadoop将在所有集群节点上并行处理图像。但是潜在的加速取决于图像数据集的大小。如果大小很小,运行时可能会由于hadoop开销而增加。你可能会遇到两个问题。将图像复制到hdfs可能很慢。在一台计算机上处理所有图像,然后将它们复制到hdfs并在3节点集群上处理,可能会更快。它取决于数据集的大小和集群中节点的数量。通常,与hdfs块大小(默认为64m)相比,图像大小较小。hadoop对这样的文件不起作用(参见cloudera博客)。可以使用hadoop序列文件将多个小图像文件合并为一个大文件。openimaj包含sequencefiletool,可用于此目的。
1条答案
按热度按时间e7arh2l61#
是的,hadoop可以用来从多个图像中提取sift描述符。下面是一个使用openimaj为hadoop提取sift描述符的示例。
hadoop将在所有集群节点上并行处理图像。但是潜在的加速取决于图像数据集的大小。如果大小很小,运行时可能会由于hadoop开销而增加。
你可能会遇到两个问题。
将图像复制到hdfs可能很慢。在一台计算机上处理所有图像,然后将它们复制到hdfs并在3节点集群上处理,可能会更快。它取决于数据集的大小和集群中节点的数量。
通常,与hdfs块大小(默认为64m)相比,图像大小较小。hadoop对这样的文件不起作用(参见cloudera博客)。可以使用hadoop序列文件将多个小图像文件合并为一个大文件。openimaj包含sequencefiletool,可用于此目的。