Изменение размера входных изображений для модели Chainer DCGAN

Я использую пример файла Chainer DCGAN, который можно найти по адресу https://github.com/chainer/chainer/blob/master/examples/dcgan/train_dcgan.py . Он отлично работает для изображений 32x32, но для других разрешений README.md указывает изменить архитектуру сети в net.py.

Насколько я понял из прочтения документации, размер обучающих изображений передается в качестве параметра конструктора в класс Generator, как bottom_width, а ch. Вот код для 32x32.

class Generator(chainer.Chain):

    def __init__(self, n_hidden, bottom_width=4, ch=512, wscale=0.02):

Я не понимаю, как это переводится в 32x32 и как изменить это на другие разрешения. Любая помощь будет принята с благодарностью.


person Justin Bodnar    schedule 26.12.2018    source источник


Ответы (1)


Вы можете рассчитать его, поняв поведение Deconvolution2D. В net.py, 3 слой Deconvolution2D (self.dc1, self.dc2, self.dc3) определяется с помощью stride=2 (4-й аргумент L.Deconvolution2D), который удваивает входную высоту/ширину.

В результате выходной размер будет bottom_size * 2^3, что приводит к 32, когда bottom_size=4.

Так, например, если вы хотите получить изображения 64x64, вы можете установить bottom_size=8 как для генератора, так и для дискриминатора (но вам нужны изображения 64x64 в качестве реальных данных, а не cifar-100, который представляет собой изображения 32x32).

Пожалуйста, обратитесь к официальному документу для получения подробной информации о соотношении размера ввода-вывода.

person corochann    schedule 26.12.2018
comment
Я думал, что принял этот ответ, когда впервые опубликовал его. Извините за задержку. Оно работает! - person Justin Bodnar; 09.06.2020