Обучение свёрточной генеративно состязательной нейросети рисованию на примере Рэй Аянами. / GAN

Поділитися
Вставка
  • Опубліковано 12 сер 2023
  • Сделал на С++ и CUDA операции со свёрткой через матричное умножение. Попробовал обучить нейросеть рисовать на примере Рэй. К сожалению, качественного изображения пока получить не удалось. Возможно, нужны десятки тысяч эпох. Ну и датасет нужен в десятки тысяч изображений (здесь в датасете было всего четыре картинки :) ).
    Музыка взята из • A Cruel Angel's Thesis...
  • Наука та технологія

КОМЕНТАРІ • 11

  • @HNN_CBEPXCNCTEM_CCCP_NM._COBbl
    @HNN_CBEPXCNCTEM_CCCP_NM._COBbl 10 місяців тому +1

    Не ожидал такого увидеть на этом канале)))

    • @danieolivo2438
      @danieolivo2438  10 місяців тому +1

      Почему? :O

    • @HNN_CBEPXCNCTEM_CCCP_NM._COBbl
      @HNN_CBEPXCNCTEM_CCCP_NM._COBbl 10 місяців тому

      @@danieolivo2438 Ну, не знаю... по-моему советские лазеры, слюдники и голография, как-то не очень сочетаются со странными японскими мультиками :)

  • @kolxoz_vs
    @kolxoz_vs 10 місяців тому

    Какие слои у вас использовались? Любопытно узнать

    • @danieolivo2438
      @danieolivo2438  10 місяців тому +1

      Уже не помню - сеть перестроена, ибо качество с этими слоями получилось не очень (да и вообще тут коллапс сети, что неудивительно, ибо в датасете было аж 4 (!) картинки) :) . Но там у генератора было что-то уровня:
      0) Полносвязный (64*3) - слой шума
      1) Полносвязный (64*3*16) - учетверение разрешения.
      2) Обратная свёртка, шаг 1, дополнение 0, ядро 11x11, ядер 128
      3) Удвоение пикселей
      4) Обратная свёртка, шаг 1, дополнение 0, ядро 7x7, ядер 32
      5) Удвоение пикселей
      6) Обратная свёртка, шаг 1, дополнение 0, ядро 7x7, ядер 32
      7) Удвоение пикселей
      8) Обратная свёртка, шаг 1, дополнение 0, ядро 5x5, ядер 16
      9) Обратная свёртка, шаг 1, дополнение 0, ядро 3x3, ядер 3
      Везде, кроме выходного слоя активация LeakyReLu. В выходном - гиперболический тангенс.
      В дискриминаторе в обратном порядке. Вместо удвоения - усреднение по 2. Ядра 3x3.
      Везде, кроме выходного слоя активация LeakyReLu. В выходном - сигмоид.
      Как-то так. Сейчас я компоную по два обратносвёрточные слои ( а в дискриминаторе свёрточные).

  • @DeniProtogen
    @DeniProtogen 10 місяців тому

    хмм
    есть у s3tl трек и фоном как раз в похожем стиле

    • @danieolivo2438
      @danieolivo2438  10 місяців тому

      Где я трек взял, я указал под видео. :)
      А всё остальное просто обучение нейронки. Собственно, Рэй и была взята для обучения из-за понравившегося мне трека.

  • @HNN_CBEPXCNCTEM_CCCP_NM._COBbl
    @HNN_CBEPXCNCTEM_CCCP_NM._COBbl 10 місяців тому

    А из-за чего возникают артефакты в виде сетки горизонтальных и вертикальных линий? Как это явление называется? :)

    • @danieolivo2438
      @danieolivo2438  10 місяців тому +1

      Просто там есть слои удвоения пикселей для повышения разрешения. Потом эти удвоенные пиксели должны быть обработаны новыми свёртками до получения изображения. Но проблема в том, что дискриминатор (который оценивает, настоящее изображение или нет) в процессе обучения ещё не понял, что этих линий не должно быть. А раз он не понял, то и генератор забил на всё то, что дискриминатор пропускает. По типу и так сойдёт. :)

    • @HNN_CBEPXCNCTEM_CCCP_NM._COBbl
      @HNN_CBEPXCNCTEM_CCCP_NM._COBbl 10 місяців тому

      @@danieolivo2438 А как сделать, чтобы дискриминатор понял? :)

    • @danieolivo2438
      @danieolivo2438  10 місяців тому +1

      Обучать его. :) Но тут есть вопрос о необходимой и достаточной структуре сети, которая вообще сможет запомнить такие нюансы в изображениях.