Create Real-ESRGAN_x2plus__convert_pth_to_onnx.py
Browse files
Real-ESRGAN_x2plus__convert_pth_to_onnx.py
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import torch
|
2 |
+
import torch.onnx as onnx
|
3 |
+
from basicsr.archs.rrdbnet_arch import RRDBNet
|
4 |
+
|
5 |
+
# Load the PyTorch model
|
6 |
+
device = torch.device('cpu')
|
7 |
+
model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=2)
|
8 |
+
|
9 |
+
# Load the state dictionary
|
10 |
+
state_dict = torch.load('Real-ESRGAN_x2plus.pth', map_location=device)
|
11 |
+
|
12 |
+
# Load the state dictionary
|
13 |
+
model.load_state_dict(state_dict['params_ema'])
|
14 |
+
model.train(False)
|
15 |
+
|
16 |
+
# Set the model to evaluation mode
|
17 |
+
model.eval()
|
18 |
+
|
19 |
+
# Define the input shape
|
20 |
+
input_shape = (1, 3, 64, 64) # batch_size, channels, height, width
|
21 |
+
|
22 |
+
# Create a dummy input tensor
|
23 |
+
dummy_input = torch.randn(input_shape)
|
24 |
+
|
25 |
+
# Convert the model to ONNX
|
26 |
+
onnx.export(model,
|
27 |
+
dummy_input,
|
28 |
+
'Real-ESRGAN_x2plus.onnx',
|
29 |
+
opset_version=11,
|
30 |
+
input_names=['input'],
|
31 |
+
output_names=['output'],
|
32 |
+
dynamic_axes={'input': {0: 'batch_size'}, 'output': {0: 'batch_size'}})
|