Описание модели приведено в статье: https://web.stanford.edu/~jxgong/docs/sketch2face.pdf
Ссылка на оригинальный код: https://github.com/juliagong/sketch2face
Команда запуска обучения sketch2face модели:
!python /sketch2face/train.py --dataroot path_to_dataset --name model_name \
--model sketch2face --direction sketch2face --dataset_mode cuhk \
--max_epochs train_epochs_amount
path_to_dataset - путь к директории, в которой должны содержаться папки train и test, в каждой из этих папок файлы должны быть представлены следующим образом: скетч должен оканчиваться на -sz1.jpg, реальное изображение должно оканчиваться на .jpg
model_name - имя обучаемой модели (при запуске тестов нужно указывать это имя)
train_epochs_amount - количество эпох для обучения модели
Checkpoints модели сохраняются в папку /checkpoints/model_name
Команда запуска генерации фотореалистичных изображений на основе скетчей с помощью заранее обученной sketch2face модели:
python /sketch2face/train.py --dataroot path_to_dataset --name model_name \
--model sketch2face --direction sketch2face --dataset_mode cuhk --phase test \
--num_test images_amount
path_to_dataset - путь к директории, в которой должны содержаться папки train и test, в каждой из этих папок файлы должны быть представлены следующим образом: скетч должен оканчиваться на -sz1.jpg, реальное изображение должно оканчиваться на .jpg
model_name - имя модели (то же имя, что было использовано при запуске обучения)
images_amount - число изображений в тестовой выборке, если меньше реального числа изображений, содержащихся в тестовой выборке, то будут сгенерированы реальные изображения только для первых images_amount скетчей; если больше, либо равно - то будут рассмотрены все имеющиеся изображения в папке path_to_dataset/test
Результаты работы такой команды сохраняются в папку /results/model_name
Описание модели приведено в статье: https://arxiv.org/pdf/1711.11585.pdf
Ссылка на оригинальный код: https://github.com/NVIDIA/pix2pixHD
Команда запуска обучения pix2pixHD модели:
python /pix2pixHD/train.py --label_nc 0 --no_instance --name pix2pixHD \
--dataroot path_to_dataset --save_epoch_freq 1 --resize_or_crop none \
Здесь важную роль играет параметр label_nc: pix2pixHD поддерживает генерацию изображений по семантическим картам. Каждому классу семантической карты соответствует свой лейбл. В нашем случае генерации из скетчей семантический класс только один, поэтому параметр равен нулю.
В папке path_to_dataset должно находиться 4 папки: train_A - обучающие скетчи, train_B - соответствующие реальные изображения, а также test_A и test_B. Названия изображений, соответствующих друг другу, должны быть идентичны.
Тестирование обученной модели:
python /pix2pixHD/test.py --name pix2pixHD \
--label_nc 0 --dataroot path_to_datset --netG global --resize_or_crop none \
--no_instance --how_many num
В compute_metrics содержатся функции, позволяющие вычислять значения метрик MAE (l1 loss) и RMSE (l2 loss). Там же есть пример запуска приведённого кода. Функция make_image_path_pairs принимает в качестве входных аргументов пути к папкам с реальными и сгенерированными изображениями, и сопоставляет изображению из первой папки изображение с таким же именем из второй.
Метрики FID посчитаны с помощью библиотеки https://github.com/mseitzer/pytorch-fid.
В image2sketch содержатся функции, позволяющие преобразовывать реальное изображение в скетч. Функция image2sketch как раз это и делает, она принимает на вход пути к реальному и скетчевому изображениям, в ходе работы сохраняет скетчевое изображение по указанному пути, и возвращает реальное изображение и скетч. В этом же файле есть пример запуска приведённого кода.