|
|
import gradio as gr |
|
|
from PIL import Image |
|
|
from controlnet_aux.open_pose import OpenposeDetector |
|
|
from controlnet_aux.depth_anything import DepthAnythingDetector |
|
|
|
|
|
|
|
|
openpose = OpenposeDetector.from_pretrained("lllyasviel/ControlNet") |
|
|
depth = DepthAnythingDetector.from_pretrained("depth-anything/Depth-Anything-V2") |
|
|
|
|
|
def process(image: Image.Image): |
|
|
image = image.convert("RGB") |
|
|
result_openpose = openpose(image) |
|
|
result_depth = depth(image) |
|
|
|
|
|
if not isinstance(result_openpose, Image.Image): |
|
|
result_openpose = Image.fromarray(result_openpose) |
|
|
if not isinstance(result_depth, Image.Image): |
|
|
result_depth = Image.fromarray(result_depth) |
|
|
|
|
|
return result_openpose, result_depth |
|
|
|
|
|
demo = gr.Interface( |
|
|
fn=process, |
|
|
inputs=gr.Image(type="pil", label="Upload an image"), |
|
|
outputs=[ |
|
|
gr.Image(type="pil", label="OpenPose Result"), |
|
|
gr.Image(type="pil", label="Depth Result"), |
|
|
], |
|
|
title="ControlNet Aux Demo", |
|
|
description="Upload an image and run both OpenPose and Depth Anything." |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |
|
|
|