【发布时间】:2017-04-10 06:43:50
【问题描述】:
有几种尝试使用 SIMD 指令优化 HOG 描述符的计算:OpenCV、Dlib 和 Simd。它们都使用标量代码将结果幅度添加到 HOG 直方图:
float histogram[height/8][width/8][18];
float ky[height], kx[width];
int idx[size];
float val[size];
for(size_t i = 0; i < size; ++i)
{
histogram[y/8][x/8][idx[i]] += val[i]*ky[y]*kx[x];
histogram[y/8][x/8 + 1][idx[i]] += val[i]*ky[y]*kx[x + 1];
histogram[y/8 + 1][x/8][idx[i]] += val[i]*ky[y + 1]*kx[x];
histogram[y/8 + 1][x/8 + 1][idx[i]] += val[i]*ky[y + 1]*kx[x + 1];
}
size 的值取决于实现,但通常含义相同。
我知道histogram calculation with using of SIMD的问题没有简单有效的解决方案。但在这种情况下,我们有小尺寸(18)的直方图。它可以帮助 SIMD 优化吗?
【问题讨论】:
-
你可能会发现this paper很有用
标签: c++ opencv simd dlib simd-library