pix2pix、pix2pixHD 通过损失日志进行训练可视化

目录

背景

代码

结果

总结


背景

pix2pix(HD)代码在训练时会自动保存一个损失变化的txt文件,通过该文件能够对训练过程进行一个简单的可视化,代码如下。

训练的损失文件如图,对其进行可视化。

代码

#coding:utf-8
##
#author: QQ:1913434222 WeChat:Alocus
##
import matplotlib.pyplot as plt
import re
import numpy as np
import os,sys

file = "loss_logA - 副本.txt"
savepath = r"J:\混合样本去雾\调试代码&脚本&可视化\visualiz\\"
#dirs = os.listdir( filepath )
#for file in dirs:
#    if file.endswith('txt'):
#        f  = open(filepath+file,'r')
f  = open(file,'r')
lines = f.readlines()
G_GAN = []
G_GAN_Feat = []
G_VGG = []
G_KL= []
D_real = []
D_fake = []
G_featD = []
featD_real = []
featD_fake = []
total_data =[]

for line in lines:
    if "(epoch" in line:

        if "G_GAN" in line :
            G_GAN_list = line.split()
            G_GAN.append(float(G_GAN_list[9]))
        if "G_GAN_Feat" in line :
            G_GAN_Feat_list = line.split()
            G_GAN_Feat.append(float(G_GAN_Feat_list[11]))
        if "G_VGG" in line :
            G_VGG_list = line.split()
            G_VGG.append(float(G_VGG_list[13]))
        if "G_KL" in line :
            G_KL_list = line.split()
            G_KL.append(float(G_KL_list[15]))
        if "D_real" in line:
            D_real_list = line.split()
            D_real.append(float(D_real_list[17]))
        if "D_fake" in line:
            D_fake_list = line.split()
            D_fake.append(float(D_fake_list[19]))
        if "G_featD" in line:
            G_featD_list = line.split()
            G_featD.append(float(G_featD_list[21]))
        if "featD_real" in line:
            featD_real_list = line.split()
            featD_real.append(float(featD_real_list[23]))
        if "featD_fake" in line:
            featD_fake_list = line.split()
            featD_fake.append(float(featD_fake_list[25]))


    total_data = [(G_GAN [i] + G_GAN_Feat[i]+G_VGG[i]+
    G_KL[i]+
    D_real[i]+
    D_fake[i]+
    G_featD[i]+
    featD_real[i]+
    featD_fake[i])  for i in range(0, len(featD_fake))]

    fig = plt.figure()#(figsize=(50,6))
    ax = np.linspace(0,len(featD_fake),len(featD_fake))
    plt.plot(ax, total_data, label="total")
    plt.plot(ax,G_GAN,label="G_GAN")
    plt.plot(ax,G_GAN_Feat,label="G_GAN_Feat")
    plt.plot(ax,G_VGG,label="G_VGG")
    plt.plot(ax,D_real,label="D_real")
    plt.plot(ax,D_real,label="D_fake")
    plt.plot(ax,G_KL,label="G_KL")
    plt.plot(ax,G_featD,label="G_featD")
    plt.plot(ax,featD_real,label="featD_real")
    plt.plot(ax,featD_fake,label="featD_fake")

plt.grid(color='gray', linestyle='--', linewidth=1, alpha=0.3)
plt.legend()
plt.title('VAE$_1$')
plt.xlabel('epoch')
plt.ylabel('loss')
plt.savefig(savepath+file.split('.txt')[0]+'.png')


#G_GAN: 0.973 G_GAN_Feat: 7.709 G_VGG: 8.092 G_KL: 1.172 D_real: 0.908 D_fake: 0.870
# G_Feat_L2: 46.512 G_GAN: 3.917 G_GAN_Feat: 14.005 G_VGG: 8.741 D_real: 3.828 D_fake: 3.098

结果

总结

如果代码的损失函数等进行了修改,或者损失函数有变化,则需要对代码进行对应的修改,修改很简单,看下前面如何写的,照着改就ok啦!

有一些细节,如他们代码保存损失时不是每个epoch都一直保存的,有的epoch不同iter会保存两次所以会有些小问题,不过还好,问题不大。

祝好!

### Pix2PixHD 教程与使用指南 #### 1. 理解 Pix2PixHD 架构 Pix2PicHD 是一种用于高分辨率图像到图像转换的任务框架,它扩展了原始的 Pix2Pix 方法。该架构不仅依赖于全局生成器来捕捉粗粒度结构,还引入了局部增强模块以提高细节质量[^1]。 #### 2. 安装环境准备 为了运行 Pix2PixHD 实验,在安装 PyTorch 后还需要额外配置一些库: ```bash pip install visdom dominate tqdm numpy opencv-python scikit-image scipy matplotlib lmdb cython pyyaml filelock ninja yacs imageio requests tensorboardX future ``` 这些工具包支持数据处理、可视化和其他辅助功能。 #### 3. 数据集准备 对于特定应用领域(如城市景观照片转素描),需准备好相应的成对图片作为训练样本。通常会将原图与其对应的标签图放在同一文件夹内,并按照一定命名规则区分两者关系。 #### 4. 训练过程概述 启动训练之前要先定义好实验参数设置,比如批次大小(batch size),学习率(learning rate)等超参;接着通过命令行调用脚本执行训练流程: ```bash python train.py --name label2city_512p --dataset_mode labeled --label_dir ./datasets/cityscapes/labels --image_dir ./datasets/cityscapes/images --label_nc 35 --no_instance --use_vae --batchSize 10 --nThreads 10 --save_epoch_freq 10 --display_winsize 512 --crop_size 512 --aspect_ratio 2 --norm instance --lambda_feat 10.0 --continue_train ``` 上述指令指定了多项重要选项,包括但不限于使用的数据集模式(`--dataset_mode`)、路径(`--label_dir`, `--image_dir`)以及各种损失权重调整因子(`--lambda_feat`)。 #### 5. 测试与推理阶段 完成模型训练之后可以利用测试函数评估其表现效果。一般而言,这一步骤涉及加载预训练好的checkpoint并指定待测实例所在位置: ```bash python test.py --dataroot datasets/cityscapes/testA --results_dir results/pretrained/ --which_model_netG global --ngf 64 --resize_or_crop none --label_nc 35 --no_instance --how_many 100 ``` 此段代码片段展示了如何读取测试集中前一百张图片来进行推断操作。 #### 6. 可视化成果展示 最后可借助 TensorBoard 或者 Visdom 工具实时监控训练进度及最终输出结果的质量变化趋势。此外还可以保存生成效果图以便后续分析比较。 ```python from options.test_options import TestOptions opt = TestOptions().parse() model = create_model(opt) visualizer = Visualizer(opt) for i, data in enumerate(dataset): generated = model(data) visuals = OrderedDict([('input_label', util.tensor2label(data['label'][0], opt.label_nc)), ('synthesized_image', util.tensor2im(generated.data[0]))]) visualizer.display_current_results(visuals, epoch, save_result=True) ``` 以上Python代码实现了从获取单批测试数据到经过模型计算得到合成图像再到将其与其他相关信息一起显示出来的全过程。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alocus_

如果我的内容帮助到你,打赏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值