yangheng's picture
init
9842c28
import argparse
import torch
import torch.onnx
from basicsr.archs.rrdbnet_arch import RRDBNet
def main(args):
# An instance of the model
model = RRDBNet(
num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=4
)
if args.params:
keyname = "params"
else:
keyname = "params_ema"
model.load_state_dict(torch.load(args.input)[keyname])
# set the train mode to false since we will only run the forward pass.
model.train(False)
model.cpu().eval()
# An example input
x = torch.rand(1, 3, 64, 64)
# Export the model
with torch.no_grad():
torch_out = torch.onnx._export(
model, x, args.output, opset_version=11, export_params=True
)
print(torch_out.shape)
if __name__ == "__main__":
"""Convert pytorch model to onnx models"""
parser = argparse.ArgumentParser()
parser.add_argument(
"--input",
type=str,
default="experiments/pretrained_models/RealESRGAN_x4plus.pth",
help="Input model path",
)
parser.add_argument(
"--output", type=str, default="realesrgan-x4.onnx", help="Output onnx path"
)
parser.add_argument(
"--params", action="store_false", help="Use params instead of params_ema"
)
args = parser.parse_args()
main(args)