gpt4 book ai didi

python - OpenCV CascadeClassifier Python 内存不足

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:46 27 4
gpt4 key购买 nike

这是我的代码:

def load_cascades():
cascades = []
for root, dirs, files in os.walk(rooted('data/logos')):
for fname in files:
if fname == 'cascade.xml':
path = os.path.join(root, fname)
cascade = cv2.CascadeClassifier(path)
cascades.append(cascade)
return cascades


cascades = load_cascades()


def get_heuristics(pair):
url = pair[0]
image = pair[1]
matches_any_logos = False

for cascade in cascades:
frame = cv2.imread(image, 0)

logos = cascade.detectMultiScale(
image=frame,
minNeighbors=5,
minSize=(25, 25),
)

if len(logos) > 0:
matches_any_logos = True

return {
'matches_any_logos': matches_any_logos,
'matches_corresponding_urls': matches_corresponding_urls,
}


class LogoDetectionVectorizer(DictVectorizer):

def fit(self, x, y=None):
x = [get_heuristics(v) for v in x]
return super(LogoDetectionVectorizer, self).fit(x)

def fit_transform(self, x, y=None):
x = [get_heuristics(v) for v in x]
return super(LogoDetectionVectorizer, self).fit_transform(x)

def transform(self, x, y=None):
x = [get_heuristics(v) for v in x]
return super(LogoDetectionVectorizer, self).transform(x)

这是模型训练机器学习算法中的一个模块,我有一组与我训练过的 Logo 相关的训练模型,但是当我尝试在大型数据集上训练模型时,出现此错误:

cv2.error: /io/opencv/modules/core/src/matrix.cpp:436: error: (-215) u != 0

并且opencv报告内存不足。我不懂为什么?我只是一次创建所有级联然后多次使用它们,我看到某个地方我需要在每次迭代后调用 cascade.deallocate() 然后重新创建级联但是 python 声称 cascade.desallocate() 不存在以及每次都必须重新创建级联的明显性能损失。

有人可以帮忙吗?谢谢

最佳答案

我发现了问题,就在我需要调用 cascade.detectMultiScale 之后

del frame

由于某些原因,OpenCV 在读入图像且变量超出范围时不会释放内存,我已在 GitHub 上报告了此内存泄漏

关于python - OpenCV CascadeClassifier Python 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50447893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com