如果我有张量以以下形状保存有关检测到的图像的信息:
[[595.00000, 179.62500, 628.00000, 283.00000, 0.89062, 0.00000],
[142.87500, 167.62500, 201.62500, 324.00000, 0.88086, 0.00000],
[311.75000, 170.50000, 368.75000, 320.50000, 0.87549, 0.00000],
[555.50000, 173.75000, 593.50000, 280.50000, 0.85791, 0.00000],
[398.50000, 179.00000, 425.50000, 265.00000, 0.84180, 0.00000],
[445.75000, 177.75000, 479.25000, 270.75000, 0.82129, 0.00000]]
其中每一行代表具有以下参数的图像:
[ top, bottom, left, right, confidence, class ]
删除尺寸小于某些用户定义的高度输入的图像(行)的最有效方法是top-bottom
什么?
自然,我会遍历行,而不是top-bottom < someValue
通过理解列表将每一行放到哪里,但是我怀疑这样做会有更好的方法。
我如何降低一些基准测试(如果这对您来说很有趣)?
基准测试
PyTorchic方式:
In[2]: import torch
...: a = torch.Tensor(
...: [[595.00000, 179.62500, 628.00000, 283.00000, 0.89062, 0.00000],
...: [142.87500, 167.62500, 201.62500, 324.00000, 0.88086, 0.00000],
...: [311.75000, 170.50000, 368.75000, 320.50000, 0.87549, 0.00000],
...: [555.50000, 173.75000, 593.50000, 280.50000, 0.85791, 0.00000],
...: [398.50000, 179.00000, 425.50000, 265.00000, 0.84180, 0.00000],
...: [445.75000, 177.75000, 479.25000, 270.75000, 0.82129, 0.00000]])
In[3]: %timeit a[a[:, 0] - a[:, 1] > 300]
Out[3]: 24.5 µs ± 904 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
用数字表示:
In[4]: import numpy as np
In[5]: %timeit np_arr[np.where(np_arr[:, 0] - np_arr[:, 1] > 300)]
Out[5]: 4.75 µs ± 713 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
In[6]: np_arr[np.where(np_arr[:, 0] - np_arr[:, 1] > 300)]
公平
In[7]: torch.equal(torch.from_numpy(np_arr[np.where(np_arr[:, 0] - np_arr[:, 1] > 300)]), a[a[:, 0] - a[:, 1] > 300])
Out[7]: True
结论是,使用numpy进行比较将比PyTorch更快。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句