资源简介

Learning Low-Rank Class-Specific Dictionary and Sparse Intra-Class Variant Dictionary for Face Recognition 文章及实现代码

资源截图

代码片段和文件信息

function Xout = learn_coefficients (A Y gamma Xinit)
% The feature-sign search algorithm
% L1-regularized least squares problem solver
%
% This code solves the following problem:

%    minimize_s 0.5*||y - A*x||^2 + gamma*||x||_1

% The detail of the algorithm is described in the following paper:
% ‘Efficient Sparse Codig Algorithms‘ Honglak Lee Alexis Battle Rajat Raina Andrew Y. Ng 
% Advances in Neural Information Processing Systems (NIPS) 19 2007
%
% Written by Honglak Lee 
% Copyright 2007 by Honglak Lee Alexis Battle Rajat Raina and Andrew Y. Ng

warning(‘off‘ ‘MATLAB:divideByZero‘);

use_Xinit= false;       %judge wheather X have initial---Xinit 
if exist(‘Xinit‘ ‘var‘)
    use_Xinit= true;    % We have initial Xinit for X
end

Xout= zeros(size(A2) size(Y2));% output the result y=AX 
                                  % y--k*NA--k*mX--m*N
AtA = A‘*A;                       % A is preseted
AtY = A‘*Y;                       % Y also presented

rankA = rank(AtA);
%rankA = min(size(A1)-10 size(A2)-10);% X must be sparse

for i=1:size(Y2)% each column of Y is a sample
%    if mod(i 100)==0 fprintf(‘.‘); end %fprintf(1 ‘l1ls_featuresign: %d/%d\r‘ i size(Y2)); end
    
    if use_Xinit % We have Xinitused it 
        idx1 = find(Xinit(:i)~=0);      % find nonzero coefficients ith sample
        maxn = min(length(idx1) rankA); % length(idx1) is the number of nonzero coefficients
        xinit = zeros(size(Xinit(:i))); % all zeros
        xinit(idx1(1:maxn)) =  Xinit(idx1(1:maxn) i);
        [Xout(:i) fobj]= ls_featuresign_sub (A Y(:i) AtA AtY(: i) gamma xinit);
    else
        [Xout(:i) fobj]= ls_featuresign_sub (A Y(:i) AtA AtY(: i) gamma);
    end
end
fprintf(1 ‘\n‘);

warning(‘on‘ ‘MATLAB:divideByZero‘);

return;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


function [x fobj] = ls_featuresign_sub (A y AtA Aty gamma xinit)

[LM] = size(A); % the dimension of sample----L the number of atoms---M

rankA = rank(AtA);
%rankA = min(size(A1)-10 size(A2)-10);% why??

% Step 1: Initialize
usexinit = false;
if ~exist(‘xinit‘ ‘var‘) || isempty(xinit) % we don‘t have xinit
    xinit= [];
    x= sparse(zeros(M1));      % the coefficients all zerosinitialize x=0;
    theta= sparse(zeros(M1));  % the sign of xitheta=0;
    act= sparse(zeros(M1));    % active setactive set={};
    allowZero = false;
else
    % xinit = [];
    x= sparse(xinit);          % init xx=xinit;
    theta= sparse(sign(x));    % thetai is the sign of xi
    act= sparse(abs(theta));   % nonzeros coefficience
    usexinit = true;           % use init
    allowZero = true;
end

%fname_debug = sprintf(‘../tmp/fsdebug_%x.mat‘ datestr(now 30));

fobj = fobj_featuresign(x A y AtA Aty gamma);% objective function‘s value

ITERMAX=400;             % iteration
optimality1=false;        % check opt

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-07-27 17:30  LRAE+SC\
     文件        1415  2014-07-27 17:30  LRAE+SC\LRSE_SC.m
     文件         920  2014-07-27 17:28  LRAE+SC\SRCE_function.m
     目录           0  2014-07-27 17:13  LRAE+SC\inexact_alm_rpca\
     文件        6148  2009-10-31 23:23  LRAE+SC\inexact_alm_rpca\.DS_Store
     目录           0  2014-07-27 17:13  LRAE+SC\inexact_alm_rpca\PROPACK\
     文件         202  1998-12-07 23:24  LRAE+SC\inexact_alm_rpca\PROPACK\Afunc.m
     文件         224  1998-12-07 23:25  LRAE+SC\inexact_alm_rpca\PROPACK\AtAfunc.m
     文件         232  1998-12-07 23:25  LRAE+SC\inexact_alm_rpca\PROPACK\Atransfunc.m
     文件         293  1998-12-07 23:25  LRAE+SC\inexact_alm_rpca\PROPACK\Cfunc.m
     文件         987  2009-07-02 14:28  LRAE+SC\inexact_alm_rpca\PROPACK\bdsqr.m
     文件       74546  2004-03-18 04:12  LRAE+SC\inexact_alm_rpca\PROPACK\bdsqr.mexglx
     文件       25208  2004-03-18 05:39  LRAE+SC\inexact_alm_rpca\PROPACK\bdsqr.mexsg
     文件       26109  2000-05-01 07:18  LRAE+SC\inexact_alm_rpca\PROPACK\bdsqr.mexsg64
     文件       95852  2000-05-26 08:14  LRAE+SC\inexact_alm_rpca\PROPACK\bdsqr.mexsol
     文件       55808  2009-03-14 16:23  LRAE+SC\inexact_alm_rpca\PROPACK\bdsqr.mexw32
     文件        2102  2004-03-18 03:41  LRAE+SC\inexact_alm_rpca\PROPACK\bdsqr_mex.c
     文件        1504  2000-05-29 17:52  LRAE+SC\inexact_alm_rpca\PROPACK\compute_int.m
     文件         445  2004-03-18 03:28  LRAE+SC\inexact_alm_rpca\PROPACK\dbdqr.f
     文件      256353  1998-09-08 03:13  LRAE+SC\inexact_alm_rpca\PROPACK\helio.mat
     文件        3544  2000-05-27 07:45  LRAE+SC\inexact_alm_rpca\PROPACK\lanbpro.doc
     文件       19514  2000-06-08 08:27  LRAE+SC\inexact_alm_rpca\PROPACK\lanbpro.m
     文件        3544  2000-05-27 08:40  LRAE+SC\inexact_alm_rpca\PROPACK\lanbpro.txt
     文件        2522  2000-05-27 07:45  LRAE+SC\inexact_alm_rpca\PROPACK\laneig.doc
     文件        9695  2001-08-16 03:57  LRAE+SC\inexact_alm_rpca\PROPACK\laneig.m
     文件        2522  2000-05-27 08:40  LRAE+SC\inexact_alm_rpca\PROPACK\laneig.txt
     文件        3336  2000-05-27 07:46  LRAE+SC\inexact_alm_rpca\PROPACK\lanpro.doc
     文件       14762  2000-05-10 07:20  LRAE+SC\inexact_alm_rpca\PROPACK\lanpro.m
     文件        3336  2000-05-27 08:40  LRAE+SC\inexact_alm_rpca\PROPACK\lanpro.txt
     文件        2386  2000-05-27 07:46  LRAE+SC\inexact_alm_rpca\PROPACK\lansvd.doc
     文件        9307  2000-05-17 07:55  LRAE+SC\inexact_alm_rpca\PROPACK\lansvd.m
............此处省略27个文件信息

评论

共有 条评论