我有很多高分辨率的图像(~15k),我在这些图像上运行了一个实例分割模型,并为每个图像提取了几个片段掩码(只存储了输出-像素分类值)
我想运行我的每个图像,现在将图像的每个特定部分存储在单独的文件中——我已经编写了相当矢量化的代码来使用numpy实现这一点。 我的问题是,我有很多图像,因为它们的分辨率非常高,即使我的代码是矢量化的,但每个掩码需要相当长的时间,并且存在很多掩码。 最好的加速方法是什么?我探索过的方法:
1.DASK-通读一段时间,但我对它了解不多,也不确定它在读取、处理和写入图像数据时会有多大帮助。
2.多线程/多处理-已经读到这里的最佳方法取决于应用程序是否是IO/CPU绑定的-不确定使用什么,因为IO操作和CPU处理似乎都是这里的问题
代码基本上是这样的-
import pandas as pd
data_folder = 'images/'
output_save_folder = 'saves'
def save_mask(row):
#Some code here
#save extracted mask at output_save_folder
mask_data = pd.DataFrame({'image_path':['foo.jpg','bar.jpg'],'masks':[[.1,.52,.31],[.73,.48,.92]],[[.12,.34,75]]})
#data looks like this ^
mask_data.apply(save_mask,axis=1)
我愿意使用任何可以使用Python的方法
最后,我使用了python的带池的多处理模块,它将占用的时间减少了进程数的一倍(进程数小于当前的CPU核数)。 达斯克花了很长时间才明白我的要求和知识的缺乏。多处理非常容易理解和使用
相关问题 更多 >
编程相关推荐