Пример #1
0
	imageReal = data.perturbBG(opt,imageRealData)
	imageBGfake = data.perturbBG(opt,imageBGfakeData)
	pPertFG = opt.pertFG*tf.random_normal([opt.batchSize,opt.warpDim])
	# ------ define GP and D ------
	geometric = graph.geometric_multires
	discriminator = graph.discriminator
	# ------ geometric predictor ------
	imageFGwarpAll,pAll,_ = geometric(opt,imageBGfake,imageFGfake,pPertFG)
	pWarp = pAll[-1]
	# ------ composite image ------
	summaryImageTrain = []
	summaryImageTest = []
	summaryImageTrain.append(util.imageSummary(opt,imageReal,"TRAIN_real",opt.H,opt.W))
	summaryImageTest.append(util.imageSummary(opt,imageReal,"TEST_real",opt.H,opt.W))
	imageFGwarp = imageFGwarpAll[0]
	imageComp = graph.composite(opt,imageBGfake,imageFGwarp)
	summaryImageTrain.append(util.imageSummary(opt,imageComp,"TRAIN_compST{0}".format(0),opt.H,opt.W))
	summaryImageTest.append(util.imageSummary(opt,imageComp,"TEST_compST{0}".format(0),opt.H,opt.W))
	alpha = tf.random_uniform(shape=[opt.batchSize,1,1,1])
	imageIntp = alpha*imageReal+(1-alpha)*imageComp
	# ------ discriminator ------
	outComps,outIntps = [],[]
	outReal = discriminator(opt,imageReal)
	outComp = discriminator(opt,imageComp,reuse=True)
	outIntp = discriminator(opt,imageIntp,reuse=True)
	# ------ discriminator gradient ------
	grad_D_fake = tf.gradients(outIntp,imageIntp)[0]
	grad_D_norm = tf.sqrt(tf.reduce_sum(grad_D_fake**2+1e-8,reduction_indices=[1,2,3]))
	grad_D_norm_mean = tf.reduce_mean(grad_D_norm)
	# ------ define loss (adversarial) ------
	loss_D = tf.reduce_mean(outComp)-tf.reduce_mean(outReal)
 imageBGreal = tf.placeholder(tf.float32,
                              shape=[opt.batchSize, opt.H, opt.W, 3])
 imageFGreal = tf.placeholder(tf.float32,
                              shape=[opt.batchSize, opt.H, opt.W, 4])
 PH = [imageBGreal, imageFGreal]
 # ------ generate perturbation ------
 pPert = opt.homoPert * tf.random_normal([opt.batchSize, 8])
 # ------ define GP and D ------
 geometric = graph.geometric_multires
 # ------ geometric predictor ------
 imageFGwarpAll, pAll, _ = geometric(opt, imageBGreal, imageFGreal, pPert)
 pWarp = pAll[-1]
 # ------ composite image ------
 summaryImageTrain = []
 summaryImageTest = []
 imageReal = graph.composite(opt, imageBGreal, imageFGreal)
 summaryImageTrain.append(
     util.imageSummary(opt, imageReal, "TRAIN_real", opt.H, opt.W))
 summaryImageTest.append(
     util.imageSummary(opt, imageReal, "TEST_real", opt.H, opt.W))
 for l in range(opt.warpN + 1):
     imageFGwarp = imageFGwarpAll[l]
     imageComp = graph.composite(opt, imageBGreal, imageFGwarp)
     summaryImageTrain.append(
         util.imageSummary(opt, imageComp, "TRAIN_compST{0}".format(l),
                           opt.H, opt.W))
     summaryImageTest.append(
         util.imageSummary(opt, imageComp, "TEST_compST{0}".format(l),
                           opt.H, opt.W))
 # ------ define loss (L2) ------
 pGT = tf.zeros_like(pPert)