Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
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])
Ejemplo n.º 4
0
 def test_gray_const(self):
     psnr = sewar.psnr(self.read('gry'), self.read('gry_const'))
     self.assertTrue(abs(psnr - 15.084871) < self.eps)
Ejemplo n.º 5
0
 def test_color_const(self):
     psnr = sewar.psnr(self.read('clr'), self.read('clr_const'))
     self.assertTrue(abs(psnr - 14.507951) < self.eps)
Ejemplo n.º 6
0
 def test_gray_noise(self):
     psnr = sewar.psnr(self.read('gry'), self.read('gry_noise'))
     self.assertTrue(abs(psnr - 15.064594) < self.eps)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 def test_gray(self):
     psnr = sewar.psnr(self.read('gry'), self.read('gry'))
     self.assertTrue(psnr == np.inf)
Ejemplo n.º 9
0
 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)