小编Y.A*_*.AL的帖子

使用OpenCV进行不稳定的人脸识别

我正在开发一个用于人脸识别的Android应用程序,使用JavaCV,它是OpenCV的非官方包装器.导入后com.googlecode.javacv.cpp.opencv_contrib.FaceRecognizer,我应用并测试以下已知方法:

  • LBPH使用createLBPHFaceRecognizer()方法
  • FisherFace使用createFisherFaceRecognizer()方法
  • EigenFace使用createEigenFaceRecognizer()方法

在我识别出检测到的脸部之前,我会校正旋转的脸部并裁剪出适当的区域,从而激发了这种方法

一般情况下,当我传递相机时,数据库中已存在一个面,识别就可以了.但这并不总是正确的.有时它很有可能识别未知面部(在训练样本的数据库中找不到).当我们在DB中有两个或更多相似特征的面孔(胡须,小胡子,眼镜......)时,这些面孔之间的识别可能会非常错误!

要使用测试面部图像预测结果,我应用以下代码:

public String predict(Mat m) {

        int n[] = new int[1];
        double p[] = new double[1];
        IplImage ipl = MatToIplImage(m,WIDTH, HEIGHT);

        faceRecognizer.predict(ipl, n, p);

        if (n[0]!=-1)
         mProb=(int)p[0];
        else
            mProb=-1;
            if (n[0] != -1)
            return labelsFile.get(n[0]);
        else
            return "Unkown";
    }
Run Code Online (Sandbox Code Playgroud)

我无法控制概率p的阈值,因为:

  • 小p <50可以预测正确的结果.
  • 高p> 70可以预测错误结果.
  • 中间p可以预测正确或错误.

同样,我不明白为什么在使用LBPH时,为什么predict()函数有时会出现大于100的概率?在Fisher和Eigen的情况下,它给出了非常大的值(> 2000)?? 有人可以帮助找到这些奇怪问题的解决方案吗?是否有任何建议可以提高认可的稳健性?特别是在两个不同面孔相似的情况下.

以下是使用Facerecognizer的整个类:

package org.opencv.javacv.facerecognition;

import static  com.googlecode.javacv.cpp.opencv_highgui.*;
import static  com.googlecode.javacv.cpp.opencv_core.*;

import static  com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_contrib.*;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter; …
Run Code Online (Sandbox Code Playgroud)

java android opencv face-recognition javacv

22
推荐指数
1
解决办法
7178
查看次数

减少Bitbucket上git存储库的大小

经过几个月(提交和推送)我的项目,存储库的大小在Bitbucket上逐渐增加!它大约是1 GB,我试图删除一些不重要的数据库文件夹.搜索后我发现大多数建议都是建议:

git filter-branch -f --tree-filter 'rm -rf folder/subfolder' HEAD
Run Code Online (Sandbox Code Playgroud)

删除几个文件夹后,我将更改推送到存储库 - 强制,如

git push origin master --force
Run Code Online (Sandbox Code Playgroud)

我终于发现每次使用这些命令时存储库都会变大!! 可见,存储库变大了2.5 GB!

有什么建议吗?

编辑 根据下面的建议,我尝试了以下命令
(适用于所有大文件)

git filter-branch --index-filter"git rm -rf --cached --ignore-unmatch $ files"--tag-name-filter cat - --all

(删除临时历史git-filter-branch,否则长时间留下)

rm -rf .git/refs/original /

git reflog expire --all
git gc --aggressive --prune
Run Code Online (Sandbox Code Playgroud)

但文件夹.git/objects仍然很大!!!!

git bitbucket

5
推荐指数
1
解决办法
1353
查看次数

深度学习与机器学习

我已经练习了一些机器学习方面,并开发了一些小项目.如今一些嘈杂的博客,文章,公开帖子谈论深度学习.我很想知道机器学习和深度学习之间的区别,也许是学习一种称为深度学习的新方法/技术.我读过很少的博客,但从概念上讲,深度学习是机器学习的一个子集,它只不过是具有多层次的神经网络!然而,我感到惊讶和困惑,以确认它是机器学习和深度学习之间的唯一区别!如果我们只想谈论神经网络,那么考虑深度学习而不是机器学习的优点是什么?所以,如果是,为什么不称它为神经网络,或深度神经网络来区分某些分类?真的不同于我提到的吗?是否有任何实际例子显示出让我们做出这些不同观念的重大差异?

machine-learning neural-network deep-learning

-8
推荐指数
1
解决办法
1378
查看次数