HMAX模型中C2层后使用osusvm识别人脸

     2023-03-16     86

关键词:

【中文标题】HMAX模型中C2层后使用osusvm识别人脸【英文标题】:Use the osusvm to recognize faces after the C2 layer in HMAX model 【发布时间】:2014-01-22 13:59:52 【问题描述】:

我实现了原始HMAX模型的计算,得到了C2层的结果。现在我仍然有调整层,换句话说,可以使用 osusvm。

在我的项目中,我有两个目录。一个包含训练图像,另一个包含测试图像。

参考:lennon310 在Training images and test images的回复

首先,我想向您展示我在 C2 层的结果(当然结果应该是向量)。请注意,我在 S2 层只提取了 2 个原型(在我的项目中我使用了 256 个原型,但仅在这个问题中,假设我只使用了 2 个原型),以及四个原型大小:[4 8 12 16]。因此,对于每张图像,我们得到 8 个 C2 单元(2 个原型 x 4 个补丁大小 = 8)。

C2res1:对于六张训练图像:

0.0088    0.0098    0.0030    0.0067    0.0063    0.0057    
0.0300    0.0315    0.0251    0.0211    0.0295    0.0248           
0.1042    0.1843    0.1151    0.1166    0.0668    0.1134            
0.3380    0.2529    0.3709    0.2886    0.3938    0.3078           
0.2535    0.3255    0.3564    0.2196    0.1681    0.2827          
3.9902    5.3475    4.5504    4.9500    6.7440    4.4033          
0.8520    0.8740    0.7209    0.7705    0.4303    0.7687       
6.3131    7.2560    7.9412    7.1929    9.8789    6.6764 

C2res2:对于两个测试图像:

0.0080    0.0132
0.0240    0.0001
0.1007    0.2214
0.3055    0.0249
0.2989    0.3483
4.6946    4.2762
0.7048    1.2791
6.7595    4.7728

其次,我下载了osu-svm matlab工具箱并添加了它的路径:

addpath(genpath('./osu-svm/')); %put your own path to osusvm here


 useSVM = 1; %if you do not have osusvm installed you can turn this
            %to 0, so that the classifier would be a NN classifier
        %note: NN is not a great classifier for these features

然后我使用下面的代码:

%Simple classification code
XTrain = [C2res1]; %training examples as columns 
XTest =  [C2res2]; %the labels of the training set
ytrain = [ones(size(C2res1,2),1)];%testing examples as columns
ytest = [ones(size(C2res2,2),1)]; %the true labels of the test set
if useSVM
  Model = CLSosusvm(XTrain,ytrain);  %training
  [ry,rw] = CLSosusvmC(XTest,Model); %predicting new labels
else %use a Nearest Neighbor classifier
  Model = CLSnn(XTrain, ytrain); %training
  [ry,rw] = CLSnnC(XTest,Model); %predicting new labels
end  
succes-s-rate = mean(ytest==ry) %a simple classification score

上面的代码是真的吗?为什么我总是得到 succes-s-rate=1 ?我认为我在某些地方是错误的。请我需要帮助。如果是真的,还有另一种计算方法吗?为了获得更性感的结果,我可以使用什么来代替成功率?

注意:

函数 CLSosusvm 是:

function Model = CLSosusvm(Xtrain,Ytrain,sPARAMS);
%function Model = CLSosusvm(Xtrain,Ytrain,sPARAMS);
%
%Builds an SVM classifier
%This is only a wrapper function for osu svm
%It requires that osu svm (http://www.ece.osu.edu/~maj/osu_svm/) is installed and included in the path
%X contains the data-points as COLUMNS, i.e., X is nfeatures \times nexamples
%y is a column vector of all the labels. y is nexamples \times 1
%sPARAMS is a structure of parameters:
%sPARAMS.KERNEL specifies the kernel type
%sPARAMS.C specifies the regularization constant
%sPARAMS.GAMMA, sPARAMS.DEGREE are parameters of the kernel function
%Model contains the parameters of the SVM model as returned by osu svm





Ytrain = Ytrain';

if nargin<3
  SETPARAMS = 1;
elseif isempty(sPARAMS)
  SETPARAMS = 1;
else
  SETPARAMS = 0;
end

if SETPARAMS
  sPARAMS.KERNEL = 0;
  sPARAMS.C = 1;
end

switch sPARAMS.KERNEL,
  case 0,
    [AlphaY, SVs, Bias, Parameters, nSV, nLabel] = ...
    LinearSVC(Xtrain, Ytrain, sPARAMS.C);
  case 1,
    [AlphaY, SVs, Bias, Parameters, nSV, nLabel] = ...
    PolySVC(Xtrain, Ytrain, sPARAMS.DEGREE, sPARAMS.C, 1,0);
  case 2,
    [AlphaY, SVs, Bias, Parameters, nSV, nLabel] = ...
    PolySVC(Xtrain, Ytrain, sPARAMS.DEGREE, sPARAMS.C, 1,sPARAMS.COEF);
  case 3,
    [AlphaY, SVs, Bias, Parameters, nSV, nLabel] = ...
    RbfSVC(Xtrain, Ytrain, sPARAMS.GAMMA, sPARAMS.C);    
end

Model.AlphaY = AlphaY;
Model.SVs = SVs;
Model.Bias = Bias;
Model.Parameters = Parameters;
Model.nSV = nSV;
Model.nLabel = nLabel;
Model.sPARAMS = sPARAMS;

函数 CLSosusvmC 是:

function [Labels, DecisionValue]= CLSosusvmC(Samples, Model);
%function [Labels, DecisionValue]= CLSosusvmC(Samples, Model);
%
%wrapper function for osu svm classification
%Samples contains the data-points to be classified as COLUMNS, i.e., it is nfeatures \times nexamples
%Model is the model returned by CLSosusvm
%Labels are the predicted labels
%DecisionValue are the values assigned by the Model to the points (Labels = sign(DecisionValue))

[Labels, DecisionValue]= SVMClass(Samples, Model.AlphaY, ...
                                  Model.SVs, Model.Bias, ...
                  Model.Parameters, Model.nSV, Model.nLabel);
Labels = Labels';
DecisionValue = DecisionValue';

【问题讨论】:

Christina,你只有两张测试图像,你很有可能达到 100% 的准确率,不是吗?可以打乱数据,从8个中重新选择2个作为测试 所以我的代码是真的吗?成功率数值决定准确性?如果它等于 1,这指的是 100% 的准确率? 准确的值是什么意思?测试中的 2 个面孔是否 100% 被识别?如果我得到值 0,那么测试图像就无法识别? 【参考方案1】:

你的代码在我看来不错。

由于您只有 2 张测试图像,因此可能的成功率将限制为 0、0.5、1。预计以 25% 的概率达到 100% 的准确率([0 1],[1 0] ,[1 1],[0 0])。你可以打乱数据,从8个中重新选择2个作为测试,然后观察准确性。

同时尝试将more images 添加到训练和测试样本中。

【讨论】:

【参考方案2】:

机器学习对 8 张图像的集合几乎没有意义。收集至少 10 倍以上的数据,然后分析结果。有了这么小的数据集,任何结果都是可能的(从 0% 到 100%),而且没有一个是可靠的。

同时你可以尝试重复交叉验证:

    随机播放数据 将其拆分为两个元素部分( [1 2][3 4][5 6][7 8] ) 对于每个这样的部分: a)对其进行测试,同时对其余部分进行培训,例如: 在 [3 4 5 6 7 8] 上训练并在 [1 2] 上测试 b) 记录平均分 重复整个过程并报告均值分数

【讨论】:

我的代码是对的吗?是否存在另一种计算准确性的方法?就我而言,我使用了平均分。例如,如何以另一种方式计算准确性以获得更性感的结果? 你能给我一个有效的链接来下载训练面和测试面吗? 首先 - 我没有审查你的代码,所以是关于提出具体的问题和问题,要求免费的代码审查有点......粗鲁。我只是简要解释了这种行为背后最可能的原因。其次,SO 不是一个寻求资源的论坛,谷歌这样的东西,网上有很多这样的数据集,表现出一些参与度。

如何从视频中识别人脸识别中的未知人?

...ideos?【发布时间】:2017-08-2811:28:29【问题描述】:我正在使用PhilippWagner的视频中的面部识别,我更新了代码以使用opencv3.2,之后我很难创建合适的面部数据库,但我的问题是我该如何给出未知人的值?到目前为止,当我运行我... 查看详情

如何在没有训练的情况下识别人脸

...要一种方法来检查是否已经检测到特定的面部。我曾尝试使用训练程序识别模板图像以避免多次计算同一张脸,但由于只有一个模板,因此系统严重不准确 查看详情

Apple Vision Framework 识别人脸

】AppleVisionFramework识别人脸【英文标题】:AppleVisionFrameworkIdentifyface【发布时间】:2018-11-0213:01:18【问题描述】:AppleVisionFramework中是否可以比较面孔并识别该人是否在图片中与该人的参考图像进行比较?类似于Facebook人脸识别。... 查看详情

使用分类器进行面部识别的迁移学习

...:18:30【问题描述】:我想知道是否可以使用Inception或ResNet模型来识别人脸。我想知道迁移学习和培训对我的任务是否重要。我只想能够识别人脸,但我也很好奇是否可以为我的任务重新训练/优化预训练模型。还是我读错了;我... 查看详情

刷脸背后:人脸检测人脸识别人脸检索_张重生资料整理

 人脸识别是当今热门的研发方向,在安防、金融、旅游等领域具有十分广泛的应用。本书全面、系统地介绍“刷脸”背后的技术,包括人脸检测、人脸识别、人脸检索相关的算法原理和实现技术。本书中讲解的算法具... 查看详情

人脸识别人脸识别损失函数学习笔记

目录一、sphereface:A-Softmax(CVPR2017)1.1传统的softmaxLoss(第二章中有更详细的公式解释):1.2sphereface对softmax进行了两点改进:1.3sphereface弊端二、CosFace(CVPR2018)1softmaxloss的不同变种1.1原始的softmaxloss:1.2归一化s 查看详情

中科院deepmind联手,用深度学习揭示大脑如何识别人脸|nature子刊

...应某个具体特征。△图源MartaGarnelo此外,他们构建的模型利用少量神经元的信号就能还原出整个面部图像ÿ 查看详情

机器学习原来如此有趣:用深度学习识别人脸

本系列文章目前已经更新两期,分别是: 机器学习原来如此有趣!全世界最简单的机器学习入门指南、 机器学习原来如此有趣:如何故意欺骗神经网络 你是否有注意到Facebook最近开发了一个非同寻常的功能:将你照... 查看详情

ai之opencvsharp安卓手机摄像头识别人脸

OpenCvSharp是OpenCv的包装器,相当于底层是OpenCv只是用.Net的方式调用底层的接口的实现,所以,从OpenCv的知识架构来讲,源码是一样一样的。就是换个语言写而已。1.OpenCvSharp尽可能地以原生OpenCVC/C++API风格为... 查看详情

高科技应用之人脸识别人证比对

...人脸检测①参考模板法②人脸规则法③样品学习法④肤色模型法⑤特征子脸法(2)人脸跟踪(3)人脸比对①特征向量法②面纹模板法二、技术流程人脸识别系统主要包 查看详情

opencv中lbph人脸识别器识别人脸实战(附python源码)(代码片段)

...shold)radius:可选参数圆形局部二进制模式的半径,建议使用默认值neighbors:可选参数,圆形局部二进制模式的采样点数目,建议使用默认值grid_x:可选参数水平方向上的的单元格数,建议使用默认值grid_y:可选参... 查看详情

人脸识别的人像处理流程是怎样的?

...取原始图像会受到各种条件的限制和干扰,通常不能直接使用,必须在处理图像的早期阶段进行校正、音频过滤等处理。在处理图像的过程中通常会做一些光线补偿、归一化、滤波和锐化等等。3、提取人脸特征图像人脸识别系... 查看详情

人脸识别介绍

人脸识别人脸识别技术是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫... 查看详情

dlib人脸识别(代码片段)

...成?jupyternotebook是一个工具?pipinstalljupyter------------>安装使用?如何启动:?命令行输入:jupyternotebook?前提,环境变量配置成功??dlib安装------------->pipinstalldlib?dlib有不同的版本,最新版本(19.17.0),经过测试,dll包不完备,所以... 查看详情

v831——人脸识别开锁(代码片段)

V831文章目录V831前言一、读取模型文件二、识别人脸1.找人脸2.添加人脸3.识别人脸三、代码实现总结人脸开锁前言前面做了关于人脸识别的项目,后续会发出来,下午顺便做了一个人脸识别开锁,通过录入人脸,... 查看详情

我们可以在模拟器中测试 Face ID 吗?

...or?【发布时间】:2018-04-1922:07:24【问题描述】:我们可以使用模拟器测试生物特征认证吗?iPhoneX模拟器显示了一个面容ID注册菜单,但启用后,我该怎么办?它将如何识别人脸进行身份验证?【问题讨论】:【参考方案1】:模... 查看详情

基于yolo_v5训练识别人物(代码片段)

...具&环境准备2.1安装必要环境工具2.2获取yolov5源码三、模型训练基于yolo_v5训练识别人物一、文章前言文章分享yolo模型训练和部署二、工具&环境准备2.1安装必要环境工具IDE:使用Pycharm2021社区版,推荐安装参考博文&#x... 查看详情

基于yolo_v5训练识别人物(代码片段)

...具&环境准备2.1安装必要环境工具2.2获取yolov5源码三、模型训练基于yolo_v5训练识别人物一、文章前言文章分享yolo模型训练和部署二、工具&环境准备2.1安装必要环境工具IDE:使用Pycharm2021社区版,推荐安装参考博文&#x... 查看详情