GPR を使用した学習ベースのアプローチを使用して、画像の超解像を行っていました。しかし、私の場合、gpr の実装に問題がありました。基本的に、トレーニング用に k 個のパッチ ペアがあるパッチ ベースの回帰を行っています。次に、回帰関数を使用してテスト出力を予測します。gpr 推論で得た次のコードを実行すると、else ブロックの失敗メッセージが表示され、gpml を完全に理解していないため、先に進むことができず、長い間スタックしています。どんな助けでも大歓迎です。迅速に対応してください。ありがとう。
% GPR model training
% GPR functions
hyp.mean = [];
meanfunc = @meanAvg;
covfunc = @covSEiso;
likfunc = @likGauss;
for m = 1:knn
In_patch_nn{m,1} = hrb_patches{Dnn(m,2),Dnn(m,3)};
Out_patch_nn{m,1} = HR_patches{Dnn(m,2),Dnn(m,3)};
end
X = zeros(knn,sh^2); % for input in gpr model
for m=1:knn
X(m,:) = In_patch_nn{m,1}(:);
end
% gpr for each pixel in the output patch
temp_out = zeros(sh);
for b = 1:sh
for c = 1:sh
y = zeros(knn,1);
% initialize GPr parameter
cov = [-1.5; log(std(double(hrb_patches{Dnn(1,2),Dnn(1,3)}(:))))]; lik = -3; %%%%% doubt how to initialize??
hyp.cov = cov;
hyp.lik = lik;
for e = 1:knn
y(e,1) = Out_patch_nn{e,1}(b,c); % training target values (output)
end
% MAP estimation
[hyp] = minimize(hyp, @gp, -100, @infExact, meanfunc,covfunc, likfunc, X, y);
% GPR inference
[fail ymu] = gp(hyp, @infExact, meanfunc, covfunc, likfunc, double(X(:,:)), double(y(:)), double(temp(:)'));
if fail==0 && length(ymu)~=1 && ~isinf(hyp.cov(1)) && ~isinf(hyp.cov(1)) && ~isinf(hyp.lik)
temp_out(b,c) = ymu;
else
fprintf('fail %d\n',j);
end
end
end
Patch_mat_n{j,3} = temp_out;
% patch prediction
end