Real-ESRGAN
36 строк · 1.2 Кб
1import argparse
2import torch
3import torch.onnx
4from basicsr.archs.rrdbnet_arch import RRDBNet
5
6
7def main(args):
8# An instance of the model
9model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=4)
10if args.params:
11keyname = 'params'
12else:
13keyname = 'params_ema'
14model.load_state_dict(torch.load(args.input)[keyname])
15# set the train mode to false since we will only run the forward pass.
16model.train(False)
17model.cpu().eval()
18
19# An example input
20x = torch.rand(1, 3, 64, 64)
21# Export the model
22with torch.no_grad():
23torch_out = torch.onnx._export(model, x, args.output, opset_version=11, export_params=True)
24print(torch_out.shape)
25
26
27if __name__ == '__main__':
28"""Convert pytorch model to onnx models"""
29parser = argparse.ArgumentParser()
30parser.add_argument(
31'--input', type=str, default='experiments/pretrained_models/RealESRGAN_x4plus.pth', help='Input model path')
32parser.add_argument('--output', type=str, default='realesrgan-x4.onnx', help='Output onnx path')
33parser.add_argument('--params', action='store_false', help='Use params instead of params_ema')
34args = parser.parse_args()
35
36main(args)
37