DragGAN
DragGAN copied to clipboard
加载自定义模型模型时报错mismatch
您好, 使用上述代码会在load_state_dict时报错
请问是在加载customgenrator时哪里参数设置的不对吗? 还是在训练时有某些参数是需要写死的呢? 训练使用的是pytorch-ada-pytorch,参数使用的是默认参数,训练了92220张256x256的图片,命令如下 python train.py --outdir=~/training-runs --data=~/mydataset.zip --gpus=1 参数如下 { "num_gpus": 1, "image_snapshot_ticks": 50, "network_snapshot_ticks": 50, "metrics": [ "fid50k_full" ], "random_seed": 0, "training_set_kwargs": { "class_name": "training.dataset.ImageFolderDataset", "path": "./anime.zip", "use_labels": false, "max_size": 92219, "xflip": false, "resolution": 256 }, "data_loader_kwargs": { "pin_memory": true, "num_workers": 3, "prefetch_factor": 2 }, "G_kwargs": { "class_name": "training.networks.Generator", "z_dim": 512, "w_dim": 512, "mapping_kwargs": { "num_layers": 2 }, "synthesis_kwargs": { "channel_base": 16384, "channel_max": 512, "num_fp16_res": 4, "conv_clamp": 256 } }, "D_kwargs": { "class_name": "training.networks.Discriminator", "block_kwargs": {}, "mapping_kwargs": {}, "epilogue_kwargs": { "mbstd_group_size": 4 }, "channel_base": 16384, "channel_max": 512, "num_fp16_res": 4, "conv_clamp": 256 }, "G_opt_kwargs": { "class_name": "torch.optim.Adam", "lr": 0.0025, "betas": [ 0, 0.99 ], "eps": 1e-08 }, "D_opt_kwargs": { "class_name": "torch.optim.Adam", "lr": 0.0025, "betas": [ 0, 0.99 ], "eps": 1e-08 }, "loss_kwargs": { "class_name": "training.loss.StyleGAN2Loss", "r1_gamma": 0.8192 }, "total_kimg": 5000, "batch_size": 16, "batch_gpu": 16, "ema_kimg": 5.0, "ema_rampup": 0.05, "ada_target": 0.6, "augment_kwargs": { "class_name": "training.augment.AugmentPipe", "xflip": 1, "rotate90": 1, "xint": 1, "scale": 1, "rotate": 1, "aniso": 1, "xfrac": 1, "brightness": 1, "contrast": 1, "lumaflip": 1, "hue": 1, "saturation": 1 }, "run_dir": "training-runs/00000-anime-auto1-kimg5000" }
https://github.com/Zeqiang-Lai/DragGAN/issues/60 需要转换格式
您好,这个报错是在转换模型后出现的
欧欧不好意思没注意看,应该是draggan里的模型某些网络层的默认channel数和ckpt对不上,要对应改下。
训练的时候我建议是follow stylegan2 ada与放出ckpt的模型相同的网络配置,这样应该就可以避免不一致的问题。
我这几天有空的时候会增加一个无需转换ckpt的版本,到时候就会很简单了。
期待新版本,另外您的意思是训练的时候这里使用paper256吗(目前是auto,我的训练数据也是256*256) cfg_specs = { 'auto': dict(ref_gpus=-1, kimg=25000, mb=-1, mbstd=-1, fmaps=-1, lrate=-1, gamma=-1, ema=-1, ramp=0.05, map=2), # Populated dynamically based on resolution and GPU count. 'stylegan2': dict(ref_gpus=8, kimg=25000, mb=32, mbstd=4, fmaps=1, lrate=0.002, gamma=10, ema=10, ramp=None, map=8), # Uses mixed-precision, unlike the original StyleGAN2. 'paper256': dict(ref_gpus=8, kimg=25000, mb=64, mbstd=8, fmaps=0.5, lrate=0.0025, gamma=1, ema=20, ramp=None, map=8), 'paper512': dict(ref_gpus=8, kimg=25000, mb=64, mbstd=8, fmaps=1, lrate=0.0025, gamma=0.5, ema=20, ramp=None, map=8), 'paper1024': dict(ref_gpus=8, kimg=25000, mb=32, mbstd=4, fmaps=1, lrate=0.002, gamma=2, ema=10, ramp=None, map=8), 'cifar': dict(ref_gpus=2, kimg=100000, mb=64, mbstd=32, fmaps=1, lrate=0.0025, gamma=0.01, ema=500, ramp=0.05, map=2), }
stylegan ada 官方没有256的ckpt,所以我也不确定能不能找到合适的config。
256分辨率通过转换ckpt不修改代码就能够正确load的模型这里有
https://github.com/self-distilled-stylegan/self-distilled-internet-photos
和他们的256模型对齐配置应该就可以了
我去试试,万分感谢