import cv2 import numpy as np import paddle import paddle.nn.functional as F from Generater import Generater import gradio as gr generator = Generater() # # oslist =os.listdir("纹理") # # print(oslist) G_path ='Gmodel_state33003.pdparams' layer_state_dictg = paddle.load(G_path) generator.set_state_dict(layer_state_dictg)#导入训练好的参数文件 def style_transfer(content_img,style_img): g_input = content_img.astype('float32') / 127.5 - 1 # 归一化 g_input = g_input[np.newaxis, ...].transpose(0, 3, 1, 2) # NHWC -> NCHW g_input = paddle.to_tensor(g_input) # numpy -> tensor h,w = g_input.shape[-2:] p = max([h,w]) g_input = F.interpolate(g_input,scale_factor=(512/p)) g_input_s = style_img.astype('float32') / 127.5 - 1 # 归一化 g_input_s = g_input_s[np.newaxis, ...].transpose(0, 3, 1, 2) # NHWC -> NCHW g_input_s = paddle.to_tensor(g_input_s) # numpy -> tensor h,w = g_input_s.shape[-2:] p = max([h,w]) g_input_s = F.interpolate(g_input_s,scale_factor=(512/p)) i = paddle.to_tensor([1.]) g_output = generator(g_input,g_input_s,i) g_output = g_output.detach().numpy() # tensor -> numpy g_output = g_output.transpose(0, 2, 3, 1)[0] # NCHW -> NHWC g_output = (g_output+1) *127.5 # 反归一化 g_output = g_output.astype(np.uint8) output = g_output # cv2.imwrite(os.path.join("./test", str(i.numpy()[0])+'qt.png'), g_output)#保存图片到本地 return output interface = gr.Interface(fn=style_transfer, inputs=["image","image"], outputs="image") interface.launch(share=True)