예제 #1
0
		batch = data.makeBatch(opt,trainData,PH)
		batch[lrD_PH] = lrD
		# update discriminator
		runList = [optimD,loss_D,grad_D_norm_mean]
		for u in range(opt.updateD):
			_,ld,gdn = sess.run(runList,feed_dict=batch)
		if (i+1)%10==0:
			print("it.{0}/{1}  lr={3}(GP),{4}(D)  loss={5}(GP),{6}(D)  norm={7}  time={2}"
				.format(util.toCyan("{0}".format(i+1)),
						opt.toIt,
						util.toGreen("{0:.2f}".format(time.time()-timeStart)),
						util.toYellow("X"),
						util.toYellow("{0:.0e}".format(lrD)),
						util.toRed("X"),
						util.toRed("{0:.4f}".format(ld)),
						util.toBlue("{0:.4f}".format(gdn))))
		# if (i+1)%20==0:
		# 	runList = [summaryLossTrain,summaryGradTrain]
		# 	sl,sg = sess.run(runList,feed_dict=batch)
		# 	summaryWriter.add_summary(sl,i+1)
		# 	summaryWriter.add_summary(sg,i+1)
		# if (i+1)%200==0:
		# 	si = sess.run(summaryImageTrain,feed_dict=batch)
		# 	summaryWriter.add_summary(si,i+1)
		# if (i+1)%500==0:
		# 	# run on test set
		# 	batch = data.makeBatch(opt,testData,PH)
		# 	si = sess.run(summaryImageTest,feed_dict=batch)
		# 	summaryWriter.add_summary(si,i+1)
		if (i+1)%10000==0:
			# save model
		# for each CAD model in data chunk
		for i in range(testN):
			m = idx[i]
			CAD = dataloader.CADs[m]
			points24 = np.zeros([opt.inputViewN,1],dtype=np.object)
			# make test batch
			batch = { inputImage: dataChunk["image_in"][i] }
			# evaluate network
			runList = [XYZid,ML]
			xyz,ml = sess.run(runList,feed_dict=batch)
			for a in range(opt.inputViewN):
				xyz1 = xyz[a].T # [VHW,3]
				ml1 = ml[a].reshape([-1]) # [VHW]
				points24[a,0] = xyz1[ml1>0]
			# output results
			scipy.io.savemat("results_{0}/{1}/{2}.mat".format(opt.group,opt.load,CAD),{
				"image": dataChunk["image_in"][i],
				"pointcloud": points24
			})
			pointMeanN = np.array([len(p) for p in points24[:,0]]).mean()
			print("{0}/{1} ({2}) done (average {3} points), time={4}"
				.format(util.toCyan("{0}".format(m+1)),
						util.toCyan("{0}".format(CADN)),
						CAD,
						util.toBlue("{0:.2f}".format(pointMeanN)),
						util.toGreen("{0:.2f}".format(time.time()-timeStart))))
		
		if c!=chunkN-1: dataloader.thread.join()

print(util.toYellow("======= EVALUATION DONE ======="))