❤️【Введение в проект глубокого обучения】❤️ Первое знакомство с 【Style Transfer】| ?Изучите 【Конфронтационное обучение】, у вас и Хонгяна больше не будет смущения?
❤️ 【Понять】❤️
- ❤️ Миграция стилей ========》Одевайтесь одним щелчком мыши
- ? Попробуйте в жизни немного больше ===》Стиль рисования меняется
? Основная информация
- Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation
- Повторное использование дискриминаторов для кодирования: включение неконтролируемого преобразования изображения в изображение
- АР Вест V.org/PDF/2003.00…
- Сжатый перевод статей
- Официальная реализация PyTorch — https://github.com/alpc91/NICE-GAN-pytorch
? Официальная среда Git опирается на следующее:
? Окружающая среда Строительство
- Сервер: Ubuntu1~18.04 Quadro RTX 5000 16G
- CUDA версии V10.0.130
conda create -n nice python=3.6.9
conda activate nice
pip install torch==1.1.0
pip install torchvision==0.3.0
或者(建议使用 conda 来安装)
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 -c pytorch
pip install pillow==5.2.0
pip install opencv-python
pip install scipy
pip install thop
? Структура проекта
git clone https://github.com/alpc91/NICE-GAN-pytorch.git
cd NICE-GAN-pytorch
cd dataset/
? Добавить набор данных
? Настройки параметров тренировки
? тренируйся и тестируй
? Поезд
# 显卡16G不够用,所以设置 --light True
python main.py --dataset horse2zebra --light True
# 指定多卡训练的方式如下
CUDA_VISIBLE_DEVICES=2,3 python main.py --dataset horse2zebra --light True
# nohup 把训练进程放到后台
nohup python main.py --dataset horse2zebra --light True &
90 минут тренировки 5000 эпох, эффект тренировки следующий
? Тест
python main.py --dataset horse2zebra --phase test --light True
Результат тестового запуска выглядит следующим образом
python main.py --dataset horse2zebra --phase test --light True
# 测试运行输出如下
number of epochs must be larger than or equal to one
##### Information #####
# light : True
# dataset : horse2zebra
# batch_size : 1
# iteration per epoch : 300000
# the size of image : 256
# the size of image channel : 3
# base channel number per layer : 64
##### Generator #####
# residual blocks : 6
##### Discriminator #####
# discriminator layers : 7
##### Weight #####
# adv_weight : 1
# cycle_weight : 10
# recon_weight : 10
-----------------------------------------------
[INFO] Register count_linear() for <class 'torch.nn.modules.linear.Linear'>.
[INFO] Register count_convNd() for <class 'torch.nn.modules.conv.Conv2d'>.
[INFO] Register count_relu() for <class 'torch.nn.modules.activation.LeakyReLU'>.
[Network disA] Total number of parameters: 93.749M
[Network disA] Total number of FLOPs: 12.013G
-----------------------------------------------
[INFO] Register zero_ops() for <class 'torch.nn.modules.activation.ReLU'>.
[INFO] Register count_linear() for <class 'torch.nn.modules.linear.Linear'>.
[Network gen2B] Total number of parameters: 16.192M
[Network gen2B] Total number of FLOPs: 67.552G
-----------------------------------------------
5000 [测试使用模型的迭代次数]
dataset/horse2zebra/testA/n02381460_1000.jpg
dataset/horse2zebra/testA/n02381460_1010.jpg
...
? Заметки
- Модель сохраняется один раз во время обучения размером 1,2 Гб.
- Когда --batch_size == 1, GPU потребляет 7679 МБ.
- Когда --batch_size == 2, GPU потребляет 12473 МБ.
- --batch_size == 4, 16G GPU недостаточно
? Возможные ошибки
Обучение с одной картой, обучение полной версии NICE-GAN, [16G] GPU недостаточно
CUDA_VISIBLE_DEVICES=3 python main.py --dataset horse2zebra
RuntimeError: CUDA out of memory. Tried to allocate 1024.00 MiB (GPU 0; 15.75 GiB total capacity; 13.78 GiB already allocated; 782.44 MiB free; 499.74 MiB cached)
Решение выглядит следующим образом
- Было проверено, что если вы переключитесь на GPU с большей памятью 24 G или более для обучения, вы не столкнетесь с этой ошибкой, то есть выполните обучение [NICE-GAN full version].
- Во время обучения добавьте параметр --light True для обучения [облегченная версия NICE-GAN]
? Измени стиль школьницы ?
Здесь мы используем набор данных, состоящий из [картин Ван Гога маслом и изображений реальных пейзажей] для обучения 500 000 итераций.
nohup python main.py --dataset vangogh2photo --light True &
# 训练时长,最终定格在 5天
Результат после тренировки следующий
[499995/500000] time: 431994.8614 d_loss: 2.32049370, g_loss: 3.90420341
[499996/500000] time: 431995.4892 d_loss: 2.04860115, g_loss: 3.71788430
[499997/500000] time: 431996.1223 d_loss: 2.22972393, g_loss: 4.25117588
[499998/500000] time: 431996.7609 d_loss: 2.36788273, g_loss: 5.42507362
[499999/500000] time: 431997.3897 d_loss: 2.53704023, g_loss: 4.05708218
[500000/500000] time: 431998.0172 d_loss: 2.21194649, g_loss: 4.53932619
current D_learning rate:-1.7075100951256253e-16
current G_learning rate:-1.7075100951256253e-16
[*] Training finished!
? Анализ тренировок
Видно, что по умолчанию модель сохраняется каждые 10 Вт итерации, а при обучении 50 Вт модель сохраняется только 5 раз. Эти 5 сохраненных моделей были протестированы и обнаружили, что эффект не захватывающий.
Случайно перевернулся, причины следующие
- Обучение модели самой сети Гана имеет много нестабильности и неопределенности.
- Улучшите стратегию, стили наборов данных trainA и trainB максимально согласованы
- При обучении рекомендуется сохранять модель каждые 1w или 5k итераций.
- Таким образом, вы можете получить несколько генеративных моделей, а затем протестировать их одну за другой, возможны сюрпризы.
- Для NiceGAN фактическое приложение измерения и обучение модели в основном представляют собой одну и ту же идею.
- Можно только сказать, что чем больше итераций, тем лучше эффект обучения в теории, но в практических приложениях модель с хорошим эффектом может не быть моделью, полученной с наибольшим количеством тренировок.
?Есть еще школьницы
О важности единообразия стилей наборов данных
【❤️В следующий раз обязательно сделаю вас красивее❤️】
? Тренировочный код + обмен данными
?【Поделитесь тренировочными данными + кодом со всеми】?
链接:https://pan.baidu.com/s/1zNR8TcXmQU7_nCB20Rqzmw
提取码:2021
?? Молеологический ИИ
?Как один из блоггеров с самым большим количеством галантереи в области ИИ во всей сети, ❤️ не отказываюсь от своего времени ❤️ ❤️ Если статья была вам полезна,Ставьте лайки и комментируйте, чтобы поощрять каждое серьезное творение блоггера.