|
|
import numpy as np |
|
|
import random |
|
|
import os |
|
|
import sys |
|
|
import subprocess |
|
|
import cv2 |
|
|
from sklearn.linear_model import RANSACRegressor, LinearRegression |
|
|
|
|
|
sys.path.insert(0,'core') |
|
|
sys.path.insert(0,'core/utils') |
|
|
|
|
|
from core.utils import frame_utils |
|
|
from core.utils import vis |
|
|
|
|
|
gt_path = "/home/yao/Document/GeneralizedStereoMatching/datasets/Middlebury/MiddEval3/trainingF/Jadeplant/disp0GT.pfm" |
|
|
pse_gt_path = "/data5/yao/runs/vis/RaftStereoDepthBetaK53DispRefineSigmoidPreMonoBatch48ConfDim_20241102_014050/middlebury_F-50000itr-RefineSigmoidPreMonoBatch48ConfDim/middlebury_f/MiddEval3/trainingF/Jadeplant/disp0GT-pred.pfm" |
|
|
pred_path = "/data5/yao/tmp/Jadeplant-depthany.png" |
|
|
|
|
|
|
|
|
gt, valid = frame_utils.readDispMiddlebury(gt_path) |
|
|
pse_gt = frame_utils.readPFM(pse_gt_path) |
|
|
|
|
|
pred = cv2.imread(pred_path, cv2.IMREAD_ANYDEPTH) |
|
|
print(gt.shape, pred.shape, pse_gt.shape, gt.max()) |
|
|
|
|
|
|
|
|
class Args: |
|
|
def __init__(self, dataset): |
|
|
self.dataset = dataset |
|
|
args = Args(dataset="middlebury_F") |
|
|
viser = vis.Visualizer(root="/data5/yao/tmp/register", sv_root="/data5/yao/tmp/register", dataset="middlebury", scratch=True, args=args, logger=None) |
|
|
|
|
|
|
|
|
Y = gt[valid].reshape((-1,1)) |
|
|
X = pred[valid].reshape((-1,1)) |
|
|
X = np.hstack([X, np.ones_like(X)]) |
|
|
print(X.shape, Y.shape, X.max(), Y.max()) |
|
|
|
|
|
|
|
|
model = LinearRegression(fit_intercept=False) |
|
|
model.fit(X, Y) |
|
|
|
|
|
|
|
|
a, b = model.coef_[0][0], model.coef_[0][1] |
|
|
reg_pred = pred * a + b |
|
|
epe = np.abs(reg_pred[valid]-gt[valid]).mean() |
|
|
bad3 = (epe>3).mean() |
|
|
print(f"{a}, {b}: ", epe, bad3) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ransac = RANSACRegressor(estimator=LinearRegression(), max_trials=1000, min_samples=500, residual_threshold=1.0) |
|
|
ransac.fit(X, Y) |
|
|
|
|
|
|
|
|
a = ransac.estimator_.coef_[0][0] |
|
|
b = ransac.estimator_.intercept_ |
|
|
reg_pred = pred * a + b |
|
|
epe = np.abs(reg_pred[valid]-gt[valid]).mean() |
|
|
bad3 = (epe>3).mean() |
|
|
print(f"{a}, {b}: ", epe, bad3) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|