python-3.x - 创建一个给定边界框的蒙版
问题描述
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 是边界框的值
有没有办法让这段代码快速
解决方案
当您使用 numpy 时,您可以使用numba
JIT 编译器轻松获得一些速度增强。
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 结构(例如tuples
和for
循环) 。numpy
推荐阅读
- powershell - 如果在特定组中,则运行 powershell 脚本
- r - 我可以在 Xaringan 中结合磁贴视图和演示者模式吗?
- xss - 在这种情况下是否可以使用 XSS 负载?
- reactjs - React:可加载组件增加 Cumulative Layout Shift (CLS)
- python - 如何更改networkx图中的节点位置?
- firebase - 如何从 Firebase Firestore 中检索 CollectionReference 并使用 Flutter 对其进行排序
- python - 安装python后的VSCode在选择解释器时显示错误
- c++ - 如何使用 C++ boost 库创建带有 write_json 和 read_josn 的通用函数
- python - 如果在 response.read 后出现错误消息的条件
- python - Pandas:将日期转换为可用格式和计算周期