Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Version 1.0.7: Code refactoring: process_matrix(), process_tensor(), …
…run_algorithm_###() were excluded. A standard interface called run_algorithm was created. For each algorithm, there is a run_alg.m script for execution. Added 10 new algorithms: OSTD (Sobral et al. 2015), Nonconvex RPCA (Kang et al. 2015), MC_logdet (Kang et al. 2016), RPCA-GD (Yi et al. 2016), LMaFit (Wen et al. 2012), MC-NMF (Xu et al. 2011), ScGrassMC (Ngo and Saad, 2012), SVP (Meka et al. 2009), OR1MP (Wang et al. 2015), IALM-MC (Lin et al. 2009). OP-RPCA was moved from RPCA to MC category.
- Loading branch information
1 parent
bf9f91e
commit 5b90f55
Showing
356 changed files
with
15,673 additions
and
1,552 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
% LRR | ADM | Alternating Direction Method (Lin et al. 2011) | ||
% process_video('LRR', 'ADM', 'dataset/demo.avi', 'output/demo_LRR-ADM.avi'); | ||
|
||
lambda = 0.1; | ||
rho = 1.9; | ||
DEBUG = 1; | ||
% X = XZ+E | ||
[Z,E] = adm_lrr(M,lambda,rho,DEBUG); | ||
%M_hat = M*Z + E; | ||
L = M*Z; | ||
S = E; %S = M_hat - L; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
% LRR | EALM | Exact ALM (Lin et al. 2009) | ||
% process_video('LRR', 'EALM', 'dataset/demo.avi', 'output/demo_LRR-EALM.avi'); | ||
|
||
alg_path_aux = fullfile(lrs_conf.lrr_path,'ALM'); | ||
addpath(genpath(alg_path_aux)); | ||
|
||
A = mean(M,2); | ||
lambda = 0.01; | ||
[Z,E] = solve_lrr(M,A,lambda,0,0,1); | ||
% M_hat = A*Z + E; | ||
L = A*Z; | ||
S = E; | ||
|
||
rmpath(genpath(alg_path_aux)); |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
% LRR | FastLADMAP | Fast LADMAP (Lin et al. 2011) | ||
% process_video('LRR', 'FastLADMAP', 'dataset/demo.avi', 'output/demo_LRR-FastLADMAP.avi'); | ||
|
||
alg_path_aux = fullfile(lrs_conf.lrr_path,'ADM'); | ||
addpath(genpath(alg_path_aux)); | ||
|
||
lambda = 0.1; | ||
rho = 1.9; | ||
DEBUG = 1; | ||
% X = XZ+E | ||
[Z,E] = ladmp_lrr_fast(M,lambda,rho,DEBUG); clearvars -global A Xg eta M; | ||
%M_hat = M*Z + E; | ||
L = M*Z; | ||
S = E; %S = M_hat - L; | ||
|
||
rmpath(genpath(alg_path_aux)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
% LRR | IALM | Inexact ALM (Lin et al. 2009) | ||
% process_video('LRR', 'IALM', 'dataset/demo.avi', 'output/demo_LRR-IALM.avi'); | ||
|
||
alg_path_aux = fullfile(lrs_conf.lrr_path,'ALM'); | ||
addpath(genpath(alg_path_aux)); | ||
|
||
A = mean(M,2); | ||
lambda = 0.01; | ||
[Z,E] = solve_lrr(M,A,lambda,0,1,1); | ||
% M_hat = A*Z + E; | ||
L = A*Z; | ||
S = E; | ||
|
||
rmpath(genpath(alg_path_aux)); |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
% LRR | LADMAP | Linearized ADM with Adaptive Penalty (Lin et al. 2011) | ||
% process_video('LRR', 'LADMAP', 'dataset/demo.avi', 'output/demo_LRR-LADMAP.avi'); | ||
|
||
alg_path_aux = fullfile(lrs_conf.lrr_path,'ADM'); | ||
addpath(genpath(alg_path_aux)); | ||
|
||
lambda = 0.1; | ||
rho = 1.9; | ||
DEBUG = 1; | ||
% X = XZ+E | ||
[Z,E] = ladmp_lrr(M,lambda,rho,DEBUG); clearvars -global M; | ||
%M_hat = M*Z + E; | ||
L = M*Z; | ||
S = E; %S = M_hat - L; | ||
|
||
rmpath(genpath(alg_path_aux)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
% LRR | ROSL | Robust Orthonormal Subspace Learning (Shu et al. 2014) | ||
% process_video('LRR', 'ROSL', 'dataset/demo.avi', 'output/demo_LRR-ROSL.avi'); | ||
|
||
K = 1; % The initialiation of the subspace dimension | ||
tol = 1e-5; | ||
maxIter = 30; | ||
lambda = 1e-1; %2e-3; | ||
[~,~,E_hat,A_hat] = inexact_alm_rosl(M,K,lambda,tol,maxIter); | ||
L = A_hat; | ||
S = E_hat; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 2 additions & 0 deletions
2
algorithms/mc/GROUSE/run_GROUSE.m → algorithms/mc/GROUSE/run_alg.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
%%************************************************** | ||
% compute A*z for | ||
% A = A_U * A_V' + Sparse_Z; | ||
% | ||
% Atz = matvec(z,A_U,A_V,Sparse_Z); | ||
% | ||
%%************************************************** | ||
%% | ||
function Atz = Atxz(z); | ||
|
||
global A Sparse_Z | ||
|
||
Atz = A.V * (A.U' * z) + (z' * Sparse_Z)'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
%%************************************************** | ||
% compute A*z for | ||
% A = A_U * A_V' + Sparse_Z; | ||
% | ||
% Az = matvec(z,A_U,A_V,Sparse_Z); | ||
% | ||
%%************************************************** | ||
%% | ||
function Az = Axz(z); | ||
|
||
global A Sparse_Z | ||
|
||
Az = A.U * (A.V' * z) + Sparse_Z * z; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
function y = UVtOmega(U,V,I,J,col); | ||
%Computes the restriction of UV' onto Omega, which is defined by the list (I,J) | ||
|
||
y = zeros(length(I), 1); | ||
for k = 1:length(col)-1 | ||
j = J(col(k)+1); | ||
Xj = U * V(j,:)'; | ||
idx = [col(k)+1:col(k+1)]; | ||
y(idx) = Xj(I(idx)); | ||
end | ||
|
Oops, something went wrong.