首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像检测的嵌套循环永远需要运行100 mil次

图像检测的嵌套循环永远需要运行100 mil次
EN

Stack Overflow用户
提问于 2019-05-06 00:34:24
回答 1查看 64关注 0票数 1

我正在为一篇论文做一些工作,我必须在不同的图像上尝试一些滤镜,看看物体是否被检测到。一切都很好,但我的意图是将4个滤镜(对比度,模糊和其他)中的每一个逐渐应用100个不同的度数,看看它在哪里停止正确检测。

我会将它们组合在一起,例如,首先将一些图像导入到帧中,然后尝试通过添加" 0%“对比度、" 0%”模糊、"0%“调整大小、"0%”噪声、下一轮1%对比度、其他图像都为0%、然后是2%对比度、其他图像为0%来进行检测,直到对比度达到100%。下一个循环应该做同样的事情,但是有1%的模糊,0%的调整大小,0%的噪声。然后是2%模糊,0%,0%,等等--所有的组合。

但这意味着它需要进行100^4次迭代(如果我想要100度和4个过滤器,则需要1亿次迭代)。我目前用OpenCV实现的YOLOv3-320以大约0.5秒的速度执行检测。这意味着完成一张图片的测试大约需要580天。

代码语言:javascript
复制
def tester(depth, correct_answer):
container_a = []

for a in range(depth):
    print((a*(100/depth)))
    frame1 = apply_sepia(frame, int((a*(100/depth))))
    container_b = []

    for b in range(depth):
        frame2 = apply_blur(frame1, int((b*(100/depth))))
        container_c = []

        for c in range(depth):
            frame3 = sp_noise(frame2, int((c*(100/depth))))
            container_d = []

            for d in range(depth):
                frame4 = image_resize(frame3, int((d*(100/depth))))

                try:
                    net.setInput(cv.dnn.blobFromImage(frame4, 1/255, (vers, vers), [0,0,0], 1, crop=False))
                    result = postprocess(net.forward(getOutputsNames(net)))

                    if result == correct_answer:
                        container_d.append(1)
                    else:
                        container_d.append(0)

                except Exception as e:
                    container_d.append(0)

            container_c.append(container_d)

        container_b.append(container_c)

    container_a.append(container_b)

return container_a

我怎么才能加快速度呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 02:11:06

我将把这作为一个答案,以便有更多的空间来说明我的观点。

我用“高参数分辨率”这个术语来描述小步迭代你的参数。

假设你的算法在18%的噪声下失败了,而噪声是你唯一变化的东西。

然后,执行1%的增量将导致您的对象检测在您运行的第19次迭代中失败。

使用更大的步骤进行筛选,例如10%,当您测试20%的噪声时,将导致您的算法在第三次迭代中失败。然后,你就知道你的算法在10%到20%的噪声之间失败了。你现在可以使用像bisection这样的东西来询问,如果算法失败超过或低于15%,那么在这之后,高于或低于17.5%。

因此,在这种方法中,您总共运行算法五次,并得到与暴力方法相同的答案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55994120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档