gpt4 book ai didi

python - 使用多重处理有效地切片和读取图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:31 24 4
gpt4 key购买 nike

我有一个大型卫星图像,想对其运行对象检测模型推理。目前,我对大图像进行切片,保存图 block ,然后读取它们以使我的模型输出检测(框和掩模)。我知道这是一种低效的处理方式,因为一旦读取图像切片/图 block ,就不再需要它,但我目前将其保存到磁盘。

有没有更有效的方法来完成这个过程?也许通过多处理或射线库?

最佳答案

正如您提到的,Ray由于使用共享内存并且能够在一台或多台机器上运行相同的代码,因此非常适合。

类似以下结构的东西可以工作。

import numpy as np
import ray

ray.init()

@ray.remote
def do_object_detection(image, index):
image_slice = image[index]
# Do object detection.
return 1

# Store the object in shared memory.
image = np.ones((1000, 1000))
image_id = ray.put(image)

# Process the slices in parallel. You probably want to use 2D slices instead
# of 1D slices.
result_ids = [do_object_detection.remote(image_id, i) for i in range(1000)]
results = ray.get(result_ids)

请注意,执行 do_object_detection 任务的工作人员不会创建自己的图像副本。相反,他们将有权访问共享内存中的图像副本。

如果您已经将图像放在单独的文件中,另一种方法是执行如下操作。

import numpy as np
import ray

ray.init()

@ray.remote
def do_object_detection(filename):
# Load the file and process it.
return 1

filenames = ['file1.png', 'file2.png', 'file3.png']

# Process all of the images.
result_ids = [do_object_detection.remote(filename) for filename in filenames]
results = ray.get(result_ids)

关于python - 使用多重处理有效地切片和读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55096530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com