|
|
import gradio as gr |
|
|
from pysr import SR |
|
|
from pyaxdev import enum_devices, sys_init, sys_deinit, AxDeviceType |
|
|
import argparse |
|
|
|
|
|
if __name__ == '__main__': |
|
|
parser = argparse.ArgumentParser() |
|
|
parser.add_argument('--model', type=str, default='edsr_x2_small_1.axmodel') |
|
|
args = parser.parse_args() |
|
|
|
|
|
devices_info = enum_devices() |
|
|
dev_type = None |
|
|
devid = None |
|
|
print("可用设备:", devices_info) |
|
|
if devices_info['host']['available']: |
|
|
print("host device available") |
|
|
sys_init(AxDeviceType.host_device, -1) |
|
|
dev_type = AxDeviceType.host_device |
|
|
devid = -1 |
|
|
elif devices_info['devices']['count'] > 0: |
|
|
print("axcl device available, use device-0") |
|
|
sys_init(AxDeviceType.axcl_device, 0) |
|
|
dev_type = AxDeviceType.axcl_device |
|
|
devid = 0 |
|
|
else: |
|
|
raise Exception("No available device") |
|
|
|
|
|
sr = SR({ |
|
|
'dev_type': dev_type, |
|
|
'devid': devid, |
|
|
'model_path': args.model |
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
def run_super_resolution(image): |
|
|
|
|
|
if image is None: |
|
|
return None |
|
|
sr_image = sr(image) |
|
|
return (image, sr_image) |
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
gr.Markdown("## 图像超分对比 Demo") |
|
|
with gr.Row(): |
|
|
with gr.Column(scale=1): |
|
|
input_image = gr.Image(label="上传图片", type="numpy") |
|
|
run_button = gr.Button("运行超分") |
|
|
with gr.Column(scale=4): |
|
|
output_comparator = gr.ImageSlider(height=800) |
|
|
|
|
|
run_button.click(fn=run_super_resolution, inputs=input_image, outputs=output_comparator) |
|
|
|
|
|
|
|
|
|
|
|
ip = "0.0.0.0" |
|
|
demo.launch(server_name=ip, server_port=7860) |
|
|
|
|
|
|
|
|
|
|
|
import atexit |
|
|
if devices_info['host']['available']: |
|
|
atexit.register(lambda: sys_deinit(AxDeviceType.host_device, -1)) |
|
|
elif devices_info['devices']['count'] > 0: |
|
|
atexit.register(lambda: sys_deinit(AxDeviceType.axcl_device, 0)) |
|
|
|
|
|
|
|
|
|