1

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
4

0 に答える 0