Repository: stable-diffusion-webui
Issue: [Feature Request]: support HAT-L model，to upscale images , in Image Super-Resolution benchmark is NO.1 right now.
Labels: enhancement

### Is there an existing issue for this?

- [X] I have searched the existing issues and checked the recent builds/commits

### What would your feature do ?

introducing HAT-L model，to upscale images , in Image Super-Resolution benchmark is NO.1 right now.
Image Super-Resolution on Set5 - 4x upscaling better than SwinIR.
it is optimize by SwinIR， I'm not pro,  I guess it Arch is SwinIR.
source:
https://paperswithcode.com/task/image-super-resolution
https://github.com/XPixelGroup/HAT

what for?  to better upscale imgs

I download https://drive.google.com/drive/folders/1t2RdesqRVN7L6vCptneNRcpwZAo-Ub3L?usp=sharing Hat model， put it into folder "webui/models/SwinIR"
then, reboot webui.
in Extra tab, Upscale1 list, it shows up ,but still not support:
here is ERROR Info:


RuntimeError: Error(s) in loading state_dict for SwinIR: Missing key(s) in state_dict: "layers.0.residual_group.blocks.0.attn.relative_position_index", "layers.0.residual_group.blocks.1.attn_mask", "layers.0.residual_group.blocks.1.attn.relative_position_index", "layers.0.residual_group.blocks.2.attn.relative_position_index", "layers.0.residual_group.blocks.3.attn_mask", "layers.0.residual_group.blocks.3.attn.relative_position_index", "layers.0.residual_group.blocks.4.attn.relative_position_index", "layers.0.residual_group.blocks.5.attn_mask", "layers.0.residual_group.blocks.5.attn.relative_position_index", "layers.0.conv.0.weight", "layers.0.conv.0.bias", "layers.0.conv.2.weight", "layers.0.conv.2.bias", "layers.0.conv.4.weight", "layers.0.conv.4.bias", "layers.1.residual_group.blocks.0.attn.relative_position_index", "layers.1.residual_group.blocks.1.attn_mask", "layers.1.residual_group.blocks.1.attn.relative_position_index", "layers.1.residual_group.blocks.2.attn.relative_position_index", "layers.1.residual_group.blocks.3.attn_mask", "layers.1.residual_group.blocks.3.attn.relative_position_index", "layers.1.residual_group.blocks.4.attn.relative_position_index", "layers.1.residual_group.blocks.5.attn_mask", "layers.1.residual_group.blocks.5.attn.relative_position_index", "layers.1.conv.0.weight", "layers.1.conv.0.bias", "layers.1.conv.2.weight", "layers.1.conv.2.bias", "layers.1.conv.4.weight", "layers.1.conv.4.bias", "layers.2.residual_group.blocks.0.attn.relative_position_index", "layers.2.residual_group.blocks.1.attn_mask", "layers.2.residual_group.blocks.1.attn.relative_position_index", "layers.2.residual_group.blocks.2.attn.relative_position_index", "layers.2.residual_group.blocks.3.attn_mask", "layers.2.residual_group.blocks.3.attn.relative_position_index", "layers.2.residual_group.blocks.4.attn.relative_position_index", "layers.2.residual_group.blocks.5.attn_mask", "layers.2.residual_group.blocks.5.attn.relative_position_index", "layers.2.conv.0.weight", "layers.2.conv.0.bias", "layers.2.conv.2.weight", "layers.2.conv.2.bias", "layers.2.conv.4.weight", "layers.2.conv.4.bias", "layers.3.residual_group.blocks.0.attn.relative_position_index", "layers.3.residual_group.blocks.1.attn_mask", "layers.3.residual_group.blocks.1.attn.relative_position_index", "layers.3.residual_group.blocks.2.attn.relative_position_index", "layers.3.residual_group.blocks.3.attn_mask", "layers.3.residual_group.blocks.3.attn.relative_position_index", "layers.3.residual_group.blocks.4.attn.relative_position_index", "layers.3.residual_group.blocks.5.attn_mask", "layers.3.residual_group.blocks.5.attn.relative_position_index", "layers.3.conv.0.weight", "layers.3.conv.0.bias", "layers.3.conv.2.weight", "layers.3.conv.2.bias", "layers.3.conv.4.weight", "layers.3.conv.4.bias", "layers.4.residual_group.blocks.0.attn.relative_position_index", "layers.4.residual_group.blocks.1.attn_mask", "layers.4.residual_group.blocks.1.attn.relative_position_index", "layers.4.residual_group.blocks.2.attn.relative_position_index", "layers.4.residual_group.blocks.3.attn_mask", "layers.4.residual_group.blocks.3.attn.relative_position_index", "layers.4.residual_group.blocks.4.attn.relative_position_index", "layers.4.residual_group.blocks.5.attn_mask", "layers.4.residual_group.blocks.5.attn.relative_position_index", "layers.4.conv.0.weight", "layers.4.conv.0.bias", "layers.4.conv.2.weight", "layers.4.conv.2.bias", "layers.4.conv.4.weight", "layers.4.conv.4.bias", "layers.5.residual_group.blocks.0.attn.relative_position_index", "layers.5.residual_group.blocks.1.attn_mask", "layers.5.residual_group.blocks.1.attn.relative_position_index", "layers.5.residual_group.blocks.2.attn.relative_position_index", "layers.5.residual_group.blocks.3.attn_mask", "layers.5.residual_group.blocks.3.attn.relative_position_index", "layers.5.residual_group.blocks.4.attn.relative_position_index", "layers.5.residual_group.blocks.5.attn_mask", "layers.5.residual_group.blocks.5.attn.relative_position_index", "layers.5.conv.0.weight", "layers.5.conv.0.bias", "layers.5.conv.2.weight", "layers.5.conv.2.bias", "layers.5.conv.4.weight", "layers.5.conv.4.bias", "layers.6.residual_group.blocks.0.norm1.weight", "layers.6.residual_group.blocks.0.norm1.bias", "layers.6.residual_group.blocks.0.attn.relative_position_bias_table", "layers.6.residual_group.blocks.0.attn.relative_position_index", "layers.6.residual_group.blocks.0.attn.qkv.weight", "layers.6.residual_group.blocks.0.attn.qkv.bias", "layers.6.residual_group.blocks.0.attn.proj.weight", "layers.6.residual_group.blocks.0.attn.proj.bias", "layers.6.residual_group.blocks.0.norm2.weight", "layers.6.residual_group.blocks.0.norm2.bias", "layers.6.residual_group.blocks.0.mlp.fc1.weight", "layers.6.residual_group.blocks.0.mlp.fc1.bias", "layers.6.residual_group.blocks.0.mlp.fc2.weight", "layers.6.residual_group.blocks.0.mlp.fc2.bias", "layers.6.residual_group.blocks.1.attn_mask", "layers.6.residual_group.blocks.1.norm1.weight", "layers.6.residual_group.blocks.1.norm1.bias", "layers.6.residual_group.blocks.1.attn.relative_position_bias_table", "layers.6.residual_group.blocks.1.attn.relative_position_index", "layers.6.residual_group.blocks.1.attn.qkv.weight", "layers.6.residual_group.blocks.1.attn.qkv.bias", "layers.6.residual_group.blocks.1.attn.proj.weight", "layers.6.residual_group.blocks.1.attn.proj.bias", "layers.6.residual_group.blocks.1.norm2.weight", "layers.6.residual_group.blocks.1.norm2.bias", "layers.6.residual_group.blocks.1.mlp.fc1.weight", "layers.6.residual_group.blocks.1.mlp.fc1.bias", "layers.6.residual_group.blocks.1.mlp.fc2.weight", "layers.6.residual_group.blocks.1.mlp.fc2.bias", "layers.6.residual_group.blocks.2.norm1.weight", "layers.6.residual_group.blocks.2.norm1.bias", "layers.6.residual_group.blocks.2.attn.relative_position_bias_table", "layers.6.residual_group.blocks.2.attn.relative_position_index", "layers.6.residual_group.blocks.2.attn.qkv.weight", "layers.7.residual_group.blocks.2.norm2.weight", "layers.7.residual_group.blocks.2.norm2.bias", "layers.7.residual_group.blocks.2.mlp.fc1.weight", "layers.7.residual_group.blocks.2.mlp.fc1.bias", "layers.7.residual_group.blocks.2.mlp.fc2.weight", "layers.7.residual_group.blocks.2.mlp.fc2.bias", "layers.7.residual_group.blocks.3.attn_mask", "layers.7.residual_group.blocks.3.norm1.weight", "layers.7.residual_group.blocks.3.norm1.bias", "layers.7.residual_group.blocks.3.attn.relative_position_bias_table", "layers.7.residual_group.blocks.3.attn.relative_position_index", "layers.7.residual_group.blocks.3.attn.qkv.weight", "layers.7.residual_group.blocks.3.attn.qkv.bias", "layers.7.residual_group.blocks.3.attn.proj.weight", cks.3.conv_block.cab.3.attention.1.weight", "layers.3.residual_group.blocks.3.conv_block.cab.3.attention.1.bias", "layers.3.residual_group.blocks.3.conv_block.cab.3.attention.3.weight", ······
ize([961, 6]) from checkpoint, the shape in current model is torch.Size([225, 8]). size mismatch for layers.0.residual_group.blocks.3.attn.qkv.weight: copying a param with shape torch.Size([540, 180]) from checkpoint, the shape in current model is torch.Size([720, 240]). size mismatch for layers.0.residual_group.blocks.3.attn.qkv.bias: copying a param with shape torch.Size([540]) from checkpoint, the shape in current model is torch.Size([720]). size mismatch for ape in current model is torch.Size([240, 480]). size mismatch for layers.5.residual_group.blocks.5.mlp.fc2.bias: copying a param with shape torch.Size([180]) from checkpoint, the shape in current model is torch.Size([240]). size mismatch for norm.weight: copying a param with shape torch.Size([180]) from checkpoint, the shape in current model is torch.Size([240]). size mismatch for norm.bias: copying a param with shape torch.Size([180]) from checkpoint, the shape in current model is torch.Size([240]). size mismatch for conv_before_upsample.0.weight: copying a param with shape torch.Size([64, 180, 3, 3]) from checkpoint, the shape in current model is torch.Size([64, 240, 3, 3]).
Time taken: 0.86sTorch active/reserved: 53/68 MiB, Sys VRAM: 2157/6144 MiB (35.11%)


### Proposed workflow

1. I download https://drive.google.com/drive/folders/1t2RdesqRVN7L6vCptneNRcpwZAo-Ub3L?usp=sharing Hat model， put it into folder "webui/models/SwinIR"
2. then, reboot webui.
3. in Extra tab, Upscale1 list, it shows up, it should be works

### Additional information

_No response_