Radiology 2023
碘造影剂(ICAs)广泛用于CT血管造影术(CTA),可能会对人体产生不良影响,而且使用耗时且成本高昂。研究用平扫CT合成造影剂CT并评价生成的效果很有意义。CTA——Syn-CTA
论文中对方法描述不多,以下是从源代码中简化的训练步骤伪代码
# real_A2是CT,real_B2是Syn_CTA,
# NetG_A2B是生成器,R_A是校准器,spatial_transform是进行采样的一个配准场不是模型,
# netD_B是判别器,target_real = Variable(Tensor(1,1).fill_(1.0), requires_grad=False),
# target_fake = Variable(Tensor(1,1).fill_(0.0), requires_grad=Falseoptimizer__grad()
_grad() # 只更新生成器和校准器
fake_B = netG_A2B(real_A2) # CT生成的Syn_CTA,fake_B
Trans = R_A(fake_B, real_B2) # fake_B和real_B校准得到Trans
SysRegist_A2B = spatial_transform(fake_B, Trans) # fake_B和Trans,配准得到,SysRegist_A2B
pred_fake0 = netD_B(fake_B) # fake_B输入到判别器得到pred_fake0SM_loss = smoothing_loss(Trans)
SR_loss = L1_loss(SysRegist_A2B, real_B2) # 配准后的生成图和real_B要长得像
adv_loss = MSE_loss(pred_fake0, target_real) # 对抗,fake_B的pred_fake0和1的MSElossloss = SM_loss + SR_loss + adv_loss # 总损失
loss.backward() # 梯度回传
optimizer_R_A.step() # 更新R_A和G
optimizer_G.step()optimizer__grad() # 只更新判别器
_grad():fake_B = netG_A2B(real_A2) # 生成器不更新权重
pred_fake0 = netD_B(fake_B) # 再算一次pred_fake0
real_BB2 = copy.deepcopy(real_B2)
pred_real = netD_B(real_BB2) # 判别real_B得到pred_real
loss_D_B = MSE_loss(pred_fake0, target_fake) # 对抗,pred_fake0和0,pred_real和1+ MSE_loss(pred_real, target_real)
loss_D_B.backward()
optimizer_D_B.step() # 更新判别器
配准后的图像和源图像的L1 loss,对抗loss
输入是未配准的成对CT-SynCTA影像,先用CT影像生成SynCTA影像,再对SynCTA影像进行配准,再通过判别器,判别生成的影像和原始SynCTA影像。最终合成配准了的SynCTA影像。
本文发布于:2024-02-02 07:35:17,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170683051842313.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |