def plot_test_generated_images_for_model(output_dir, generator, x_test_hr, x_test_lr ,filenames ,dim=(1, 3), figsize=(15, 5)): examples = x_test_hr.shape[0] image_batch_hr = denormalize(x_test_hr) image_batch_lr = x_test_lr gen_img = generator.predict(image_batch_lr) generated_image = denormalize(gen_img) image_batch_lr = denormalize(image_batch_lr) for index in range(examples): plt.figure(figsize=figsize) plt.subplot(dim[0], dim[1], 1) plt.imshow(image_batch_lr[index], interpolation='nearest') plt.axis('off') plt.subplot(dim[0], dim[1], 2) plt.imshow(generated_image[index], interpolation='nearest') plt.title('psnr value %d' % sewar.psnr(image_batch_hr,generated_image,MAX=None)) plt.axis('off') plt.subplot(dim[0], dim[1], 3) plt.imshow(image_batch_hr[index], interpolation='nearest') plt.axis('off') plt.tight_layout() plt.savefig(output_dir + filenames[index] + '_sr.png')
def train(epochs, batch_size): psnr_v=[] epochs_v = [] downscale_factor = 4 batch_count = int(x_train_hr.shape[0] / batch_size) shape = (image_shape[0]//downscale_factor, image_shape[1]//downscale_factor, image_shape[2]) generator = Generator(shape).generator() discriminator = Discriminator(image_shape).discriminator() adam = Adam(lr=1E-4, beta_1=0.9, beta_2=0.999, epsilon=1e-08) generator.compile(loss=vgg_loss, optimizer=adam) discriminator.compile(loss="binary_crossentropy", optimizer=adam) shape = (image_shape[0]//downscale_factor, image_shape[1]//downscale_factor, 3) gan = get_gan_network(discriminator, shape, generator, adam) for e in range(1, epochs+1): print ('-'*15, 'Epoch %d' % e, '-'*15) for _ in range(batch_count): rand_nums = np.random.randint(0, x_train_hr.shape[0], size=batch_size) image_batch_hr = x_train_hr[rand_nums] image_batch_lr = x_train_lr[rand_nums] generated_images_sr = generator.predict(image_batch_lr) real_data_Y = np.ones(batch_size) - np.random.random_sample(batch_size)*0.2 fake_data_Y = np.random.random_sample(batch_size)*0.2 discriminator.trainable = True d_loss_real = discriminator.train_on_batch(image_batch_hr, real_data_Y) d_loss_fake = discriminator.train_on_batch(generated_images_sr, fake_data_Y) d_loss = 0.5 * np.add(d_loss_fake, d_loss_real) rand_nums = np.random.randint(0, x_train_hr.shape[0], size=batch_size) image_batch_hr = x_train_hr[rand_nums] image_batch_lr = x_train_lr[rand_nums] gan_Y = np.ones(batch_size) - np.random.random_sample(batch_size)*0.2 discriminator.trainable = False loss_gan = gan.train_on_batch(image_batch_lr, [image_batch_hr,gan_Y]) print("Loss HR , Loss LR, Loss GAN") print(d_loss_real, d_loss_fake, loss_gan) if e % 300 == 0: generator.save('./model/gen_model%d.h5' % e) model = load_model('./model/gen_model%d.h5'%e , custom_objects={'vgg_loss': loss.vgg_loss}) model.predict(x_train_lr[rand_nums[0]]) generated_image = denormalize(gen_img) psnr_v.append(sewar.psnr(x_train_hr[rand_nums[0]],generated_image,MAX=None)) epochs_v.append(e) plt.plot(psnr_v,epochs_v) plt.savefig('./model' + 'progress%d.png'%e)
messageIndex += 1 else: #print('ilk ife giremedi') index += 1 pixelValues = image[i, j] #print('Changed pixel values:', pixelValues) print("100% complete") print("writtenBits:", writtenBits) print('You hid', bitsMessageSize, 'bits') cv2.imwrite('hidden.bmp', image) #Calculating the metrics print('MSE:', round(sewar.mse(originalImage, image), 5)) print('PSNR:', round(sewar.psnr(originalImage, image), 5)) print('UIQI:', round(sewar.uqi(originalImage, image), 5)) (ssimValue, csValue) = sewar.ssim(originalImage, image) print('SSIM:', round(ssimValue, 5)) numpy_horizontal = np.hstack((originalImage, image)) cv2.namedWindow("Original vs Hidden", cv2.WINDOW_NORMAL) cv2.imshow('Original vs Hidden', numpy_horizontal) cv2.waitKey() #Plotting histograms color = ('b', 'g', 'r') plt.figure(figsize=(11, 5)) plt.subplot(1, 2, 1) for i, col in enumerate(color): histr = cv2.calcHist([originalImage], [i], None, [256], [0, 256])
def test_gray_const(self): psnr = sewar.psnr(self.read('gry'), self.read('gry_const')) self.assertTrue(abs(psnr - 15.084871) < self.eps)
def test_color_const(self): psnr = sewar.psnr(self.read('clr'), self.read('clr_const')) self.assertTrue(abs(psnr - 14.507951) < self.eps)
def test_gray_noise(self): psnr = sewar.psnr(self.read('gry'), self.read('gry_noise')) self.assertTrue(abs(psnr - 15.064594) < self.eps)
def test_color_noise(self): psnr = sewar.psnr(self.read('clr'), self.read('clr_noise')) print(psnr) self.assertTrue(abs(psnr - 14.344162) < self.eps)
def test_gray(self): psnr = sewar.psnr(self.read('gry'), self.read('gry')) self.assertTrue(psnr == np.inf)
def test_color(self): psnr = sewar.psnr(self.read('clr'), self.read('clr')) self.assertTrue(psnr == np.inf)
def psnr(image_sr, image_hr): return sewar.psnr(image_hr, image_sr)