Simultaneous Super Resolution of Underwater Images using Cycle Generative Adversarial Networks

June 19, 2021 (3y ago)

Super resolution


In the realm of underwater monitoring, especially at shallower depths, computer vision emerges as a promising solution. However, this approach encounters significant challenges due to light-distortion factors such as refraction, absorption, and suspended particles. These factors contribute to a loss of quality, resulting in noisy and distorted images. This blog explores the application of Generative Adversarial Networks (GANs) to enhance the resolution of underwater images. We delve into recent advancements in GANs for underwater imagery, referencing scientific papers like Deep SESR. Additionally, we discuss the potential of GANs in generating comprehensive datasets for underwater image restoration.

Understanding Ground Truth in Underwater Imagery

The automation of greyscale image colorization typically relies on paired training data, as any color image can easily be converted to black and white. However, underwater images present a unique challenge due to the absence of ground truth, making it difficult to employ a similar approach for image enhancement.

Dataset Construction

One of the primary challenges in underwater vision is the lack of open and annotated datasets. To circumvent this issue, we utilize Cycle Generative Adversarial Networks (CycleGANs). CycleGANs excel in generating datasets of image pairs by learning mappings between two domains in a way that images from one domain are indistinguishable from those in the other.

CycleGAN Architecture

Generator-A -> Domain-A Generator-B -> Domain-B The generators in CycleGAN perform image translation based on images from the opposing domain. Specifically, Generator-A translates images from Domain B to Domain A, while Generator-B performs the opposite translation.

Domain-B -> Generator-A -> Domain-A Domain-A -> Generator-B -> Domain-B Each generator is paired with a discriminator that assesses whether the generated images are real or fake.

Domain-A -> Discriminator-A -> [Real/Fake] Domain-B -> Generator-A -> Discriminator-A -> [Real/Fake] Domain-B -> Discriminator-B -> [Real/Fake] Domain-A -> Generator-B -> Discriminator-B -> [Real/Fake] By constructing two domains, A (distorted images) and B (non-distorted images from subsets of ImageNet), CycleGAN generates sets of image pairs that simulate underwater conditions.

Loss Function

The CycleGAN objective function comprises two components: an adversarial loss and a cycle consistency loss.

Adversarial Loss

The adversarial loss enables the generators to "trick" the discriminators, reducing their ability to distinguish real images from generated ones. A common choice for the adversarial loss is the least squares loss.

# Adversarial Loss for Generator
loss_G = torch.mean((D_G(fake_images) - 1) ** 2)

Cycle Consistency Loss To ensure that the generated images maintain a semblance to their original versions, we employ cycle consistency loss. This loss ensures that an image translated from one domain to another and back again resembles the original image.

# Cycle Consistency Loss
loss_cycle = torch.mean(torch.abs(original_images - cycle_images))


Given the absence of specific ground truths for underwater images, we evaluate the model by comparing patches of local images. This method allows us to assess the quality and accuracy of the image restoration performed by the GANs.


The application of CycleGANs in the enhancement of underwater images presents a significant advancement in the field of computer vision for underwater monitoring. Through the innovative use of GANs, we can overcome the challenges posed by the lack of ground truth and scarce datasets, paving the way for improved image quality and resolution in underwater imaging.