es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Generar imágenes a partir de un archivo GAN pkl entrenado en escala de grises.

He entrenado un StyleGAN utilizando un conjunto de imágenes en escala de grises, pero ahora estoy estancado en generate.py porque está configurado para generar imágenes RGB. Recibo este error:

ValueError: no hay suficientes datos de imagen

cuando cambié el archivo generate.py de StyleGAN de PyTorch de RGB a L:

ValueError: demasiadas dimensiones: 3> 2.

Este es todo el código generate.py:
https://github.com/mit-han-lab/data-efficient-gans/blob/master/DiffAugment-stylegan2-pytorch/generate.py

He buscado en Internet durante horas y he probado muchas cosas, pero soy bastante nuevo en Python, así que se me han acabado las ideas sobre lo que necesito cambiar en generate.py para poder tener las imágenes. ¿Alguien puede ayudarme, por favor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándonos en los mensajes de error que proporcionaste, parece que el problema está con las dimensiones de las imágenes generadas. El script original generate.py está configurado para generar imágenes RGB, que tienen 3 canales de color (rojo, verde, azul). Sin embargo, dado que entrenaste tu modelo con imágenes en escala de grises, las imágenes generadas solo tienen un canal de color.

    Para solucionar este problema, deberás modificar el script generate.py para manejar correctamente las imágenes en escala de grises. Una aproximación que puedes intentar es modificar el código que carga el modelo del generador para incluir un argumento adicional que especifique el número de canales de entrada. Por ejemplo, podrías cambiar la siguiente línea:

    generator = G_mapping(num_layers=args.G_lod, z_dim=args.latent, w_dim=args.W_dim, mapping_layers=args.mapping_layers)
    

    por:

    generator = G_mapping(num_layers=args.G_lod, z_dim=args.latent, w_dim=args.W_dim, mapping_layers=args.mapping_layers, c_dim=1)
    

    Esto le indicará al modelo que las imágenes de entrada tienen solo un canal de color, en lugar de los 3 canales predeterminados.

    También deberás modificar las partes del código que manejan las imágenes de salida para asegurarte de que estén correctamente formateadas como imágenes en escala de grises. Una forma de hacerlo es cambiar el modo de imagen de salida de ‘RGB’ a ‘L’, así:

    img = Image.fromarray((img * 255).astype(np.uint8), mode='L')
    

    Asegúrate de probar tus cambios a fondo para asegurarte de que produzcan los resultados deseados. ¡Buena suerte!

Comments are closed.