首页 > 解决方案 > 创建一个给定边界框的蒙版

问题描述

arr = []
j =0 
for img in train['image_id'].unique():
    bbox = train[train['image_id'] == img]   #bbox[0] = x ,similarly others 
    template = np.zeros((1024,1024))
    j+=1
    for i in train.itertuples():
        template[i._6:i._6 + i._8  ,  i._7:i._7 + i._9] = 1 
    arr.append(template)

这里 i._6 , i._8 , i._7 , i._9 是边界框的值
有没有办法让这段代码快速

标签: python-3.xnumpy

解决方案


当您使用 numpy 时,您可以使用numbaJIT 编译器轻松获得一些速度增强。

from numba import jit

@jit
def myfunction()..

这将编译您的代码并将其缓存,因此第一次调用可能会更快,随后对该函数的调用可能会非常快。

但是,您还应该调查代码中实际变慢的原因并尝试改进它。

这称为分析,可以通过标准库来完成cProfile(也存在更​​专业的 3rd-party 包)

SnakeViz是一个简单的输出文件查看器cProfile

python -m cProfile -o program.profile my_program.py
snakeviz program.profile

您可能会看到速度改进,尽可能用等价物替换 Python 结构(例如tuplesfor循环) 。numpy


推荐阅读