2016-11-22 83 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