`
473687880
  • 浏览: 483683 次
文章分类
社区版块
存档分类
最新评论

Matlab图像处理:类内、类间测试的次数控制

 
阅读更多

现在假设,有10个人的人脸,每个人有10幅人脸样本,一共100幅人脸。

类内测试:

如果采用1:1认证的方式,那么类内,也就是同类进行认证测试,每个人最多可以测试(9+8+7...1)=(9*(9+1))/2. 可以这么理解,第一个人脸和后面9个依次认证依次,然后第二个人脸和后面8个依次认证,最后求和。【等差数列的求和:(n*(n+1)*d)/2 】 因为是10个人,所以类内一共可以测试10*9*(9+1)/2次。

总结如下:

有N类志愿者,每类志愿者有M个样本,则采样1:1认证的方式,一共可以类内测试次数Leinei = N*(M-1)*M/2次。

类间测试:

如果还是1:1的认证方式。那么对于第一号志愿者,10幅样本里的任意一幅都可以和下面的9个人的90幅人脸一一测试,总共认证10*90,第二类志愿者共认证10*80。倒数第二个志愿者,可以和最后一个志愿者认证10*10.

总认证次数是900+800+。。。+100 = 9*10*100/2

总结如下:

有N类志愿者,每类志愿者有M个样本,则采样1:1认证的方式,一共可以类间测试次数Leijian= M*M*N*(N-1)/2次。

至于类内测试,很好弄,一般取最大测试次数就可以了。至于类间测试,由于次数很大,是个平方级别的。如果不需要取嫩大,可以假定次数为500次,或1000次,利用matlab生成随机数的方法进行测试。下面我给一个demo,程序的输入参数是有多少个志愿者及类间测试的次数。输出为测试出的类间海明距离。

%%
%##########################################################################
%求类间海明距离的函数
%1,第一个参数n表示有多少个志愿者,这里假定每个人10个样本
%2,第二个参数表示作多少次计算
%##########################################################################
function out = YanLeiJian(n, cnt)


p = 'E:\ROI\0101.jpg';
testP = p;
Rate = [];
for i=1:cnt
    randPerson = randperm(n);
    trainPerson = randPerson(1);  %%找到训练的那个人
    testPerson = randPerson(2);   %%%找到测试的那个人

    %%%%%%%%找到训练的person
    if trainPerson<10
        person = ['0' int2str(trainPerson)];
    else
        person = int2str(trainPerson);
    end
    disp(['待认证的志愿者编号:' person]);
    
    %%%%%%%%找到测试的person
    if testPerson<10
        person2 = ['0' int2str(testPerson)];
    else
        person2 = int2str(testPerson);
    end
    
    %%%%%%%%%%%%%找到测试的那个人的那个随机的照片
    randId = randperm(10);
    if randId(3)<10
        id = ['0' int2str(randId(3))];
    else
        id = int2str(randId(3));
    end
    
   %%%%%%%%%%%%%%%%%定位测试图片路径
   testP(8:9) = person2;
   testP(10:11) = id;
   disp(['测试样本:' testP]);
   rate = YanPiPei(person, testP);
   Rate = [Rate rate];  

end
out = Rate;
save('E:\类间\leijian.mat', 'Rate');
disp('类间数据生成完毕!');


注释:

1,这里用randperm(n)生成一个从1到n的随机矩阵,选取矩阵的第一个元素为训练样本,第二个元素为测试人的ID。

2,找到测试人的ID后,因为这个人有10个照片,再生成一个1到10的随机矩阵,选取第3个元素作为图片的id。ID和id就定位出了测试图片的绝对路径

3,两者进行匹配的函数是YanPiPei这里,因为项目需要,我这里训练样本只需要告诉是哪个人就可以了。剩下的工作由YanPiPei函数进行。大家根据需要,可以灵活修改。

-----------------------本文系原创,转载请注明作者:yanzi1225627

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics