2016-11-22 79 views
1

我以下这里的例子: http://docs.opencv.org/2.4/modules/contrib/doc/facerec/tutorial/facerec_save_load.html最小化FaceRecognizer加载时间

Ptr<FaceRecognizer> model0 = createFisherFaceRecognizer(); 
model0->train(images, labels); 
model0->save("faces_at.yml"); // save the model to faces_at.yaml 

的问题是,保存文件的大小大,它随着数字的输入(这是我训练我的模型上)增加。有什么办法可以减小文件大小吗?由于我的应用程序的性质,我需要重复加载我的预测变量,这使得一切都非常缓慢。 保存完文件后,我没有进行任何培训,我只用预测的faceRecognizer进行预测。

当我看着YAML的文件,似乎模型保存的事情之一,是这样的:

eigenvectors: !!opencv-matrix 
    rows: 10304 
    cols: 29 

其中29是投入10304 = 92x112数量和图像的分辨率。该算法是否需要这些数据进行预测?

我可以修改正在保存的内容和正在加载的内容,以便减少需要保存的数据量吗?如果是这样,那么需要保存什么以及我应该在哪里更改?

回答

0

最简单的事情就是减少输入面的大小。 92x112图像看起来很小,但识别应该在小得多的图像上正常工作。

+0

问题是,即使如此,它仍然依赖于样本数量。我不明白为什么特征向量具有29(样本大小)列和10304(92x122)行 – Hossein

+0

它们将总是具有与像素一样多的行,并且您有太多像素。二十九个特征向量并不多,但你可以告诉它节省更少。 http://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_api.html#FaceRecognizer%20:%20public%20Algorithm – Aaron