Se acompanha séries como CSI, é provável que reconheça cenas como esta: os investigadores estão no encalço do culpado e observam, expectantes, as imagens das câmaras de segurança. À primeira vista, as imagens não parecem mostrar a informação que procuram, mas depois reparam num detalhe quase impercetível. Ampliam a imagem, melhoram a sua qualidade e… o detalhe que se torna visível revela informação importante e permite avançar na investigação.
Na realidade, infelizmente, não basta ampliar uma imagem para fazer surgir detalhes. As imagens são compostas por um número limitado de píxeis e, para obter uma imagem mais nítida, são necessários mais píxeis. Se esses píxeis não tiverem sido captados, não é possível recuperá-los. Hoje, no entanto, a IA permite-nos aproximar desse resultado, prevendo esses píxeis adicionais: como seria provavelmente a imagem? O processo de obter uma imagem de alta resolução a partir de uma imagem de baixa resolução chama-se super-resolução.
A super-resolução tem aplicações úteis em várias áreas, por exemplo:
Imagiologia médica (fonte): limitações como o pouco tempo disponível ou os movimentos do paciente fazem com que a resolução das imagens de ressonância magnética nem sempre seja tão elevada quanto o desejado. Por isso, utiliza-se a super-resolução para melhorar a qualidade dessas imagens, o que pode ajudar os médicos a fazer um diagnóstico.
Imagens de satélite (fonte): as imagens de satélite são captadas a grande distância e, por isso, mostram poucos detalhes. Objetos como os automóveis, por exemplo, podem ter apenas 10 píxeis de dimensão. A super-resolução pode ajudar a detetar melhor os objetos.
Segurança (fonte): como não é possível instalar câmaras de alta resolução em todo o lado, as câmaras de segurança produzem muitas vezes imagens de baixa resolução. Melhorar a qualidade dessas imagens pode tornar os detalhes – como as matrículas – mais visíveis.
Os métodos clássicos para acrescentar píxeis a uma imagem geram novos píxeis com base nos píxeis circundantes. Infelizmente, a super-resolução não é assim tão simples: estas técnicas de interpolação resultam muitas vezes em imagens desfocadas ou pixelizadas. Os avanços nos métodos de deep learning impulsionaram o desenvolvimento da super-resolução nos últimos anos. Com base num grande conjunto de imagens, as redes neuronais podem aprender a acrescentar detalhes às imagens. Como funciona? Neste artigo, apresentamos uma introdução aos métodos de deep learning supervisionado para super-resolução.
Preparação dos dados
O primeiro passo no supervised learning é criar um conjunto de dados para treinar um modelo. O objetivo dos modelos de super-resolução é aprender uma correspondência entre imagens de baixa resolução (LR) e de alta resolução (HR): por outras palavras, como transformar uma imagem LR numa imagem HR. Para isso, podemos fornecer ao modelo uma imagem LR como entrada e uma imagem HR como ground truth. Assim, o modelo pode aprender uma função que, a partir da imagem LR, produza uma imagem tão próxima quanto possível da original. Precisamos, portanto, de pares LR–HR para treinar o modelo. Um conjunto de dados com pares LR–HR é frequentemente criado a partir de um conjunto de imagens HR, ao qual se aplica uma função para reduzir a qualidade das imagens. Isso pode ser feito removendo píxeis, aplicando desfocagem e adicionando ruído. Desta forma, gera-se uma versão de boa qualidade e outra de baixa qualidade de cada imagem, que podemos fornecer ao modelo.
Frameworks de modelos
Agora que sabemos de que conjunto de dados precisamos, podemos analisar os diferentes tipos de modelos que podemos usar para super-resolução. A super-resolução é um problema mal posto: uma imagem LR pode corresponder a várias imagens HR, pelo que não existe uma única solução correta. Por isso, a forma como se acrescentam píxeis, designada upsampling , é uma componente importante do método. Existem, em termos gerais, quatro frameworks de modelos com diferentes abordagens ao upsampling:
Pre-upsampling: neste método, a imagem LR é primeiro ampliada (com técnicas clássicas de interpolação) para gerar uma imagem HR aproximada. Em seguida, usam-se redes neuronais convolucionais (CNNs) para aprender uma correspondência entre esta imagem HR aproximada e a imagem HR original. A vantagem deste método é que a rede neuronal só precisa de aprender esta correspondência, porque a ampliação da imagem é feita com métodos clássicos de interpolação. A desvantagem é que isso pode causar desfocagem.
Post-upsampling: as imagens LR passam primeiro pelas convolutional layers, e o upsampling só é realizado na última camada. A vantagem desta abordagem é que a função de mapeamento é aprendida num espaço de menor dimensão, o que torna os cálculos menos complexos.
Iterative up-and-down sampling: o processo alterna entre upsampling e downsampling. Os modelos que utilizam este framework tendem a identificar melhor as relações profundas entre os pares LR-HR e, por isso, produzem frequentemente imagens de melhor qualidade.
Progressive-upsampling: este framework utiliza várias CNNs para gerar, em pequenos passos, uma imagem cada vez maior. Dividir uma tarefa difícil em várias tarefas mais simples reduz a sua complexidade, o que pode melhorar os resultados.
Além do método de upsampling, o tipo de rede de deep learning é outra componente importante dos modelos de super-resolução. Abordar as diferentes redes em detalhe iria além do âmbito deste artigo, mas pode consultar esta fonte para obter mais informações.
Estratégias de aprendizagem
Para treinar um modelo de super-resolução, é necessário conseguir medir a diferença entre a imagem HR gerada e a imagem HR original. Esta diferença é utilizada para calcular o erro na reconstrução da imagem HR e, assim, otimizar o modelo. Para este cálculo, utilizam-se funções de loss . Alguns exemplos destas funções de loss são:
Pixel loss: pixel loss é a função de perda mais simples: cada pixel da imagem gerada é comparado diretamente com o pixel correspondente da imagem original. A investigação mostrou que isto não reflete totalmente a qualidade da reconstrução, pelo que também se utilizam outras funções.
Content loss: esta função assegura a semelhança visual entre a imagem original e a imagem gerada, comparando o conteúdo em vez dos pixels individuais. A utilização desta função de perda melhora, assim, a qualidade percetual e produz imagens mais realistas.
Adversarial loss: é utilizada em arquiteturas relacionadas com GANs. As Generative Adversarial Networks (GANs) são constituídas por duas redes neuronais – o gerador e o discriminador – que competem entre si (quer saber mais sobre GANs? Leia este artigo do blogue). No caso da super-resolução, o gerador tenta produzir imagens que o discriminador considera reais. O discriminador tenta distinguir as imagens HR originais das imagens geradas. Este processo de treino resulta, por fim, num gerador capaz de produzir imagens semelhantes às originais.
Total variation loss: total variation loss calcula a diferença absoluta entre pixels adjacentes e mede a quantidade de ruído numa imagem. Esta função é utilizada para reduzir o ruído nas imagens geradas.
Avaliação
Para avaliar os resultados dos modelos de super-resolução treinados, mede-se a qualidade das imagens geradas. Existem vários métodos para o fazer, que se dividem em objetivos e subjetivos. Como os métodos subjetivos exigem frequentemente muito tempo e dinheiro, sobretudo quando o conjunto de dados é grande, os métodos objetivos são mais utilizados em super-resolução.
Peak signal-to-noise ratio (PSNR): esta métrica quantitativa baseia-se nos píxeis individuais e indica a relação entre sinal e ruído.
Structural similarity index metric (SSIM): é também um método objetivo e mede as semelhanças estruturais entre imagens, comparando o contraste, a intensidade luminosa e os detalhes estruturais.
Opinion scoring: um método subjetivo em que se pede a pessoas que avaliem critérios específicos, como a nitidez, a cor ou o aspeto natural.
Discussão
Agora que abordámos alguns métodos para treinar modelos de super-resolução com deep learning, talvez pense: impressionante, com a super-resolução podemos revelar todo o tipo de detalhes que, de outro modo, não conseguiríamos ver! Na prática, é um pouco mais complicado. Há algum tempo, a seguinte fotografia circulou nas redes sociais:
À esquerda, vemos uma imagem de baixa resolução, claramente de Obama. À direita, vemos o resultado de um modelo de super-resolução treinado com rostos: um homem branco. Isto gerou debate porque, tal como muitas outras aplicações de IA, mostra o perigo do enviesamento: este modelo de super-resolução produzia rostos de pessoas brancas com muito mais frequência do que rostos de pessoas com outras cores de pele. O que aconteceu aqui? O modelo não ‘melhora’ propriamente a imagem de baixa resolução; gera antes um rosto completamente novo que, em baixa resolução, se parece com a imagem de entrada. O enviesamento presente no conjunto de dados usado para treinar o modelo reflete-se nos resultados. Por isso, é importante perceber que a super-resolução não produz uma reconstrução verdadeira: fazemos uma estimativa com base na informação aprendida a partir de um conjunto de dados. Continua a ser informação ‘inventada’, pelo que temos de ter cuidado com as conclusões que dela tiramos e pensar bem nas finalidades para as quais podemos ou não utilizar esta tecnologia.