BFZD233
initial
5b3b0f4
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)
# vis1 = [{"name": "GT Disp", "img_list": [gt], "cmap": "jet"},
# {"name": "PSE GT Disp", "img_list": [pse_gt], "cmap": "jet"},
# {"name": "Pred Disp", "img_list": [pred], "cmap": "jet"},
# {"name": "Reg Disp",
# "img_list": [reg_pred],
# "cmap": "jet",
# "GT": [gt],
# "error_map": True,},
# ]
# viser.analyze(vis1, os.path.basename(gt_path), in_one_fig=True)
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)
# vis1 = [{"name": "GT Disp", "img_list": [gt], "cmap": "jet"},
# {"name": "PSE GT Disp", "img_list": [pse_gt], "cmap": "jet"},
# {"name": "Pred Disp", "img_list": [pred], "cmap": "jet"},
# {"name": "Reg Disp",
# "img_list": [reg_pred],
# "cmap": "jet",
# "GT": [gt],
# "error_map": True,},
# ]
# viser.analyze(vis1, os.path.basename(gt_path), in_one_fig=True)