Chinese male
Input
input_image
Input image to upscale
![https://files.tungsten.run/uploads/b36ca22c10504b20bb559a7a4e052dcf/Screenshot%20from%202023-08-25%2023-56-10.png](https://files.tungsten.run/uploads/b36ca22c10504b20bb559a7a4e052dcf/Screenshot%20from%202023-08-25%2023-56-10.png)
Output
![https://files.tungsten.run/uploads/bec13bc578894b628a15ca1f9e6c1c1c/output.png](https://files.tungsten.run/uploads/bec13bc578894b628a15ca1f9e6c1c1c/output.png)
real-sharper-lowmem: Pulling from racoonman254/image-upscaler-hat
52d2b7f179e3: Already exists
2b8a9a2240c1: Already exists
618a49bbc6c6: Already exists
708d13076071: Already exists
90b76fc2ebde: Already exists
610d266c7811: Already exists
5186d5863148: Already exists
60d6e2d1c2aa: Already exists
9dbc6d4d03b6: Already exists
c8b0ee973ba4: Already exists
cb813d4c301f: Already exists
4819eed7651a: Already exists
871c0a3c8455: Already exists
a1e3ef145161: Already exists
e7809b12417f: Already exists
d63f442a636b: Already exists
991265557976: Already exists
6e39ad22e868: Already exists
977d2091734e: Already exists
48851a15662c: Already exists
fd047ab689b1: Already exists
2b16729fb01d: Already exists
a83367168736: Already exists
3ee165eafdff: Already exists
da7951ba3291: Already exists
8ffb98cceb11: Already exists
d30cc7cc2f81: Already exists
d4851d68f090: Already exists
6fc3d28dd1ea: Already exists
9467d22bcf3d: Already exists
988e2d951269: Already exists
3a6109b4f17d: Already exists
400fdb55e52a: Already exists
9d76f905f41b: Already exists
89998a7c1de5: Already exists
f05f8792ea60: Already exists
Setting up the model...
Predicting...
/usr/local/lib/python3.10/site-packages/torchvision/transforms/functional_tensor.py:5: UserWarning: The torchvision.transforms.functional_tensor module is deprecated in 0.15 and will be **removed in 0.17**. Please don't rely on it. You probably just need to use APIs in torchvision.transforms.functional or in torchvision.transforms.v2.functional.
warnings.warn(
Disable distributed.
2023-08-25 15:31:17,920 INFO:
____ _ _____ ____
/ __ ) ____ _ _____ (_)_____/ ___/ / __ \
/ __ |/ __ `// ___// // ___/\__ \ / /_/ /
/ /_/ // /_/ /(__ )/ // /__ ___/ // _, _/
/_____/ \__,_//____//_/ \___//____//_/ |_|
______ __ __ __ __
/ ____/____ ____ ____/ / / / __ __ _____ / /__ / /
/ / __ / __ \ / __ \ / __ / / / / / / // ___// //_/ / /
/ /_/ // /_/ // /_/ // /_/ / / /___/ /_/ // /__ / /< /_/
\____/ \____/ \____/ \____/ /_____/\____/ \___//_/|_| (_)
Version Information:
BasicSR: 1.3.4.9
PyTorch: 2.0.1+cu118
TorchVision: 0.15.2+cu118
2023-08-25 15:31:17,920 INFO:
name: HAT_GAN_Real_sharper
model_type: HATModel
scale: 4
num_gpu: 1
manual_seed: 0
tile:[
tile_size: 512
tile_pad: 32
]
datasets:[
test_1:[
name: custom
type: SingleImageDataset
dataroot_lq: input_dir
io_backend:[
type: disk
]
phase: test
scale: 4
]
]
network_g:[
type: HAT
upscale: 4
in_chans: 3
img_size: 64
window_size: 16
compress_ratio: 3
squeeze_factor: 30
conv_scale: 0.01
overlap_ratio: 0.5
img_range: 1.0
depths: [6, 6, 6, 6, 6, 6]
embed_dim: 180
num_heads: [6, 6, 6, 6, 6, 6]
mlp_ratio: 2
upsampler: pixelshuffle
resi_connection: 1conv
]
path:[
pretrain_network_g: ./experiments/pretrained_models/Real_HAT_GAN_sharper.pth
strict_load_g: True
param_key_g: params_ema
results_root: /tungsten/results/HAT_GAN_Real_sharper
log: /tungsten/results/HAT_GAN_Real_sharper
visualization: /tungsten/results/HAT_GAN_Real_sharper/visualization
]
val:[
save_img: True
suffix: None
]
dist: False
rank: 0
world_size: 1
auto_resume: False
is_train: False
2023-08-25 15:31:17,920 INFO: Dataset [SingleImageDataset] - custom is built.
2023-08-25 15:31:17,920 INFO: Number of test images in custom: 1
/usr/local/lib/python3.10/site-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:3483.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
2023-08-25 15:31:18,169 INFO: Network [HAT] is created.
2023-08-25 15:31:18,560 INFO: Network: HAT, with parameters: 20,772,507
2023-08-25 15:31:18,560 INFO: HAT(
(conv_first): Conv2d(3, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(patch_embed): PatchEmbed(
(norm): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
)
(patch_unembed): PatchUnEmbed()
(pos_drop): Dropout(p=0.0, inplace=False)
(layers): ModuleList(
(0): RHAG(
(residual_group): AttenBlocks(
(blocks): ModuleList(
(0): HAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=180, out_features=540, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=180, out_features=180, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(conv_block): CAB(
(cab): Sequential(
(0): Conv2d(180, 60, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): GELU(approximate='none')
(2): Conv2d(60, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ChannelAttention(
(attention): Sequential(
(0): AdaptiveAvgPool2d(output_size=1)
(1): Conv2d(180, 6, kernel_size=(1, 1), stride=(1, 1))
(2): ReLU(inplace=True)
(3): Conv2d(6, 180, kernel_size=(1, 1), stride=(1, 1))
(4): Sigmoid()
)
)
)
)
(drop_path): Identity()
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(1-5): 5 x HAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=180, out_features=540, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=180, out_features=180, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(conv_block): CAB(
(cab): Sequential(
(0): Conv2d(180, 60, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): GELU(approximate='none')
(2): Conv2d(60, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ChannelAttention(
(attention): Sequential(
(0): AdaptiveAvgPool2d(output_size=1)
(1): Conv2d(180, 6, kernel_size=(1, 1), stride=(1, 1))
(2): ReLU(inplace=True)
(3): Conv2d(6, 180, kernel_size=(1, 1), stride=(1, 1))
(4): Sigmoid()
)
)
)
)
(drop_path): DropPath()
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(overlap_attn): OCAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(qkv): Linear(in_features=180, out_features=540, bias=True)
(unfold): Unfold(kernel_size=(24, 24), dilation=1, padding=4, stride=16)
(softmax): Softmax(dim=-1)
(proj): Linear(in_features=180, out_features=180, bias=True)
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(conv): Conv2d(180, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(patch_embed): PatchEmbed()
(patch_unembed): PatchUnEmbed()
)
(1-5): 5 x RHAG(
(residual_group): AttenBlocks(
(blocks): ModuleList(
(0-5): 6 x HAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=180, out_features=540, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=180, out_features=180, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(conv_block): CAB(
(cab): Sequential(
(0): Conv2d(180, 60, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): GELU(approximate='none')
(2): Conv2d(60, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ChannelAttention(
(attention): Sequential(
(0): AdaptiveAvgPool2d(output_size=1)
(1): Conv2d(180, 6, kernel_size=(1, 1), stride=(1, 1))
(2): ReLU(inplace=True)
(3): Conv2d(6, 180, kernel_size=(1, 1), stride=(1, 1))
(4): Sigmoid()
)
)
)
)
(drop_path): DropPath()
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(overlap_attn): OCAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(qkv): Linear(in_features=180, out_features=540, bias=True)
(unfold): Unfold(kernel_size=(24, 24), dilation=1, padding=4, stride=16)
(softmax): Softmax(dim=-1)
(proj): Linear(in_features=180, out_features=180, bias=True)
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(conv): Conv2d(180, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(patch_embed): PatchEmbed()
(patch_unembed): PatchUnEmbed()
)
)
(norm): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(conv_after_body): Conv2d(180, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv_before_upsample): Sequential(
(0): Conv2d(180, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): LeakyReLU(negative_slope=0.01, inplace=True)
)
(upsample): Upsample(
(0): Conv2d(64, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): PixelShuffle(upscale_factor=2)
(2): Conv2d(64, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): PixelShuffle(upscale_factor=2)
)
(conv_last): Conv2d(64, 3, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
2023-08-25 15:31:18,665 INFO: Loading HAT model from ./experiments/pretrained_models/Real_HAT_GAN_sharper.pth, with param key: [params_ema].
2023-08-25 15:31:18,761 INFO: Model [HATModel] is created.
2023-08-25 15:31:18,761 INFO: Testing custom...
/usr/local/lib/python3.10/site-packages/torch/nn/modules/conv.py:459: UserWarning: Applied workaround for CuDNN issue, install nvrtc.so (Triggered internally at ../aten/src/ATen/native/cudnn/Conv_v8.cpp:80.)
return F.conv2d(input, weight, bias, self.stride,
Tile 1/1
Prediction done.
input_image
Input image to upscale
![https://files.tungsten.run/uploads/b36ca22c10504b20bb559a7a4e052dcf/Screenshot%20from%202023-08-25%2023-56-10.png](https://files.tungsten.run/uploads/b36ca22c10504b20bb559a7a4e052dcf/Screenshot%20from%202023-08-25%2023-56-10.png)
![https://files.tungsten.run/uploads/bec13bc578894b628a15ca1f9e6c1c1c/output.png](https://files.tungsten.run/uploads/bec13bc578894b628a15ca1f9e6c1c1c/output.png)
real-sharper-lowmem: Pulling from racoonman254/image-upscaler-hat
52d2b7f179e3: Already exists
2b8a9a2240c1: Already exists
618a49bbc6c6: Already exists
708d13076071: Already exists
90b76fc2ebde: Already exists
610d266c7811: Already exists
5186d5863148: Already exists
60d6e2d1c2aa: Already exists
9dbc6d4d03b6: Already exists
c8b0ee973ba4: Already exists
cb813d4c301f: Already exists
4819eed7651a: Already exists
871c0a3c8455: Already exists
a1e3ef145161: Already exists
e7809b12417f: Already exists
d63f442a636b: Already exists
991265557976: Already exists
6e39ad22e868: Already exists
977d2091734e: Already exists
48851a15662c: Already exists
fd047ab689b1: Already exists
2b16729fb01d: Already exists
a83367168736: Already exists
3ee165eafdff: Already exists
da7951ba3291: Already exists
8ffb98cceb11: Already exists
d30cc7cc2f81: Already exists
d4851d68f090: Already exists
6fc3d28dd1ea: Already exists
9467d22bcf3d: Already exists
988e2d951269: Already exists
3a6109b4f17d: Already exists
400fdb55e52a: Already exists
9d76f905f41b: Already exists
89998a7c1de5: Already exists
f05f8792ea60: Already exists
Setting up the model...
Predicting...
/usr/local/lib/python3.10/site-packages/torchvision/transforms/functional_tensor.py:5: UserWarning: The torchvision.transforms.functional_tensor module is deprecated in 0.15 and will be **removed in 0.17**. Please don't rely on it. You probably just need to use APIs in torchvision.transforms.functional or in torchvision.transforms.v2.functional.
warnings.warn(
Disable distributed.
2023-08-25 15:31:17,920 INFO:
____ _ _____ ____
/ __ ) ____ _ _____ (_)_____/ ___/ / __ \
/ __ |/ __ `// ___// // ___/\__ \ / /_/ /
/ /_/ // /_/ /(__ )/ // /__ ___/ // _, _/
/_____/ \__,_//____//_/ \___//____//_/ |_|
______ __ __ __ __
/ ____/____ ____ ____/ / / / __ __ _____ / /__ / /
/ / __ / __ \ / __ \ / __ / / / / / / // ___// //_/ / /
/ /_/ // /_/ // /_/ // /_/ / / /___/ /_/ // /__ / /< /_/
\____/ \____/ \____/ \____/ /_____/\____/ \___//_/|_| (_)
Version Information:
BasicSR: 1.3.4.9
PyTorch: 2.0.1+cu118
TorchVision: 0.15.2+cu118
2023-08-25 15:31:17,920 INFO:
name: HAT_GAN_Real_sharper
model_type: HATModel
scale: 4
num_gpu: 1
manual_seed: 0
tile:[
tile_size: 512
tile_pad: 32
]
datasets:[
test_1:[
name: custom
type: SingleImageDataset
dataroot_lq: input_dir
io_backend:[
type: disk
]
phase: test
scale: 4
]
]
network_g:[
type: HAT
upscale: 4
in_chans: 3
img_size: 64
window_size: 16
compress_ratio: 3
squeeze_factor: 30
conv_scale: 0.01
overlap_ratio: 0.5
img_range: 1.0
depths: [6, 6, 6, 6, 6, 6]
embed_dim: 180
num_heads: [6, 6, 6, 6, 6, 6]
mlp_ratio: 2
upsampler: pixelshuffle
resi_connection: 1conv
]
path:[
pretrain_network_g: ./experiments/pretrained_models/Real_HAT_GAN_sharper.pth
strict_load_g: True
param_key_g: params_ema
results_root: /tungsten/results/HAT_GAN_Real_sharper
log: /tungsten/results/HAT_GAN_Real_sharper
visualization: /tungsten/results/HAT_GAN_Real_sharper/visualization
]
val:[
save_img: True
suffix: None
]
dist: False
rank: 0
world_size: 1
auto_resume: False
is_train: False
2023-08-25 15:31:17,920 INFO: Dataset [SingleImageDataset] - custom is built.
2023-08-25 15:31:17,920 INFO: Number of test images in custom: 1
/usr/local/lib/python3.10/site-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:3483.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
2023-08-25 15:31:18,169 INFO: Network [HAT] is created.
2023-08-25 15:31:18,560 INFO: Network: HAT, with parameters: 20,772,507
2023-08-25 15:31:18,560 INFO: HAT(
(conv_first): Conv2d(3, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(patch_embed): PatchEmbed(
(norm): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
)
(patch_unembed): PatchUnEmbed()
(pos_drop): Dropout(p=0.0, inplace=False)
(layers): ModuleList(
(0): RHAG(
(residual_group): AttenBlocks(
(blocks): ModuleList(
(0): HAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=180, out_features=540, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=180, out_features=180, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(conv_block): CAB(
(cab): Sequential(
(0): Conv2d(180, 60, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): GELU(approximate='none')
(2): Conv2d(60, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ChannelAttention(
(attention): Sequential(
(0): AdaptiveAvgPool2d(output_size=1)
(1): Conv2d(180, 6, kernel_size=(1, 1), stride=(1, 1))
(2): ReLU(inplace=True)
(3): Conv2d(6, 180, kernel_size=(1, 1), stride=(1, 1))
(4): Sigmoid()
)
)
)
)
(drop_path): Identity()
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(1-5): 5 x HAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=180, out_features=540, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=180, out_features=180, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(conv_block): CAB(
(cab): Sequential(
(0): Conv2d(180, 60, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): GELU(approximate='none')
(2): Conv2d(60, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ChannelAttention(
(attention): Sequential(
(0): AdaptiveAvgPool2d(output_size=1)
(1): Conv2d(180, 6, kernel_size=(1, 1), stride=(1, 1))
(2): ReLU(inplace=True)
(3): Conv2d(6, 180, kernel_size=(1, 1), stride=(1, 1))
(4): Sigmoid()
)
)
)
)
(drop_path): DropPath()
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(overlap_attn): OCAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(qkv): Linear(in_features=180, out_features=540, bias=True)
(unfold): Unfold(kernel_size=(24, 24), dilation=1, padding=4, stride=16)
(softmax): Softmax(dim=-1)
(proj): Linear(in_features=180, out_features=180, bias=True)
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(conv): Conv2d(180, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(patch_embed): PatchEmbed()
(patch_unembed): PatchUnEmbed()
)
(1-5): 5 x RHAG(
(residual_group): AttenBlocks(
(blocks): ModuleList(
(0-5): 6 x HAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=180, out_features=540, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=180, out_features=180, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(conv_block): CAB(
(cab): Sequential(
(0): Conv2d(180, 60, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): GELU(approximate='none')
(2): Conv2d(60, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ChannelAttention(
(attention): Sequential(
(0): AdaptiveAvgPool2d(output_size=1)
(1): Conv2d(180, 6, kernel_size=(1, 1), stride=(1, 1))
(2): ReLU(inplace=True)
(3): Conv2d(6, 180, kernel_size=(1, 1), stride=(1, 1))
(4): Sigmoid()
)
)
)
)
(drop_path): DropPath()
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(overlap_attn): OCAB(
(norm1): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(qkv): Linear(in_features=180, out_features=540, bias=True)
(unfold): Unfold(kernel_size=(24, 24), dilation=1, padding=4, stride=16)
(softmax): Softmax(dim=-1)
(proj): Linear(in_features=180, out_features=180, bias=True)
(norm2): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=180, out_features=360, bias=True)
(act): GELU(approximate='none')
(fc2): Linear(in_features=360, out_features=180, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(conv): Conv2d(180, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(patch_embed): PatchEmbed()
(patch_unembed): PatchUnEmbed()
)
)
(norm): LayerNorm((180,), eps=1e-05, elementwise_affine=True)
(conv_after_body): Conv2d(180, 180, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv_before_upsample): Sequential(
(0): Conv2d(180, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): LeakyReLU(negative_slope=0.01, inplace=True)
)
(upsample): Upsample(
(0): Conv2d(64, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): PixelShuffle(upscale_factor=2)
(2): Conv2d(64, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): PixelShuffle(upscale_factor=2)
)
(conv_last): Conv2d(64, 3, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
2023-08-25 15:31:18,665 INFO: Loading HAT model from ./experiments/pretrained_models/Real_HAT_GAN_sharper.pth, with param key: [params_ema].
2023-08-25 15:31:18,761 INFO: Model [HATModel] is created.
2023-08-25 15:31:18,761 INFO: Testing custom...
/usr/local/lib/python3.10/site-packages/torch/nn/modules/conv.py:459: UserWarning: Applied workaround for CuDNN issue, install nvrtc.so (Triggered internally at ../aten/src/ATen/native/cudnn/Conv_v8.cpp:80.)
return F.conv2d(input, weight, bias, self.stride,
Tile 1/1
Prediction done.