From 14ba81514f9dbcd4a57d6b730fcaa125b0db023d Mon Sep 17 00:00:00 2001 From: bishe <123456789@163.com> Date: Fri, 7 Mar 2025 19:20:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/__pycache__/networks.cpython-39.pyc | Bin 51061 -> 51061 bytes .../roma_unsb_model.cpython-39.pyc | Bin 18903 -> 14950 bytes models/roma_unsb_model.py | 124 ++++-------------- .../__pycache__/base_options.cpython-39.pyc | Bin 7610 -> 7610 bytes .../__pycache__/train_options.cpython-39.pyc | Bin 3071 -> 3071 bytes options/base_options.py | 2 +- scripts/traincp.sh | 17 +++ 7 files changed, 46 insertions(+), 97 deletions(-) create mode 100644 scripts/traincp.sh diff --git a/models/__pycache__/networks.cpython-39.pyc b/models/__pycache__/networks.cpython-39.pyc index 91353a9c2e5846b90c8a57791cb979eb0cf5682c..d690c50fbe72532999862fed7eb2108400374060 100644 GIT binary patch delta 22 ccmey`$NaUAnLCk}mx}=iN-v$-$enc@09Gppn*aa+ delta 22 ccmey`$NaUAnLCk}mx}=izFF?x$enc@09DZkbN~PV diff --git a/models/__pycache__/roma_unsb_model.cpython-39.pyc b/models/__pycache__/roma_unsb_model.cpython-39.pyc index 728de33f792daffe23a976b3dd95e459a933e128..7ad0b8a5bbff483cfdec8008bc6dcddd085fc684 100644 GIT binary patch delta 6611 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 TN0Sl~26I-i#dPv~a^e2~L6UR6 literal 18903 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 diff --git a/models/roma_unsb_model.py b/models/roma_unsb_model.py index 9de01c6..151f483 100644 --- a/models/roma_unsb_model.py +++ b/models/roma_unsb_model.py @@ -198,7 +198,7 @@ class RomaUnsbModel(BaseModel): """配置 CTNx 模型的特定选项""" parser.add_argument('--lambda_GAN', type=float, default=1.0, help='weight for GAN loss: GAN(G(X))') - parser.add_argument('--lambda_SB', type=float, default=0.1, help='weight for SB loss') + parser.add_argument('--lambda_ctn', type=float, default=1.0, help='weight for content-aware temporal norm') parser.add_argument('--lambda_D_ViT', type=float, default=1.0, help='weight for discriminator') parser.add_argument('--lambda_global', type=float, default=1.0, help='weight for Global Structural Consistency') @@ -206,14 +206,8 @@ class RomaUnsbModel(BaseModel): parser.add_argument('--lambda_inc', type=float, default=1.0, help='incremental weight for content-aware optimization') parser.add_argument('--local_nums', type=int, default=64, help='number of local patches') parser.add_argument('--side_length', type=int, default=7) - parser.add_argument('--nce_idt', type=util.str2bool, nargs='?', const=True, default=False, help='use NCE loss for identity mapping: NCE(G(Y), Y))') - parser.add_argument('--nce_includes_all_negatives_from_minibatch', - type=util.str2bool, nargs='?', const=True, default=False, - help='(used for single image translation) If True, include the negatives from the other samples of the minibatch when computing the contrastive loss. Please see models/patchnce.py for more details.') parser.add_argument('--nce_layers', type=str, default='0,4,8,12,16', help='compute NCE loss on which layers') - - parser.add_argument('--netF', type=str, default='mlp_sample', choices=['sample', 'reshape', 'mlp_sample'], help='how to downsample the feature map') - + parser.add_argument('--eta_ratio', type=float, default=0.4, help='ratio of content-rich regions') parser.add_argument('--gamma_stride', type=float, default=20, help='ratio of stride for computing the similarity matrix') parser.add_argument('--atten_layers', type=str, default='5', help='compute Cross-Similarity on which layers') @@ -253,7 +247,7 @@ class RomaUnsbModel(BaseModel): # 创建网络 self.netG = networks.define_G(opt.input_nc, opt.output_nc, opt.ngf, opt.netG, opt.normG, not opt.no_dropout, opt.init_type, opt.init_gain, opt.no_antialias, opt.no_antialias_up, self.gpu_ids, opt) - + if self.isTrain: @@ -321,88 +315,28 @@ class RomaUnsbModel(BaseModel): def forward(self): """Run forward pass; called by both functions and .""" + self.fake_B0 = self.netG(self.real_A0) + self.fake_B1 = self.netG(self.real_A1) - # ============ 第一步:对 real_A / real_A2 进行多步随机生成过程 ============ - tau = self.opt.tau - T = self.opt.num_timesteps - incs = np.array([0] + [1/(i+1) for i in range(T-1)]) - times = np.cumsum(incs) - times = times / times[-1] - times = 0.5 * times[-1] + 0.5 * times #[0.5,1] - times = np.concatenate([np.zeros(1), times]) - times = torch.tensor(times).float().cuda() - self.times = times - bs = self.real_A0.size(0) - time_idx = (torch.randint(T, size=[1]).cuda() * torch.ones(size=[1]).cuda()).long() - self.time_idx = time_idx - self.fake_B0_list = [] - self.fake_B1_list = [] - - with torch.no_grad(): - self.netG.eval() - # ============ 第二步:对 real_A / real_A2 进行多步随机生成过程 ============ - for t in range(self.time_idx.int().item() + 1): - # 计算增量 delta 与 inter/scale,用于每个时间步的插值等 - if t > 0: - delta = times[t] - times[t - 1] - denom = times[-1] - times[t - 1] - inter = (delta / denom).reshape(-1, 1, 1, 1) - scale = (delta * (1 - delta / denom)).reshape(-1, 1, 1, 1) - - # 对 Xt、Xt2 进行随机噪声更新 - Xt = self.real_A0 if (t == 0) else (1 - inter) * Xt + inter * Xt_1.detach() + \ - (scale * tau).sqrt() * torch.randn_like(Xt).to(self.real_A0.device) - time_idx = (t * torch.ones(size=[self.real_A0.shape[0]]).to(self.real_A0.device)).long() - z = torch.randn(size=[self.real_A0.shape[0], 4 * self.opt.ngf]).to(self.real_A0.device) - time = times[time_idx] - Xt_1 = self.netG(Xt.detach(), time, z) - - Xt2 = self.real_A1 if (t == 0) else (1 - inter) * Xt2 + inter * Xt_12.detach() + \ - (scale * tau).sqrt() * torch.randn_like(Xt2).to(self.real_A1.device) - time_idx = (t * torch.ones(size=[self.real_A1.shape[0]]).to(self.real_A1.device)).long() - z = torch.randn(size=[self.real_A1.shape[0], 4 * self.opt.ngf]).to(self.real_A1.device) - Xt_12 = self.netG(Xt2.detach(), time, z) - self.fake_B0_list.append(Xt_1) - self.fake_B1_list.append(Xt_12) - - self.fake_B0_1 = self.fake_B0_list[0] - self.fake_B1_1 = self.fake_B0_list[0] - self.fake_B0 = self.fake_B0_list[-1] - self.fake_B1 = self.fake_B1_list[-1] - self.z_in = z - self.z_in2 = z - if self.opt.phase == 'train': + if self.opt.isTrain: real_A0 = self.real_A0 real_A1 = self.real_A1 real_B0 = self.real_B0 real_B1 = self.real_B1 fake_B0 = self.fake_B0 fake_B1 = self.fake_B1 - self.mutil_fake_B0_tokens_list = [] - self.mutil_fake_B1_tokens_list = [] - for fake_B0_t in self.fake_B0_list: - fake_B0_t_resize = self.resize(fake_B0_t) # 调整到 ViT 输入尺寸 - tokens = self.netPreViT(fake_B0_t_resize, self.atten_layers, get_tokens=True) - self.mutil_fake_B0_tokens_list.append(tokens) - for fake_B1_t in self.fake_B1_list: - fake_B1_t_resize = self.resize(fake_B1_t) - tokens = self.netPreViT(fake_B1_t_resize, self.atten_layers, get_tokens=True) - self.mutil_fake_B1_tokens_list.append(tokens) - self.real_A0_resize = self.resize(real_A0) self.real_A1_resize = self.resize(real_A1) real_B0 = self.resize(real_B0) real_B1 = self.resize(real_B1) self.fake_B0_resize = self.resize(fake_B0) self.fake_B1_resize = self.resize(fake_B1) - self.mutil_real_A0_tokens = self.netPreViT(self.real_A0_resize, self.atten_layers, get_tokens=True) self.mutil_real_A1_tokens = self.netPreViT(self.real_A1_resize, self.atten_layers, get_tokens=True) self.mutil_real_B0_tokens = self.netPreViT(real_B0, self.atten_layers, get_tokens=True) self.mutil_real_B1_tokens = self.netPreViT(real_B1, self.atten_layers, get_tokens=True) - # [[1,576,768],[1,576,768],[1,576,768]] - # [3,576,768] - + self.mutil_fake_B0_tokens = self.netPreViT(self.fake_B0_resize, self.atten_layers, get_tokens=True) + self.mutil_fake_B1_tokens = self.netPreViT(self.fake_B1_resize, self.atten_layers, get_tokens=True) def compute_D_loss(self): """Calculate GAN loss with Content-Aware Optimization""" @@ -414,27 +348,25 @@ class RomaUnsbModel(BaseModel): real_B1_tokens = self.mutil_real_B1_tokens[0] pred_real1, real_features1 = self.netD_ViT(real_B1_tokens) # scores, features - for fake0_token, fake1_token in zip(self.mutil_fake_B0_tokens_list, self.mutil_fake_B1_tokens_list): - pre_fake0, fake_features0 = self.netD_ViT(fake0_token[0].detach()) - pre_fake1, fake_features1 = self.netD_ViT(fake1_token[0].detach()) - loss_cao0, self.weight_real0, self.weight_fake0 = self.cao( - D_real=real_features0, - D_fake=fake_features0, - real_scores=pred_real0, - fake_scores=pre_fake0 - ) - loss_cao1, self.weight_real1, self.weight_fake1 = self.cao( - D_real=real_features1, - D_fake=fake_features1, - real_scores=pred_real1, - fake_scores=pre_fake1 - ) - loss_cao += loss_cao0 + loss_cao1 + pre_fake0, fake_features0 = self.netD_ViT(self.mutil_fake_B0_tokens[0].detach()) + pre_fake1, fake_features1 = self.netD_ViT(self.mutil_fake_B1_tokens[0].detach()) + loss_cao0, self.weight_real0, self.weight_fake0 = self.cao( + D_real=real_features0, + D_fake=fake_features0, + real_scores=pred_real0, + fake_scores=pre_fake0 + ) + loss_cao1, self.weight_real1, self.weight_fake1 = self.cao( + D_real=real_features1, + D_fake=fake_features1, + real_scores=pred_real1, + fake_scores=pre_fake1 + ) + loss_cao += loss_cao0 + loss_cao1 # ===== 综合损失 ===== - total_steps = len(self.fake_B0_list) - self.loss_D_ViT = loss_cao * 0.5 * lambda_D_ViT/ total_steps + self.loss_D_ViT = loss_cao * 0.5 * lambda_D_ViT # 记录损失值供可视化 @@ -458,8 +390,8 @@ class RomaUnsbModel(BaseModel): self.warped_fake_B1 = warp(self.fake_B1,self.f_content1) # 经过第二次生成器 - self.warped_fake_B0_2 = self.netG(self.warped_real_A0, self.times[torch.zeros(size=[1]).cuda().long()], self.z_in) - self.warped_fake_B1_2 = self.netG(self.warped_real_A1, self.times[torch.zeros(size=[1]).cuda().long()], self.z_in2) + self.warped_fake_B0_2 = self.netG(self.warped_real_A0) + self.warped_fake_B1_2 = self.netG(self.warped_real_A1) warped_fake_B0_2=self.warped_fake_B0_2 warped_fake_B1_2=self.warped_fake_B1_2 @@ -472,8 +404,8 @@ class RomaUnsbModel(BaseModel): if self.opt.lambda_GAN > 0.0: - pred_fake0,_ = self.netD_ViT(self.mutil_fake_B0_tokens_list[-1][0]) - pred_fake1,_ = self.netD_ViT(self.mutil_fake_B1_tokens_list[-1][0]) + pred_fake0,_ = self.netD_ViT(self.mutil_fake_B0_tokens[0]) + pred_fake1,_ = self.netD_ViT(self.mutil_fake_B1_tokens[0]) self.loss_G_GAN0 = self.criterionGAN(pred_fake0, True).mean() self.loss_G_GAN1 = self.criterionGAN(pred_fake1, True).mean() self.loss_G_GAN = (self.loss_G_GAN0 + self.loss_G_GAN1)*0.5 diff --git a/options/__pycache__/base_options.cpython-39.pyc b/options/__pycache__/base_options.cpython-39.pyc index 7658be9386c7c6039866b5ccc650f594579220ce..a03f478ec503925f4ada3f953c55dc3d702e51cd 100644 GIT binary patch delta 76 zcmdmGy~~<6k(ZZ?0SIPYJ(a$4Bd;u%7++Cpab9Xkyk$~OesXrPCTEcpP=0a%SCnX! RFsfX9a(-UQ=Jj0M!T^N&7%>0< delta 76 zcmdmGy~~<6k(ZZ?0SGv)cBik~$ScdGCR~(SoR?Y>Z<&;npPXGBpPZkUqRAP>hblbT Rfh&r&ND8QP^Lj3BVE}Dj7V7{2 diff --git a/options/__pycache__/train_options.cpython-39.pyc b/options/__pycache__/train_options.cpython-39.pyc index 76d2a2fc686afffb771fd4e7b0e6d28e428d3c89..1b019a19bd3894cbd5e59c1ce56e28163141265b 100644 GIT binary patch delta 20 acmew_{$HFsk(ZZ?0SMM#I<=Ae3pW5m-v+|~ delta 20 acmew_{$HFsk(ZZ?0SK6s_HX3=!VLgA%>`Qk diff --git a/options/base_options.py b/options/base_options.py index b20e1b4..d63d895 100644 --- a/options/base_options.py +++ b/options/base_options.py @@ -36,7 +36,7 @@ class BaseOptions(): parser.add_argument('--ngf', type=int, default=64, help='# of gen filters in the last conv layer') parser.add_argument('--ndf', type=int, default=64, help='# of discrim filters in the first conv layer') parser.add_argument('--netD', type=str, default='basic_cond', choices=['basic_cond', 'basic', 'n_layers', 'pixel', 'patch', 'tilestylegan2', 'stylegan2'], help='specify discriminator architecture. The basic model is a 70x70 PatchGAN. n_layers allows you to specify the layers in the discriminator') - parser.add_argument('--netG', type=str, default='resnet_9blocks_cond', choices=['resnet_9blocks','resnet_9blocks_mask', 'resnet_6blocks', 'unet_256', 'unet_128', 'stylegan2', 'smallstylegan2', 'resnet_cat', 'resnet_9blocks_cond'], help='specify generator architecture') + parser.add_argument('--netG', type=str, default='resnet_9blocks', choices=['resnet_9blocks','resnet_9blocks_mask', 'resnet_6blocks', 'unet_256', 'unet_128', 'stylegan2', 'smallstylegan2', 'resnet_cat', 'resnet_9blocks_cond'], help='specify generator architecture') parser.add_argument('--n_layers_D', type=int, default=3, help='only used if netD==n_layers') parser.add_argument('--normG', type=str, default='instance', choices=['instance', 'batch', 'none'], help='instance normalization or batch normalization for G') parser.add_argument('--normD', type=str, default='instance', choices=['instance', 'batch', 'none'], help='instance normalization or batch normalization for D') diff --git a/scripts/traincp.sh b/scripts/traincp.sh new file mode 100644 index 0000000..f26e8f3 --- /dev/null +++ b/scripts/traincp.sh @@ -0,0 +1,17 @@ +python train.py \ + --dataroot /home/openxs/kunyu/datasets/InfraredCity-Lite/Double/Moitor \ + --name cp_1 \ + --dataset_mode unaligned_double \ + --display_env CP \ + --model roma_unsb \ + --lambda_ctn 10 \ + --lambda_inc 1.0 \ + --lambda_global 6.0 \ + --lambda_spatial 6.0 \ + --gamma_stride 20 \ + --lr 0.000001 \ + --gpu_id 2 \ + --eta_ratio 0.4 \ + --n_epochs 100 \ + --n_epochs_decay 100 \ +# cp1 复现cptrans的效果 \ No newline at end of file