Code Monkey home page Code Monkey logo

wav2lip-hq's Introduction

Wav2Lip-HQ: high quality lip-sync


❗❗ This repository is deprecated, and no one maintains it at this moment. A lot has changed in the field since it was created, and many new instruments have emerged. Please, do not try to use this repository for your practical purposes. ❗❗


This is unofficial extension of Wav2Lip: Accurately Lip-syncing Videos In The Wild repository. We use image super resolution and face segmentation for improving visual quality of lip-synced videos.

Acknowledgements

Our work is to a great extent based on the code from the following repositories:

  1. Clearly, Wav2Lip repository, that is a core model of our algorithm that performs lip-sync.
  2. Moreover, face-parsing.PyTorch repository provides us with a model for face segmentation.
  3. We also use extremely useful BasicSR respository for super resolution.
  4. Finally, Wav2Lip heavily depends on face_alignment repository for detection.

The algorithm

Our algorithm consists of the following steps:

  1. Pretrain ESRGAN on a video with some speech of a target person.
  2. Apply Wav2Lip model to the source video and target audio, as it is done in official Wav2Lip repository.
  3. Upsample the output of Wav2Lip with ESRGAN.
  4. Use BiSeNet to change only relevant pixels in video.

You can learn more about the method in this article (in russian).

Results

Our approach is definetly not at all flawless, and some of the frames produced with it contain artifacts or weird mistakes. However, it can be used to perform lip-sync to high quality videos with plausible output.

comparison

Running the model

The simpliest way is to use our Google Colab demo. However, if you want to test the algorithm on your own machine, run the following commands. Beware that you need Python 3 and CUDA installed.

  1. Clone this repository and install requirements:

    git clone https://github.com/Markfryazino/wav2lip-hq.git
    cd wav2lip-hq
    pip3 install -r requirements.txt
    
  2. Download all the .pth files from here and place them in checkpoints folder.

    Apart from that, вownload the face detection model checkpoint:

    !wget "https://www.adrianbulat.com/downloads/python-fan/s3fd-619a316812.pth" -O "face_detection/detection/sfd/s3fd.pth"
    
  3. Run the inference script:

    !python inference.py \
        --checkpoint_path "checkpoints/wav2lip_gan.pth" \
        --segmentation_path "checkpoints/face_segmentation.pth" \
        --sr_path "checkpoints/esrgan_yunying.pth" \
        --face <path to source video> \
        --audio <path to source audio> \
        --outfile <desired path to output>
    

Finetuning super-resolution model.

Although we provide a checkpoint of pre-trained ESRGAN, it's training dataset was quite modest, so the results may be insufficient. Hence, it can be useful to finetune the model on your target video. 1 or 2 minutes of speech is usually enough.

To simplify finetuning the model, we provide a colab notebook. You can also run the commands listed there on your machine: namely, you have to download the models, run inference with saving all the frames on-the-fly, resize them and train ESRGAN.

Bear in mind that the procedure is quite time- and memory-consuming.

wav2lip-hq's People

Contributors

markfryazino avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wav2lip-hq's Issues

Training time limitation

Managed to get the training colab notebook to work! Was battling with the code for over 24 hrs.

For some reason the training will only go up to "Epoch: 4 Iter: 2500" (15 mins or so) then it stops, and I would like to train it for longer if possible, is there some setting I'm missing?

error with Finetune ESRGAN

i have a problem related to Wav2Lip-HQ pretraining. when i run Finetune ESRGAN i get this ouput:

Traceback (most recent call last):
File "basicsr/train.py", line 17, in
from basicsr.utils.options import dict2str, parse
ImportError: cannot import name 'parse' from 'basicsr.utils.options' (/usr/local/lib/python3.7/dist-packages/basicsr/utils/options.py)

Is there any solution?

How to prepare my own customized data?

I want to know how to prepare my own customized data for finetuning part (data is in .mp4 format). I would like to train the model using my own video to improve the resolution. May you explain the procedure in details?

Thank you.

_pickle.UnpicklingError: invalid load key, '!'.

Using cuda for inference.
(80, 2612)
Length of mel chunks: 813
  0%|                                                                                             | 0/7 [00:00<?, ?it/s]Reading video frames from start...
  0%|                                                                                             | 0/7 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "inference.py", line 355, in <module>
    main()
  File "inference.py", line 292, in main
    for i, (img_batch, mel_batch, frames, coords) in enumerate(tqdm(gen,
  File "/home/lizhaohui/miniconda3/envs/wav2lip/lib/python3.8/site-packages/tqdm/std.py", line 1195, in __iter__
    for obj in iterable:
  File "inference.py", line 156, in datagen
    face, coords = face_detect([frame_to_save])[0]
  File "inference.py", line 93, in face_detect
    detector = face_detection.FaceAlignment(face_detection.LandmarksType._2D,
  File "/home/lizhaohui/wav2lip-hq/face_detection/api.py", line 62, in __init__
    self.face_detector = face_detector_module.FaceDetector(device=device, verbose=verbose)
  File "/home/lizhaohui/wav2lip-hq/face_detection/detection/sfd/sfd_detector.py", line 24, in __init__
    model_weights = torch.load(path_to_detector)
  File "/home/lizhaohui/miniconda3/envs/wav2lip/lib/python3.8/site-packages/torch/serialization.py", line 713, in load
    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
  File "/home/lizhaohui/miniconda3/envs/wav2lip/lib/python3.8/site-packages/torch/serialization.py", line 920, in _legacy_load
    magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: invalid load key, '!'.

The above error occurred in my operation

face_segmentation.pth file

There doesn't appear to a working link to relevant face_segmentation.pth file? Please can update the link.

Why the inferencing explicitly require to have GPU?

I am trying to do inferencing but to some reason it's explicitly asking for GPU.

my script is:
python inference.py --checkpoint_path wav2lip_gan.pth --segmentation_path s3fd-619a316812.pth --sr_path esrgan_yunying.pth --face chroma_video_1.mp4 --audio wave_01.mp3 --outfile result.mp4

and the error is:

File "inference.py", line 296, in main
    seg_net = init_parser(args.segmentation_path)
...................................
...................................
File "/home/ubuntu/anaconda3/envs/myenv/lib/python3.7/site-packages/torch/cuda/__init__.py", line 172, in _lazy_init
    torch._C._cuda_init()
RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx

on face_parsing/swap.py file,
under this function, is calling net.cuda(), how do i change it to cpu?

def init_parser(pth_path):
    n_classes = 19
    net = BiSeNet(n_classes=n_classes)
    net.cuda()
    net.load_state_dict(torch.load(pth_path))
    net.eval()
    return net

Run Wav2Lip with frame saving it's not working

Wheni Run, Run Wav2Lip with frame saving., i get a error check the photos below, do i need to run Wav2Lip-HQ pretraining.ipynb, first is that the step 1, then i go to run the 2 step is that correct, Wav2Lip-HQ inference.ipynb,

1
2
*

net_g_67500.pth

Hello, author, could you provide the document:“net_g_67500.pth”?

RuntimeError: storage has wrong size: expected -4754300013468754645 got 32

Disable distributed.
2021-07-26 08:47:50,661 INFO:
____ _ _____ ____
/ __ ) ____ _ _____ ()____/ / / __
/ __ |/ __ `// // // /_ \ / // /
/ /
/ // /
/ /( )/ // /
/ // _, _/
/
/ _
,///// ___///// ||
______ __ __ __ __
/ / ____ / / / / __ __ _____ / / / /
/ / __ / __ \ / __ \ / __ / / / / / / // // /// / /
/ /
/ // /
/ // /
/ // /
/ / / // // // / / /< //
_
/ _/ _/ _/ //_/ __///|| (_)

Version Information:
BasicSR: 1.3.3.10
PyTorch: 1.9.0+cu102
TorchVision: 0.10.0+cu102
2021-07-26 08:47:50,661 INFO:
name: 001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb
model_type: ESRGANModel
scale: 4
num_gpu: 1
manual_seed: 0
datasets:[
train:[
name: face_dataset
type: PairedImageDataset
dataroot_gt: data/hq
dataroot_lq: data/lq
filename_tmpl: {}
io_backend:[
type: disk
]
gt_size: 384
use_flip: True
use_rot: True
use_shuffle: True
num_worker_per_gpu: 1
batch_size_per_gpu: 4
dataset_enlarge_ratio: 1
prefetch_mode: None
phase: train
scale: 4
]
]
network_g:[
type: RRDBNet
num_in_ch: 3
num_out_ch: 3
num_feat: 64
num_block: 23
]
network_d:[
type: VGGStyleDiscriminator128
num_in_ch: 3
num_feat: 64
]
path:[
pretrain_network_g: None
strict_load_g: True
resume_state: checkpoints/pretrained.state
experiments_root: /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb
models: /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb/models
training_states: /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb/training_states
log: /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb
visualization: /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb/visualization
]
train:[
optim_g:[
type: Adam
lr: 0.0001
weight_decay: 0
betas: [0.9, 0.99]
]
optim_d:[
type: Adam
lr: 0.0001
weight_decay: 0
betas: [0.9, 0.99]
]
scheduler:[
type: MultiStepLR
milestones: [50000, 100000, 200000, 300000]
gamma: 0.5
]
total_iter: 150000
warmup_iter: -1
pixel_opt:[
type: L1Loss
loss_weight: 0.01
reduction: mean
]
perceptual_opt:[
type: PerceptualLoss
layer_weights:[
conv5_4: 1
]
vgg_type: vgg19
use_input_norm: True
range_norm: False
perceptual_weight: 1.0
style_weight: 0
criterion: l1
]
gan_opt:[
type: GANLoss
gan_type: vanilla
real_label_val: 1.0
fake_label_val: 0.0
loss_weight: 0.005
]
net_d_iters: 1
net_d_init_iters: 0
]
val:[
val_freq: 2500.0
save_img: True
metrics:[
psnr:[
type: calculate_psnr
crop_border: 4
test_y_channel: False
]
]
]
logger:[
print_freq: 100
save_checkpoint_freq: 2500.0
use_tb_logger: True
wandb:[
project: None
resume_id: None
]
]
dist_params:[
backend: nccl
port: 29500
]
is_train: True
dist: False
rank: 0
world_size: 1

2021-07-26 08:47:50.932429: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0
2021-07-26 08:47:52,184 INFO: Dataset [PairedImageDataset] - face_dataset is built.
2021-07-26 08:47:52,184 INFO: Training statistics:
Number of train images: 1730
Dataset enlarge ratio: 1
Batch size per gpu: 4
World size (gpu number): 1
Require iter number per epoch: 433
Total epochs: 346; iters: 150000.
Set pretrain_network_g to /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb/models/net_g_67500.pth
Set pretrain_network_d to /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb/models/net_d_67500.pth
2021-07-26 08:47:52,497 INFO: Network [RRDBNet] is created.
2021-07-26 08:47:52,553 INFO: Network: RRDBNet, with parameters: 16,697,987
2021-07-26 08:47:52,553 INFO: RRDBNet(
(conv_first): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(body): Sequential(
(0): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(1): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(2): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(3): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(4): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(5): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(6): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(7): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(8): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(9): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(10): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(11): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(12): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(13): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(14): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(15): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(16): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(17): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(18): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(19): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(20): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(21): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
(22): RRDB(
(rdb1): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb2): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
(rdb3): ResidualDenseBlock(
(conv1): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv3): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv4): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv5): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
)
)
(conv_body): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv_up1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv_up2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv_hr): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv_last): Conv2d(64, 3, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(lrelu): LeakyReLU(negative_slope=0.2, inplace=True)
)
2021-07-26 08:47:52,616 INFO: Loading RRDBNet model from /content/wav2lip-hq/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb/models/net_g_67500.pth.
Traceback (most recent call last):
File "basicsr/train.py", line 221, in
train_pipeline(root_path)
File "basicsr/train.py", line 138, in train_pipeline
model = build_model(opt)
File "/usr/local/lib/python3.7/dist-packages/basicsr/models/init.py", line 27, in build_model
model = MODEL_REGISTRY.get(opt['model_type'])(opt)
File "/usr/local/lib/python3.7/dist-packages/basicsr/models/sr_model.py", line 29, in init
self.load_network(self.net_g, load_path, self.opt['path'].get('strict_load_g', True))
File "/usr/local/lib/python3.7/dist-packages/basicsr/models/base_model.py", line 265, in load_network
load_net = torch.load(load_path, map_location=lambda storage, loc: storage)
File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 608, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 794, in _legacy_load
deserialized_objects[key]._set_from_file(f, offset, f_should_read_directly)
RuntimeError: storage has wrong size: expected -4754300013468754645 got 32

RuntimeError: Error(s) in loading state_dict for VGGStyleDiscriminator128

RuntimeError: Error(s) in loading state_dict for VGGStyleDiscriminator128:
Missing key(s) in state_dict: "conv0_0.weight", "conv0_0.bias", "conv0_1.weight", "bn0_1.weight", "bn0_1.bias", "bn0_1.running_mean", "bn0_1.running_var", "conv1_0.weight", "bn1_0.weight", "bn1_0.bias", "bn1_0.running_mean", "bn1_0.running_var", "conv1_1.weight", "bn1_1.weight", "bn1_1.bias", "bn1_1.running_mean", "bn1_1.running_var", "conv2_0.weight", "bn2_0.weight", "bn2_0.bias", "bn2_0.running_mean", "bn2_0.running_var", "conv2_1.weight", "bn2_1.weight", "bn2_1.bias", "bn2_1.running_mean", "bn2_1.running_var", "conv3_0.weight", "bn3_0.weight", "bn3_0.bias", "bn3_0.running_mean", "bn3_0.running_var", "conv3_1.weight", "bn3_1.weight", "bn3_1.bias", "bn3_1.running_mean", "bn3_1.running_var", "conv4_0.weight", "bn4_0.weight", "bn4_0.bias", "bn4_0.running_mean", "bn4_0.running_var", "conv4_1.weight", "bn4_1.weight", "bn4_1.bias", "bn4_1.running_mean", "bn4_1.running_var", "linear1.weight", "linear1.bias", "linear2.weight", "linear2.bias".
Unexpected key(s) in state_dict: "conv_first.weight", "conv_first.bias", "body.0.rdb1.conv1.weight", "body.0.rdb1.conv1.bias", "body.0.rdb1.conv2.weight", "body.0.rdb1.conv2.bias", "body.0.rdb1.conv3.weight", "body.0.rdb1.conv3.bias", "body.0.rdb1.conv4.weight", "body.0.rdb1.conv4.bias", "body.0.rdb1.conv5.weight", "body.0.rdb1.conv5.bias", "body.0.rdb2.conv1.weight", "body.0.rdb2.conv1.bias", "body.0.rdb2.conv2.weight", "body.0.rdb2.conv2.bias", "body.0.rdb2.conv3.weight", "body.0.rdb2.conv3.bias", "body.0.rdb2.conv4.weight", "body.0.rdb2.conv4.bias", "body.0.rdb2.conv5.weight", "body.0.rdb2.conv5.bias", "body.0.rdb3.conv1.weight", "body.0.rdb3.conv1.bias", "body.0.rdb3.conv2.weight", "body.0.rdb3.conv2.bias", "body.0.rdb3.conv3.weight", "body.0.rdb3.conv3.bias", "body.0.rdb3.conv4.weight", "body.0.rdb3.conv4.bias", "body.0.rdb3.conv5.weight", "body.0.rdb3.conv5.bias", "body.1.rdb1.conv1.weight", "body.1.rdb1.conv1.bias", "body.1.rdb1.conv2.weight", "body.1.rdb1.conv2.bias", "body.1.rdb1.conv3.weight", "body.1.rdb1.conv3.bias", "body.1.rdb1.conv4.weight", "body.1.rdb1.conv4.bias", "body.1.rdb1.conv5.weight", "body.1.rdb1.conv5.bias", "body.1.rdb2.conv1.weight", "body.1.rdb2.conv1.bias", "body.1.rdb2.conv2.weight", "body.1.rdb2.conv2.bias", "body.1.rdb2.conv3.weight", "body.1.rdb2.conv3.bias", "body.1.rdb2.conv4.weight", "body.1.rdb2.conv4.bias", "body.1.rdb2.conv5.weight", "body.1.rdb2.conv5.bias", "body.1.rdb3.conv1.weight", "body.1.rdb3.conv1.bias", "body.1.rdb3.conv2.weight", "body.1.rdb3.conv2.bias", "body.1.rdb3.conv3.weight", "body.1.rdb3.conv3.bias", "body.1.rdb3.conv4.weight", "body.1.rdb3.conv4.bias", "body.1.rdb3.conv5.weight", "body.1.rdb3.conv5.bias", "body.2.rdb1.conv1.weight", "body.2.rdb1.conv1.bias", "body.2.rdb1.conv2.weight", "body.2.rdb1.conv2.bias", "body.2.rdb1.conv3.weight", "body.2.rdb1.conv3.bias", "body.2.rdb1.conv4.weight", "body.2.rdb1.conv4.bias", "body.2.rdb1.conv5.weight", "body.2.rdb1.conv5.bias", "body.2.rdb2.conv1.weight", "body.2.rdb2.conv1.bias", "body.2.rdb2.conv2.weight", "body.2.rdb2.conv2.bias", "body.2.rdb2.conv3.weight", "body.2.rdb2.conv3.bias", "body.2.rdb2.conv4.weight", "body.2.rdb2.conv4.bias", "body.2.rdb2.conv5.weight", "body.2.rdb2.conv5.bias", "body.2.rdb3.conv1.weight", "body.2.rdb3.conv1.bias", "body.2.rdb3.conv2.weight", "body.2.rdb3.conv2.bias", "body.2.rdb3.conv3.weight", "body.2.rdb3.conv3.bias", "body.2.rdb3.conv4.weight", "body.2.rdb3.conv4.bias", "body.2.rdb3.conv5.weight", "body.2.rdb3.conv5.bias", "body.3.rdb1.conv1.weight", "body.3.rdb1.conv1.bias", "body.3.rdb1.conv2.weight", "body.3.rdb1.conv2.bias", "body.3.rdb1.conv3.weight", "body.3.rdb1.conv3.bias", "body.3.rdb1.conv4.weight", "body.3.rdb1.conv4.bias", "body.3.rdb1.conv5.weight", "body.3.rdb1.conv5.bias", "body.3.rdb2.conv1.weight", "body.3.rdb2.conv1.bias", "body.3.rdb2.conv2.weight", "body.3.rdb2.conv2.bias", "body.3.rdb2.conv3.weight", "body.3.rdb2.conv3.bias", "body.3.rdb2.conv4.weight", "body.3.rdb2.conv4.bias", "body.3.rdb2.conv5.weight", "body.3.rdb2.conv5.bias", "body.3.rdb3.conv1.weight", "body.3.rdb3.conv1.bias", "body.3.rdb3.conv2.weight", "body.3.rdb3.conv2.bias", "body.3.rdb3.conv3.weight", "body.3.rdb3.conv3.bias", "body.3.rdb3.conv4.weight", "body.3.rdb3.conv4.bias", "body.3.rdb3.conv5.weight", "body.3.rdb3.conv5.bias", "body.4.rdb1.conv1.weight", "body.4.rdb1.conv1.bias", "body.4.rdb1.conv2.weight", "body.4.rdb1.conv2.bias", "body.4.rdb1.conv3.weight", "body.4.rdb1.conv3.bias", "body.4.rdb1.conv4.weight", "body.4.rdb1.conv4.bias", "body.4.rdb1.conv5.weight", "body.4.rdb1.conv5.bias", "body.4.rdb2.conv1.weight", "body.4.rdb2.conv1.bias", "body.4.rdb2.conv2.weight", "body.4.rdb2.conv2.bias", "body.4.rdb2.conv3.weight", "body.4.rdb2.conv3.bias", "body.4.rdb2.conv4.weight", "body.4.rdb2.conv4.bias", "body.4.rdb2.conv5.weight", "body.4.rdb2.conv5.bias", "body.4.rdb3.conv1.weight", "body.4.rdb3.conv1.bias", "body.4.rdb3.conv2.weight", "body.4.rdb3.conv2.bias", "body.4.rdb3.conv3.weight", "body.4.rdb3.conv3.bias", "body.4.rdb3.conv4.weight", "body.4.rdb3.conv4.bias", "body.4.rdb3.conv5.weight", "body.4.rdb3.conv5.bias", "body.5.rdb1.conv1.weight", "body.5.rdb1.conv1.bias", "body.5.rdb1.conv2.weight", "body.5.rdb1.conv2.bias", "body.5.rdb1.conv3.weight", "body.5.rdb1.conv3.bias", "body.5.rdb1.conv4.weight", "body.5.rdb1.conv4.bias", "body.5.rdb1.conv5.weight", "body.5.rdb1.conv5.bias", "body.5.rdb2.conv1.weight", "body.5.rdb2.conv1.bias", "body.5.rdb2.conv2.weight", "body.5.rdb2.conv2.bias", "body.5.rdb2.conv3.weight", "body.5.rdb2.conv3.bias", "body.5.rdb2.conv4.weight", "body.5.rdb2.conv4.bias", "body.5.rdb2.conv5.weight", "body.5.rdb2.conv5.bias", "body.5.rdb3.conv1.weight", "body.5.rdb3.conv1.bias", "body.5.rdb3.conv2.weight", "body.5.rdb3.conv2.bias", "body.5.rdb3.conv3.weight", "body.5.rdb3.conv3.bias", "body.5.rdb3.conv4.weight", "body.5.rdb3.conv4.bias", "body.5.rdb3.conv5.weight", "body.5.rdb3.conv5.bias", "body.6.rdb1.conv1.weight", "body.6.rdb1.conv1.bias", "body.6.rdb1.conv2.weight", "body.6.rdb1.conv2.bias", "body.6.rdb1.conv3.weight", "body.6.rdb1.conv3.bias", "body.6.rdb1.conv4.weight", "body.6.rdb1.conv4.bias", "body.6.rdb1.conv5.weight", "body.6.rdb1.conv5.bias", "body.6.rdb2.conv1.weight", "body.6.rdb2.conv1.bias", "body.6.rdb2.conv2.weight", "body.6.rdb2.conv2.bias", "body.6.rdb2.conv3.weight", "body.6.rdb2.conv3.bias", "body.6.rdb2.conv4.weight", "body.6.rdb2.conv4.bias", "body.6.rdb2.conv5.weight", "body.6.rdb2.conv5.bias", "body.6.rdb3.conv1.weight", "body.6.rdb3.conv1.bias", "body.6.rdb3.conv2.weight", "body.6.rdb3.conv2.bias", "body.6.rdb3.conv3.weight", "body.6.rdb3.conv3.bias", "body.6.rdb3.conv4.weight", "body.6.rdb3.conv4.bias", "body.6.rdb3.conv5.weight", "body.6.rdb3.conv5.bias", "body.7.rdb1.conv1.weight", "body.7.rdb1.conv1.bias", "body.7.rdb1.conv2.weight", "body.7.rdb1.conv2.bias", "body.7.rdb1.conv3.weight", "body.7.rdb1.conv3.bias", "body.7.rdb1.conv4.weight", "body.7.rdb1.conv4.bias", "body.7.rdb1.conv5.weight", "body.7.rdb1.conv5.bias", "body.7.rdb2.conv1.weight", "body.7.rdb2.conv1.bias", "body.7.rdb2.conv2.weight", "body.7.rdb2.conv2.bias", "body.7.rdb2.conv3.weight", "body.7.rdb2.conv3.bias", "body.7.rdb2.conv4.weight", "body.7.rdb2.conv4.bias", "body.7.rdb2.conv5.weight", "body.7.rdb2.conv5.bias", "body.7.rdb3.conv1.weight", "body.7.rdb3.conv1.bias", "body.7.rdb3.conv2.weight", "body.7.rdb3.conv2.bias", "body.7.rdb3.conv3.weight", "body.7.rdb3.conv3.bias", "body.7.rdb3.conv4.weight", "body.7.rdb3.conv4.bias", "body.7.rdb3.conv5.weight", "body.7.rdb3.conv5.bias", "body.8.rdb1.conv1.weight", "body.8.rdb1.conv1.bias", "body.8.rdb1.conv2.weight", "body.8.rdb1.conv2.bias", "body.8.rdb1.conv3.weight", "body.8.rdb1.conv3.bias", "body.8.rdb1.conv4.weight", "body.8.rdb1.conv4.bias", "body.8.rdb1.conv5.weight", "body.8.rdb1.conv5.bias", "body.8.rdb2.conv1.weight", "body.8.rdb2.conv1.bias", "body.8.rdb2.conv2.weight", "body.8.rdb2.conv2.bias", "body.8.rdb2.conv3.weight", "body.8.rdb2.conv3.bias", "body.8.rdb2.conv4.weight", "body.8.rdb2.conv4.bias", "body.8.rdb2.conv5.weight", "body.8.rdb2.conv5.bias", "body.8.rdb3.conv1.weight", "body.8.rdb3.conv1.bias", "body.8.rdb3.conv2.weight", "body.8.rdb3.conv2.bias", "body.8.rdb3.conv3.weight", "body.8.rdb3.conv3.bias", "body.8.rdb3.conv4.weight", "body.8.rdb3.conv4.bias", "body.8.rdb3.conv5.weight", "body.8.rdb3.conv5.bias", "body.9.rdb1.conv1.weight", "body.9.rdb1.conv1.bias", "body.9.rdb1.conv2.weight", "body.9.rdb1.conv2.bias", "body.9.rdb1.conv3.weight", "body.9.rdb1.conv3.bias", "body.9.rdb1.conv4.weight", "body.9.rdb1.conv4.bias", "body.9.rdb1.conv5.weight", "body.9.rdb1.conv5.bias", "body.9.rdb2.conv1.weight", "body.9.rdb2.conv1.bias", "body.9.rdb2.conv2.weight", "body.9.rdb2.conv2.bias", "body.9.rdb2.conv3.weight", "body.9.rdb2.conv3.bias", "body.9.rdb2.conv4.weight", "body.9.rdb2.conv4.bias", "body.9.rdb2.conv5.weight", "body.9.rdb2.conv5.bias", "body.9.rdb3.conv1.weight", "body.9.rdb3.conv1.bias", "body.9.rdb3.conv2.weight", "body.9.rdb3.conv2.bias", "body.9.rdb3.conv3.weight", "body.9.rdb3.conv3.bias", "body.9.rdb3.conv4.weight", "body.9.rdb3.conv4.bias", "body.9.rdb3.conv5.weight", "body.9.rdb3.conv5.bias", "body.10.rdb1.conv1.weight", "body.10.rdb1.conv1.bias", "body.10.rdb1.conv2.weight", "body.10.rdb1.conv2.bias", "body.10.rdb1.conv3.weight", "body.10.rdb1.conv3.bias", "body.10.rdb1.conv4.weight", "body.10.rdb1.conv4.bias", "body.10.rdb1.conv5.weight", "body.10.rdb1.conv5.bias", "body.10.rdb2.conv1.weight", "body.10.rdb2.conv1.bias", "body.10.rdb2.conv2.weight", "body.10.rdb2.conv2.bias", "body.10.rdb2.conv3.weight", "body.10.rdb2.conv3.bias", "body.10.rdb2.conv4.weight", "body.10.rdb2.conv4.bias", "body.10.rdb2.conv5.weight", "body.10.rdb2.conv5.bias", "body.10.rdb3.conv1.weight", "body.10.rdb3.conv1.bias", "body.10.rdb3.conv2.weight", "body.10.rdb3.conv2.bias", "body.10.rdb3.conv3.weight", "body.10.rdb3.conv3.bias", "body.10.rdb3.conv4.weight", "body.10.rdb3.conv4.bias", "body.10.rdb3.conv5.weight", "body.10.rdb3.conv5.bias", "body.11.rdb1.conv1.weight", "body.11.rdb1.conv1.bias", "body.11.rdb1.conv2.weight", "body.11.rdb1.conv2.bias", "body.11.rdb1.conv3.weight", "body.11.rdb1.conv3.bias", "body.11.rdb1.conv4.weight", "body.11.rdb1.conv4.bias", "body.11.rdb1.conv5.weight", "body.11.rdb1.conv5.bias", "body.11.rdb2.conv1.weight", "body.11.rdb2.conv1.bias", "body.11.rdb2.conv2.weight", "body.11.rdb2.conv2.bias", "body.11.rdb2.conv3.weight", "body.11.rdb2.conv3.bias", "body.11.rdb2.conv4.weight", "body.11.rdb2.conv4.bias", "body.11.rdb2.conv5.weight", "body.11.rdb2.conv5.bias", "body.11.rdb3.conv1.weight", "body.11.rdb3.conv1.bias", "body.11.rdb3.conv2.weight", "body.11.rdb3.conv2.bias", "body.11.rdb3.conv3.weight", "body.11.rdb3.conv3.bias", "body.11.rdb3.conv4.weight", "body.11.rdb3.conv4.bias", "body.11.rdb3.conv5.weight", "body.11.rdb3.conv5.bias", "body.12.rdb1.conv1.weight", "body.12.rdb1.conv1.bias", "body.12.rdb1.conv2.weight", "body.12.rdb1.conv2.bias", "body.12.rdb1.conv3.weight", "body.12.rdb1.conv3.bias", "body.12.rdb1.conv4.weight", "body.12.rdb1.conv4.bias", "body.12.rdb1.conv5.weight", "body.12.rdb1.conv5.bias", "body.12.rdb2.conv1.weight", "body.12.rdb2.conv1.bias", "body.12.rdb2.conv2.weight", "body.12.rdb2.conv2.bias", "body.12.rdb2.conv3.weight", "body.12.rdb2.conv3.bias", "body.12.rdb2.conv4.weight", "body.12.rdb2.conv4.bias", "body.12.rdb2.conv5.weight", "body.12.rdb2.conv5.bias", "body.12.rdb3.conv1.weight", "body.12.rdb3.conv1.bias", "body.12.rdb3.conv2.weight", "body.12.rdb3.conv2.bias", "body.12.rdb3.conv3.weight", "body.12.rdb3.conv3.bias", "body.12.rdb3.conv4.weight", "body.12.rdb3.conv4.bias", "body.12.rdb3.conv5.weight", "body.12.rdb3.conv5.bias", "body.13.rdb1.conv1.weight", "body.13.rdb1.conv1.bias", "body.13.rdb1.conv2.weight", "body.13.rdb1.conv2.bias", "body.13.rdb1.conv3.weight", "body.13.rdb1.conv3.bias", "body.13.rdb1.conv4.weight", "body.13.rdb1.conv4.bias", "body.13.rdb1.conv5.weight", "body.13.rdb1.conv5.bias", "body.13.rdb2.conv1.weight", "body.13.rdb2.conv1.bias", "body.13.rdb2.conv2.weight", "body.13.rdb2.conv2.bias", "body.13.rdb2.conv3.weight", "body.13.rdb2.conv3.bias", "body.13.rdb2.conv4.weight", "body.13.rdb2.conv4.bias", "body.13.rdb2.conv5.weight", "body.13.rdb2.conv5.bias", "body.13.rdb3.conv1.weight", "body.13.rdb3.conv1.bias", "body.13.rdb3.conv2.weight", "body.13.rdb3.conv2.bias", "body.13.rdb3.conv3.weight", "body.13.rdb3.conv3.bias", "body.13.rdb3.conv4.weight", "body.13.rdb3.conv4.bias", "body.13.rdb3.conv5.weight", "body.13.rdb3.conv5.bias", "body.14.rdb1.conv1.weight", "body.14.rdb1.conv1.bias", "body.14.rdb1.conv2.weight", "body.14.rdb1.conv2.bias", "body.14.rdb1.conv3.weight", "body.14.rdb1.conv3.bias", "body.14.rdb1.conv4.weight", "body.14.rdb1.conv4.bias", "body.14.rdb1.conv5.weight", "body.14.rdb1.conv5.bias", "body.14.rdb2.conv1.weight", "body.14.rdb2.conv1.bias", "body.14.rdb2.conv2.weight", "body.14.rdb2.conv2.bias", "body.14.rdb2.conv3.weight", "body.14.rdb2.conv3.bias", "body.14.rdb2.conv4.weight", "body.14.rdb2.conv4.bias", "body.14.rdb2.conv5.weight", "body.14.rdb2.conv5.bias", "body.14.rdb3.conv1.weight", "body.14.rdb3.conv1.bias", "body.14.rdb3.conv2.weight", "body.14.rdb3.conv2.bias", "body.14.rdb3.conv3.weight", "body.14.rdb3.conv3.bias", "body.14.rdb3.conv4.weight", "body.14.rdb3.conv4.bias", "body.14.rdb3.conv5.weight", "body.14.rdb3.conv5.bias", "body.15.rdb1.conv1.weight", "body.15.rdb1.conv1.bias", "body.15.rdb1.conv2.weight", "body.15.rdb1.conv2.bias", "body.15.rdb1.conv3.weight", "body.15.rdb1.conv3.bias", "body.15.rdb1.conv4.weight", "body.15.rdb1.conv4.bias", "body.15.rdb1.conv5.weight", "body.15.rdb1.conv5.bias", "body.15.rdb2.conv1.weight", "body.15.rdb2.conv1.bias", "body.15.rdb2.conv2.weight", "body.15.rdb2.conv2.bias", "body.15.rdb2.conv3.weight", "body.15.rdb2.conv3.bias", "body.15.rdb2.conv4.weight", "body.15.rdb2.conv4.bias", "body.15.rdb2.conv5.weight", "body.15.rdb2.conv5.bias", "body.15.rdb3.conv1.weight", "body.15.rdb3.conv1.bias", "body.15.rdb3.conv2.weight", "body.15.rdb3.conv2.bias", "body.15.rdb3.conv3.weight", "body.15.rdb3.conv3.bias", "body.15.rdb3.conv4.weight", "body.15.rdb3.conv4.bias", "body.15.rdb3.conv5.weight", "body.15.rdb3.conv5.bias", "body.16.rdb1.conv1.weight", "body.16.rdb1.conv1.bias", "body.16.rdb1.conv2.weight", "body.16.rdb1.conv2.bias", "body.16.rdb1.conv3.weight", "body.16.rdb1.conv3.bias", "body.16.rdb1.conv4.weight", "body.16.rdb1.conv4.bias", "body.16.rdb1.conv5.weight", "body.16.rdb1.conv5.bias", "body.16.rdb2.conv1.weight", "body.16.rdb2.conv1.bias", "body.16.rdb2.conv2.weight", "body.16.rdb2.conv2.bias", "body.16.rdb2.conv3.weight", "body.16.rdb2.conv3.bias", "body.16.rdb2.conv4.weight", "body.16.rdb2.conv4.bias", "body.16.rdb2.conv5.weight", "body.16.rdb2.conv5.bias", "body.16.rdb3.conv1.weight", "body.16.rdb3.conv1.bias", "body.16.rdb3.conv2.weight", "body.16.rdb3.conv2.bias", "body.16.rdb3.conv3.weight", "body.16.rdb3.conv3.bias", "body.16.rdb3.conv4.weight", "body.16.rdb3.conv4.bias", "body.16.rdb3.conv5.weight", "body.16.rdb3.conv5.bias", "body.17.rdb1.conv1.weight", "body.17.rdb1.conv1.bias", "body.17.rdb1.conv2.weight", "body.17.rdb1.conv2.bias", "body.17.rdb1.conv3.weight", "body.17.rdb1.conv3.bias", "body.17.rdb1.conv4.weight", "body.17.rdb1.conv4.bias", "body.17.rdb1.conv5.weight", "body.17.rdb1.conv5.bias", "body.17.rdb2.conv1.weight", "body.17.rdb2.conv1.bias", "body.17.rdb2.conv2.weight", "body.17.rdb2.conv2.bias", "body.17.rdb2.conv3.weight", "body.17.rdb2.conv3.bias", "body.17.rdb2.conv4.weight", "body.17.rdb2.conv4.bias", "body.17.rdb2.conv5.weight", "body.17.rdb2.conv5.bias", "body.17.rdb3.conv1.weight", "body.17.rdb3.conv1.bias", "body.17.rdb3.conv2.weight", "body.17.rdb3.conv2.bias", "body.17.rdb3.conv3.weight", "body.17.rdb3.conv3.bias", "body.17.rdb3.conv4.weight", "body.17.rdb3.conv4.bias", "body.17.rdb3.conv5.weight", "body.17.rdb3.conv5.bias", "body.18.rdb1.conv1.weight", "body.18.rdb1.conv1.bias", "body.18.rdb1.conv2.weight", "body.18.rdb1.conv2.bias", "body.18.rdb1.conv3.weight", "body.18.rdb1.conv3.bias", "body.18.rdb1.conv4.weight", "body.18.rdb1.conv4.bias", "body.18.rdb1.conv5.weight", "body.18.rdb1.conv5.bias", "body.18.rdb2.conv1.weight", "body.18.rdb2.conv1.bias", "body.18.rdb2.conv2.weight", "body.18.rdb2.conv2.bias", "body.18.rdb2.conv3.weight", "body.18.rdb2.conv3.bias", "body.18.rdb2.conv4.weight", "body.18.rdb2.conv4.bias", "body.18.rdb2.conv5.weight", "body.18.rdb2.conv5.bias", "body.18.rdb3.conv1.weight", "body.18.rdb3.conv1.bias", "body.18.rdb3.conv2.weight", "body.18.rdb3.conv2.bias", "body.18.rdb3.conv3.weight", "body.18.rdb3.conv3.bias", "body.18.rdb3.conv4.weight", "body.18.rdb3.conv4.bias", "body.18.rdb3.conv5.weight", "body.18.rdb3.conv5.bias", "body.19.rdb1.conv1.weight", "body.19.rdb1.conv1.bias", "body.19.rdb1.conv2.weight", "body.19.rdb1.conv2.bias", "body.19.rdb1.conv3.weight", "body.19.rdb1.conv3.bias", "body.19.rdb1.conv4.weight", "body.19.rdb1.conv4.bias", "body.19.rdb1.conv5.weight", "body.19.rdb1.conv5.bias", "body.19.rdb2.conv1.weight", "body.19.rdb2.conv1.bias", "body.19.rdb2.conv2.weight", "body.19.rdb2.conv2.bias", "body.19.rdb2.conv3.weight", "body.19.rdb2.conv3.bias", "body.19.rdb2.conv4.weight", "body.19.rdb2.conv4.bias", "body.19.rdb2.conv5.weight", "body.19.rdb2.conv5.bias", "body.19.rdb3.conv1.weight", "body.19.rdb3.conv1.bias", "body.19.rdb3.conv2.weight", "body.19.rdb3.conv2.bias", "body.19.rdb3.conv3.weight", "body.19.rdb3.conv3.bias", "body.19.rdb3.conv4.weight", "body.19.rdb3.conv4.bias", "body.19.rdb3.conv5.weight", "body.19.rdb3.conv5.bias", "body.20.rdb1.conv1.weight", "body.20.rdb1.conv1.bias", "body.20.rdb1.conv2.weight", "body.20.rdb1.conv2.bias", "body.20.rdb1.conv3.weight", "body.20.rdb1.conv3.bias", "body.20.rdb1.conv4.weight", "body.20.rdb1.conv4.bias", "body.20.rdb1.conv5.weight", "body.20.rdb1.conv5.bias", "body.20.rdb2.conv1.weight", "body.20.rdb2.conv1.bias", "body.20.rdb2.conv2.weight", "body.20.rdb2.conv2.bias", "body.20.rdb2.conv3.weight", "body.20.rdb2.conv3.bias", "body.20.rdb2.conv4.weight", "body.20.rdb2.conv4.bias", "body.20.rdb2.conv5.weight", "body.20.rdb2.conv5.bias", "body.20.rdb3.conv1.weight", "body.20.rdb3.conv1.bias", "body.20.rdb3.conv2.weight", "body.20.rdb3.conv2.bias", "body.20.rdb3.conv3.weight", "body.20.rdb3.conv3.bias", "body.20.rdb3.conv4.weight", "body.20.rdb3.conv4.bias", "body.20.rdb3.conv5.weight", "body.20.rdb3.conv5.bias", "body.21.rdb1.conv1.weight", "body.21.rdb1.conv1.bias", "body.21.rdb1.conv2.weight", "body.21.rdb1.conv2.bias", "body.21.rdb1.conv3.weight", "body.21.rdb1.conv3.bias", "body.21.rdb1.conv4.weight", "body.21.rdb1.conv4.bias", "body.21.rdb1.conv5.weight", "body.21.rdb1.conv5.bias", "body.21.rdb2.conv1.weight", "body.21.rdb2.conv1.bias", "body.21.rdb2.conv2.weight", "body.21.rdb2.conv2.bias", "body.21.rdb2.conv3.weight", "body.21.rdb2.conv3.bias", "body.21.rdb2.conv4.weight", "body.21.rdb2.conv4.bias", "body.21.rdb2.conv5.weight", "body.21.rdb2.conv5.bias", "body.21.rdb3.conv1.weight", "body.21.rdb3.conv1.bias", "body.21.rdb3.conv2.weight", "body.21.rdb3.conv2.bias", "body.21.rdb3.conv3.weight", "body.21.rdb3.conv3.bias", "body.21.rdb3.conv4.weight", "body.21.rdb3.conv4.bias", "body.21.rdb3.conv5.weight", "body.21.rdb3.conv5.bias", "body.22.rdb1.conv1.weight", "body.22.rdb1.conv1.bias", "body.22.rdb1.conv2.weight", "body.22.rdb1.conv2.bias", "body.22.rdb1.conv3.weight", "body.22.rdb1.conv3.bias", "body.22.rdb1.conv4.weight", "body.22.rdb1.conv4.bias", "body.22.rdb1.conv5.weight", "body.22.rdb1.conv5.bias", "body.22.rdb2.conv1.weight", "body.22.rdb2.conv1.bias", "body.22.rdb2.conv2.weight", "body.22.rdb2.conv2.bias", "body.22.rdb2.conv3.weight", "body.22.rdb2.conv3.bias", "body.22.rdb2.conv4.weight", "body.22.rdb2.conv4.bias", "body.22.rdb2.conv5.weight", "body.22.rdb2.conv5.bias", "body.22.rdb3.conv1.weight", "body.22.rdb3.conv1.bias", "body.22.rdb3.conv2.weight", "body.22.rdb3.conv2.bias", "body.22.rdb3.conv3.weight", "body.22.rdb3.conv3.bias", "body.22.rdb3.conv4.weight", "body.22.rdb3.conv4.bias", "body.22.rdb3.conv5.weight", "body.22.rdb3.conv5.bias", "conv_body.weight", "conv_body.bias", "conv_up1.weight", "conv_up1.bias", "conv_up2.weight", "conv_up2.bias", "conv_hr.weight", "conv_hr.bias", "conv_last.weight", "conv_last.bias".
[ ]

Input shapes to the VGG discriminator are wrong

When running the model on 384 * 384 size imaged, I get the following error from VGG discriminator in the ESRGAN

assert x.size(2) == 128 and x.size(3) == 128, (f'Input spatial size must be 128x128, '
AssertionError: Input spatial size must be 128x128, but received torch.Size([4, 3, 384, 384]).

net_d_67500 and net_g_67500 models are missing

Are these models available here:

https://drive.google.com/drive/folders/15DgDtfaLASQ3iAPJEVHQF49g9msexECG

I tried to use the ESRGAN models and getting following error:

2021-07-17 21:21:57,934 INFO: Loading VGGStyleDiscriminator128 model from /media/vikas/972ed3bd-d92e-4181-a3db-34137c27f780/vikas/work/john/wav2lip-hq-main/experiments/001_ESRGAN_x4_f64b23_custom16k_500k_B16G1_wandb/models/net_d_67500.pth.
2021-07-17 21:21:57,988 WARNING: Current net - loaded net:
2021-07-17 21:21:57,988 WARNING:   bn0_1.bias
2021-07-17 21:21:57,988 WARNING:   bn0_1.num_batches_tracked
2021-07-17 21:21:57,988 WARNING:   bn0_1.running_mean
2021-07-17 21:21:57,988 WARNING:   bn0_1.running_var
..
..
..
2021-07-17 21:21:58,014 WARNING:   conv_hr.weight
2021-07-17 21:21:58,014 WARNING:   conv_last.bias
2021-07-17 21:21:58,014 WARNING:   conv_last.weight
2021-07-17 21:21:58,014 WARNING:   conv_up1.bias
2021-07-17 21:21:58,014 WARNING:   conv_up1.weight
2021-07-17 21:21:58,014 WARNING:   conv_up2.bias
2021-07-17 21:21:58,014 WARNING:   conv_up2.weight
Traceback (most recent call last):
  File "basicsr/train.py", line 221, in <module>
    train_pipeline(root_path)
  File "basicsr/train.py", line 138, in train_pipeline
    model = build_model(opt)
  File "/media/vikas/972ed3bd-d92e-4181-a3db-34137c27f780/vikas/work/john/wav2lip-hq-main/basicsr/models/__init__.py", line 27, in build_model
    model = MODEL_REGISTRY.get(opt['model_type'])(opt)
  File "/media/vikas/972ed3bd-d92e-4181-a3db-34137c27f780/vikas/work/john/wav2lip-hq-main/basicsr/models/sr_model.py", line 32, in __init__
    self.init_training_settings()
  File "/media/vikas/972ed3bd-d92e-4181-a3db-34137c27f780/vikas/work/john/wav2lip-hq-main/basicsr/models/srgan_model.py", line 42, in init_training_settings
    self.load_network(self.net_d, load_path, self.opt['path'].get('strict_load_d', True))
  File "/media/vikas/972ed3bd-d92e-4181-a3db-34137c27f780/vikas/work/john/wav2lip-hq-main/basicsr/models/base_model.py", line 261, in load_network
    net.load_state_dict(load_net, strict=strict)
  File "/home/vikas/anaconda3/envs/py36/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1407, in load_state_dict
    self.__class__.__name__, "\n\t".join(error_msgs)))

Training without pretrained state

I removed the line
resume_state: checkpoints/pretrained.state from train_basicsr.yml

Then got the error about 128 x 128 dimensions. So I resized "hq" images to 128x128 and "lq" images to 32x32.

Now I am getting error
LQ (32, 32) is smaller than patch size (96, 96)
in
/basicsr/data/transforms.py", line 59, in paired_random_crop

Where exactly need to set this patch size?
Has anyone got the training working without the pretrained state?

Result: Face Parts in Different Colors - How to fix that?

I've tested with JPG / PNG and a VIDEO and I get the same result:

  • It shows parts of the face in different colors, like it's mapping the areas of nose, face, etc.. in different colors and it's not showing the actual clean final result
  • It is very blurry (like the original Wav2Lip)
  • The more the video progress the more blurry it gets
  • As the video result progress sometimes mouth/teeth appears on random places many times = many mouths
  • I've tested on short videos (few seconds 3 - 45 seconds long) I get the same results
  • I used English Audio (tried different audios just in case) I get the same results
  • I tried different resolutions, it doesn't matter I still get the same results

I followed all the instructions using Anaconda on Windows 10 machine, I created a dedicated 'Wav2Lip-HQ' environment, installed using the requirement file and downloaded all the needed models and placed them where needed, also did the 'wget' one, but still can't get a clean result.

Did I miss something?

Can somebody explain how can I fix that issue and make it works?
Thanks ahead!

Problem when run colab (Traceback (most recent call last): File "inference.py", line 355....)

Using cuda for inference.
Extracting raw audio...
ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'videos/shulman_30s.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.83.100
Duration: 00:00:30.88, start: 0.000000, bitrate: 165 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 256x144 [SAR 1:1 DAR 16:9], 30 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'temp/temp.wav':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
ISFT : Lavf58.29.100
Stream #0:0(eng): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc58.54.100 pcm_s16le
size= 5168kB time=00:00:30.00 bitrate=1411.2kbits/s speed= 792x
video:0kB audio:5168kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.001474%
(80, 2401)
Length of mel chunks: 895
0% 0/7 [00:00<?, ?it/s]Reading video frames from start...
Loading segmentation network...
0% 0/7 [01:15<?, ?it/s]
Traceback (most recent call last):
File "inference.py", line 355, in
main()
File "inference.py", line 296, in main
seg_net = init_parser(args.segmentation_path)
File "/content/wav2lip-hq/face_parsing/swap.py", line 13, in init_parser
net.load_state_dict(torch.load(pth_path))
File "/usr/local/lib/python3.8/dist-packages/torch/serialization.py", line 795, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "/usr/local/lib/python3.8/dist-packages/torch/serialization.py", line 1002, in _legacy_load
magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: invalid load key, '<'.

Can you provide the wav2lip.pth?

Hi!
Thank you so much for making work public : )

I have one question here. In the original GitHub repository, there are two wav2lip models provided-

  1. wav2lip.pth
  2. wav2lip_gan.pth

But in your repository, I could not find the link to the model without GAN. The model without GAN, as mentioned in the original paper, claims to perform better lip sync, but has lower quality.

It would be great it you could make the wav2lip.pth (pytorch model) public too.

Thanks again : )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.