如何在运行trainACFObjectDetector()时管理RAM使用

1次查看(最近30天)
苏格兰人主教
苏格兰人主教 2020年3月15日
回答: 瑞安Comeau2020年5月5日
在我正在做的一个项目中,我正在使用 牛津的手数据集 来检测图像中的手。
我把训练数据整合到一个Ground Truth数据源中 groundTruth () 函数。
所有这些都可以,但是当我使用 trainACFObjectDetector () 功能,系统只是继续使用RAM直到 MATLAB就崩溃
有没有一种方法,我可以告诉MATLAB来管理RAM,在训练时使用?我远没有达到我想要训练的图像数量(至少1000张),也远没有达到迭代阶段的数量。
我使用的系统大约有90gb内存。我想这应该足够了……
我在想,一定有一种方法可以让训练算法扔掉它不需要的内存,而不是在整个训练过程中越来越多地消耗内存。
提前感谢任何提供帮助的人!

答案(1)

瑞安Comeau
瑞安Comeau 2020年5月5日
你好,
我也有过使用MATLAB RAM的有趣经历。不过,我可以简单解释一下是什么导致内存被填满了很多。这是我个人的经验,我没有客观的衡量标准。
  1. 我看到这个特殊的计算机视觉使用表格来读取数据。可能是同时读取所有表和加载图像。你需要的是图像数据存储(imds)。//www.tianjin-qmedu.com/help/matlab/ref/matlab.io.datastore.imagedatastore.html和盒标签数据存储(blds)//www.tianjin-qmedu.com/help/vision/ref/boxlabeldatastore.html。这些只会加载当前正在使用的图像。
  2. 您必须查看您的网络架构,并考虑您正在使用的卷积核,以及您的卷积使用了多少中间信息。如果你有一个2000x2000的图像,带有一个2x2像素的卷积过滤器,步幅为1,那么很多中间信息都被使用了。如果你用5像素的步幅制作一个7x7的过滤器,中间信息会更少
  3. 我不熟悉这个特定的对象检测器,但是批大小对RAM使用有很大的影响。如果你使批处理的大小更小,它将减少正在使用的RAM,并有希望防止崩溃。
希望这有助于
钢筋混凝土