【发布时间】:2019-07-16 14:53:47
【问题描述】:
我试图通过在图像上覆盖蒙版像素来可视化 python 中图像的二进制蒙版。图像尺寸为 360 x 640 像素。我的可视化运行速度非常慢(每个蒙版 0.6 秒),我对代码进行计时并将瓶颈固定为将二进制蒙版转换为可以添加到图像中的颜色蒙版。我尝试了几种方法。
首先我尝试了一个列表理解:
color_mask = [[[50,50,50] if val == 1 else [0,0,0] for val in mask_row] for mask_row in mask]
它在大约 0.6 秒内运行
然后我尝试在一个 numpy 数组上使用掩码分配,它运行了大约 1.2 秒(出奇的慢)
color_mask = np.zeros(shape=(image.shape))
color_mask[output_dict["detection_masks"][0]] = [50,50,50]
生成颜色蒙版后,我将其添加到原始图像中以可视化图像上的蒙版。我希望能够使用多达 20 个蒙版实时运行此可视化。
为什么掩码分配和列表理解这么慢?我怎样才能加快其中之一的速度?
您可以像这样构建一个用于测试的掩码:
mask = np.zeros(shape=(563,750,1))
mask[50:200,50:200,:] = 1
【问题讨论】:
-
您可以发布您的
mask的可测试片段吗? -
mask = np.zeros(shape=(563,750,1)) mask[50:200,50:200,:] = 1您可以将其用作测试掩码。我使用的掩码是来自 tensorflow 的 mask-rcnn,所以要在新机器上运行部分代码并不容易。
标签: python performance numpy computer-vision