import numpy as np | |
import PIL.Image | |
from controlnet_aux.util import HWC3 | |
from transformers import pipeline | |
from cv_utils import resize_image | |
class DepthEstimator: | |
def __init__(self): | |
self.model = pipeline('depth-estimation') | |
def __call__(self, image: np.ndarray, **kwargs) -> PIL.Image.Image: | |
detect_resolution = kwargs.pop('detect_resolution', 512) | |
image_resolution = kwargs.pop('image_resolution', 512) | |
image = np.array(image) | |
image = HWC3(image) | |
image = resize_image(image, resolution=detect_resolution) | |
image = PIL.Image.fromarray(image) | |
image = self.model(image) | |
image = image['depth'] | |
image = np.array(image) | |
image = HWC3(image) | |
image = resize_image(image, resolution=image_resolution) | |
return PIL.Image.fromarray(image) | |