prefacio
Recientemente, necesito ver algún trabajo relacionado con gan, así que escriba un blog para registrar y abrir un agujero.
Como no sé cuándo estará terminado, aquí hay una publicación de blog bien escrita. Si tiene prisa, puede continuar y explicar los detalles técnicos de stylegan~stylegan3 desde
estiloGAN v1
estiloGAN v2
blog de práctica styleGANv2-tiny: https://nn.labml.ai/gan/stylegan/index.html
estiloGAN v3
v3 es una optimización de algunos detalles de v2
https://github.com/NVlabs/stylegan3
También hay un modelo styleganv2 en el almacén de código v3.
Probé el entorno que funciona:
python 3.7.6 torch 1.8.0+cu111 torchvision 0.9.0+cu111
puede también ser
Python 3.9.16 torch 1.9.1 torchvision 0.10.1
Este último se puede hacer así.
conda create --name stylegan3 python=3.9.16
conda install pytorch=1.9.1 cudatoolkit=11.1 -c pytorch
Luego pipa algunos paquetes
numpy
requests
click
pillow
Todavía puede haber este problema cuando se ejecuta: torch.utils.cpp extension.load
atascado y sin respuesta
, es posible que deba ir a este directorio para limpiarlo
/home/【用户名】/.cache/torch_extensions
Es posible instalar una versión inferior de setuptools (si no hay AttributeError: module 'distutils' has no attribute 'version'
error, no lo use)
pip install setuptools==59.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
Tal vez el servidor sea un poco lento para descargar esta cosa, esta cosa de 233M se colocará /home/【用户名】/.cache/torch/hub/checkpoints
aquí .
https://download.pytorch.org/models/alexnet-owt-7be5be79.pth
También hay una
descarga: "https://raw.githubusercontent.com/richzhang/PerceptualSimilarity/master/lpips/weights/v0.1/alex.pth" a /home/【User Name】/.cache/torch/hub /puntos de control/alex.pth
por cierto, registre el uso de dataloader collate_fn
from torch.utils.data import Dataset
from PIL import Image
from utils import data_utils
import torch
class MyInferenceDataset(Dataset):
def __init__(self, root, opts, transform=None, preprocess=None):
self.paths = sorted(data_utils.make_dataset(root))
self.transform = transform
self.opts = opts
def __len__(self):
return len(self.paths)
def __getitem__(self, index):
from_path = self.paths[index]
# print('from_path:', from_path)
from_im = Image.open(from_path).convert('RGB')
if self.transform:
from_im = self.transform(from_im)
# save_image(from_im, 'tmp/{}_from_path.jpg'.format(from_path))
return from_im, from_path
@staticmethod
def collate_fn(batch):
# 官方实现的default_collate可以参考
# https://github.com/pytorch/pytorch/blob/67b7e751e6b5931a9f45274653f4f653a4e6cdf6/torch/utils/data/_utils/collate.py
images, paths = tuple(zip(*batch))
# images = batch
images = torch.stack(images, dim=0)
# print(images.shape) # torch.Size([2, 3, 224, 224])
return images, paths
Preprocesamiento de su propio conjunto de datos: ejecución de prueba del modelo de aprendizaje profundo (trece): stylegan3