dc.description.abstract | Este trabalho discute maneiras de integrar técnicas de Predição Intra, um conceito clás- sico de algoritmos para compressão de imagem, com os novos codecs que vem surgindo baseados no uso de Redes Neurais. No Capitulo 1, é introduzido o problema, e é discutido como o texto vai ser estru- turado. Primeiro apresentamos algumas justificativas para o estudo de novos codecs, e descrevemos como codecs baseados em redes neurais tem obtidos bom resultados, e que a ideia de predição intra tem sido pouco explorada por eles. Depois disso, fazemos um detalhamento dos objetivos específicos do texto, e por fim descrevemos a organização dos demais capítulos. O segundo capítulo, que trata dos Fundamentos, busca cobrir a maioria dos conceitos usados no restante do texto. Para isso, ele é dividido em 4 sessões. Na preimeira sessão, são apresentados conceitos básicos de Teoria da Informação: Entropia, Distância de Kullback- Leibler, e Codificadores Aritméticos. A segunda sessão trata dos conceitos de compressão de imagem. Primeiro, são discutidas as etapas de um codec de imagens genérico: DPCM, Transformada, Quantização, Codificação e as respectivas eetapas inversas. Depois disso, é dado um detalhe maior ao funcionamento das técnicas de DPCM, divididas em Predição Intra e Predição Inter. Ainda na sessão de Compressão de Imagens, discutimos também a Optimização Taxa-Distorção (RDO), e como nem todos os codecs de fato fazem esse tipo de otimização. Por fim, discutimos as duas métricas que usamos para avaliar nossos codecs, PSNR e MS-SSIM. A próxima sessão do capítulo de Fundamento trata de Redes Neurais Artificiais. Dis- cutimos como elas são treinadas, as funções de ativação usadas, e as camadas que de Redes Neurais que usamos em nossos experimentos. Por fim, temos uma sessão sobre Au- toencoders, que são um tipo específico de rede neural usado em problemas de compressão de imagens. Nessa sessão discutimos também as diferentes formas de quantizar as repre- setações que são obtidas dos Autoencoders, e que se tornam de fato nossa representação binária para as imagens. O terceiro capítulo trata da Revisão da Literatura, e começa com uma sessão sobre Au- toencoders usados para Inpainting. Inpainting é um problema clássico de processamento de imagens, que geralmente surge durante edições de imagens, onde se busca preencher um pedaço de uma imagem que não esteja mais presente com algo que possua algum sen- tido. A ideia de usar Redes Neurais para fazer Inpainting surge com [Pathak et al., 2016], e é posteriormente aprimorada por [Iizuka et al., 2017] e [Yu et al., 2018]. Para o nosso trabalho, contudo, o maior foco é em [Minnen et al., 2017], que teve a ideia de usar redes para inpainting no lugar de métodos de predição intra tradicionais. A segunda sessão do Capítulo 3 trata sobre Autoencoders usados para Compressão, e é dividida entre Autoencoders Recursivos e Iterativos e os baseados em Modelos Varia- cionais. Autoencoders Iterativos são descritos em [Toderici et al., 2016], que inicia a ideia de montar um codec com base em Redes Neurais com uma ideia simples de colocar várias camadas em sequência, buscando reconstruir na saída da rede a imagem de en- trada, mas com uma camada binarizadora no meio. Como esses resultados não são bons, ele conclui que é melhor encadear várias dessas redes, o que seria o "codec it- erativo". Para melhorar esse resultado, ao invés de encadear várias redes, ele resolve usar apenas uma única rede, mas que possui camadas recorrentes LSTM, que possuem memória. Esse é o chamado codec recursivo. Em seguida, detalhamos mais dois artigos, [Toderici et al., 2017] e [Johnston et al., 2018], que elaboram um pouco mais essas ideias, incorporando mais módulos para melhorar os resultados, e passando as imagens mais vezes pela rede ("priming") antes de obter o resultado da codificação. Por fim, discutimos novamente o artigo [Minnen et al., 2017], que usa uma rede de inpainting para realizar predição intra e detalhando que o codec principal usado é um codec recursivo. Este último artigo serve de base para o artigo [Jung et al., 2020], que detalha nossos experimentos com codecs recursivos. A subsessão seguinte trata de Autoencoders para compressão baseados em Modelos Variacionais. Modelos Variacionais, como definidos por [Kingma and Welling, 2014], são modelos de Autoencoders em que se supõe que a distribuição dos dados que estão sendo analisados possui na verdade uma distribuição latente mais simples, e que pode ser aprox- imada por uma distribuição normal de média zero e variância unitária. Quando criamos um modelo variacional, queremos descobrir descobrir uma transformada da distribuição que estamos lidando para a distribuição normal, e uma transformada inversa que leve da distribuição normal de volta para a que estamos lidando. [Ballé et al., 2016] nota que existe uma analogia entre modelos variacionais e otimização taxa-distorção, e cria um modelo para compressão de imagens para fazer isso. Ele minimiza conjuntamente a entropia da distribuição latente, já criando um modelo para o codificador aritmético, e a distorção da imagem reconstruída. Um dos motivos para isso dar tão certo é o uso de camadas GDN, e suas respectivas inversas, IGDN. Camadas GDN tem o efeito de gaussianizar o sinal de entrada, e aproximá-lo de uma transformada unitária. vii Seguindo nessa linha, [Ballé et al., 2018] adiciona uma segunda modelagem de hiper- parametros sobre o código, pois ele observa que há ainda uma grande diferença espa- cial nos códigos obtidos, correlacionada com a imagem. Por fim, discutimos também [Theis et al., 2017], que tem ideias similares, mas cujo ponto mais interessante é o uso de uma multiplicação por escalares durante a quantização. Esse procedimento permite obter vários pontos na curva de RDO a partir de um único treinamento. No Capítulo 4, que trata da Metodologia usada, buscamos detalhar os experimen- tos que fizemos. Primeiro, descrevemos dois modelos de Autoencoders para Inpainting que usamos. O primeiro modelo possui a mesma arquitetura que o modelo usado por [Minnen et al., 2017], e possui como entrada um patch de tamanho 64 × 64, em que a parte inferior direita é ocultada, e como saída esperada gerar essa mesma parte inferior direita que foi ocultada na entrada. O segundo modelo possui uma arquitetura similar, mas com a diferença que é adicionado um patch adicional no canto superior direito, e os patchs de entrada são rearranjados no formato 4 × 32 × 32. Por causa dessa mudança, as primeiras camadas do modelo são ajustadas. Na segunda sessão do Capítulo 4, descrevemos os experimentos feitos em [Jung et al., 2020], lidando com Autoencoders para Compressão Recursivos. Para analisar os efeitos da predição intra, usamos 3 modelos. O primeiro é baseado na arquitetura base de [Toderici et al., 2017], e não possui modelos de predição intra. O segundo modelo usa a mesma arquitetura de base, mas realiza predição intra usando o primeiro Autoencoder para Inpainting descrito na sessão anterior, e codifica apenas resíduos. O terceiro modelo realiza predições intra usando os dois Autoencoders para Inpainting descritos na sessão anterior, além de previsões intra do HEVC. Ele escolhe a melhor predição, e codifica ela. Devido à arquitetura desses modelos, devemos ressaltar que eles trabalham com patches de tamanho fixo 32 × 32. Por fim, na terceira sessão, descrevemos os codecs baseados em modelos variacionais que usamos. Como no caso dos codecs recursivos, usamos três modelos. O primeiro deles não faz uso de predição intra, e possui uma arquitetura muita semelhante àquela usada por [Ballé et al., 2016], com um pequeno ajuste no tamanho dos filtros. O segundo modelo faz uso de predição intra, e possui na entrada o nosso primeiro modelo de Autoencoder para Inpainting. Uma limitação desse segundo modelo é que ele é limitado a usar um patch size de tamanho 32 × 32, por causa do modelo de predição intra usado. Buscando contornar essa limitação, nosso terceiro modelo também possui um modelo de predição intra, mas este é completamente convolucional, e treinado junto com o codec principal. Por causa disso, o terceiro modelo, assim como o primeiro, não possui limitações para o patch size usado. No Capítulo 5, discutimos os resultados dos experimentos propostos no capítulo 4. viii Primeiro, descrevemos como construímos nosso dataset de treinamento, e como é nosso dataset de testes. Em seguida, descrevemos os resultados do nosso Autoencoder para Inpainting, comparando sua performance sozinho contra os modos intra tradicionais do HEVC. Em seguida, descrevemos os resultados dos nossos codecs recursivos. Começamos primeiro fazendo uma análsie da performance do nosso codec base sem predição intra ao longo do treinamento, e chegamos à conclusão que podemos treinar esse tipo de modelo por cerca de 300,000 iterações, pois a partir desse ponto já começa a surgir uma saturação das capacidades do modelo. Em seguida, comparamos as curvas de PSNR e MS-SSIM para os 3 modelos recursivos. A conclusão que chegamos é que o modelo com apenas um modo intra possui resultados piores no geral, mas que o modelo com multiplos modos possui resultados razoáveis, especialmente se considerarmos as taxas mais baixas. Isso acontece porque no modelo de um único modo, caso a predição gerada seja ruim, o modelo acaba se esforçando para consertar ela. Para melhorar os resultados dos nossos codecs recursivos, resolvemos usar um algoritmo de alocação de bits, em que alocamos bits baseados em limiares de PSNR, mas com um parâmetro adicional que decide se vale a pena continuar gastando bits com um dado patch da imagem. Usando esse algoritmo de alocação, temos uma melhora expressiva dos resultados dos codecs recursivos. Na sessão seguinte, analiamos os resultados dos nossos codecs variacionais. Primeiro, fazemos um teste de duração do treinamento, e observamos que começa a haver uma saturação do codec em cerca de um milhão de iterações. Com esse resultado, fazemos uma segunda análise, comparando a relação do patch size de treinamento com o patch size usado na fase de testes. Essa análise nos diz que, exceto por patch sizes muito pequenos, não há diferença significaiva em usar patch sizes diferentes durante treinamento e teste. Um fator inusitado, que temos que ressaltar, é que os pontos indexados com lambda mais baixo, 0.0001, para os codecs variacionais com predição intra que usa um modelo pré-treinado, e aquele com a predição intra treinada junto com o modelo, mas usando patches de tamanho 64, possuem valores muito piores que o esperado. Seria esperado que eles tivessem a menor bpp, do modelo, mas na verdade a bpp deles é bastante alta. Nossa hipótese para esse resultado é que nessas taxas tão baixas, onde em muitos casos nem mesmo a cor é codificada, o modelo de predição intra, que é treinado com imagens natu- rais, não consegue funcionar mais, e por isso acontece um colapso do modelo, resultando em taxas elevadas. Esses pontos, onde o codec não funciona, são ignorados nos demais resultados, já que não são úteis na prática. Comparando os resultados dos codecs, propriamente ditos, o que notamos é que o codec que usa um modelo para predição intra pré-treinado tem resultados muito piores que o codec variacional sem predição intra. Já o modelo em que a predição intra é treinada junto com o codec possui resultados semelhantes ao codec sem predição intra, mas com ix resultados um pouco melhores para baixas taxas. Por fim, comparamos os melhores resultados dos nossos codecs recursivos e variacionais entre si, e contra os codecs JPEG e JPEG2000. O que podemos ver é que os codecs recursivos, usando o algoritmo de alocação de bits, possuem resultados melhores que os do JPEG tradicional, porém inferiores aos do JPEG2000. Os codecs variacionais, contudo, conseguem obter resultados melhores do que o JPEG 2000. Em baixas taxas, particularmente, o codec variacional com o modelo treinado em conjunto obtém bons resultados. O último capítulo trata das conclusões e possíveis continuações do trabalho. Com base nos nossos resultados, vemos que existem evidências de que o uso de predição intra pode melhorar o resultado de codecs de imagens usando redes neurais, principalmente para taxas baixas. Esses resultados, contudo precisam ser mais bem explorados. Na sessão de trabalhos futuros, sugerimos modificar os nossos codecs baseados em modelos variacionais para introduzir a modelagem por hiperprior usada por [Ballé et al., 2018], ou possivelmente extender ainda mais usando um modelo Autoregressivo sobre os códigos. Outro ponto que seria interessante seria fazer um treinamento por etapas para lidar com o problema de moving target dos codecs de predição intra, já que eles são treinados com imagens naturais, mas durante a fase de testes são usados com imagens distorcidas. Isso inclusive poderia resolver os pontos do codec em que ele para de funcionar. Da parte dos Codecs Recursivos, o maior problema a ser resolvido é deixar o codec mais rápido, já que atualmente a predição intra deve ser feita sequencialmente. Uma possibilidade seria ignorar efeitos de drifting, e gerar as predições intra usando a imagem original. Um outro ponto que pode melhorar esses codecs seria adaptar sua arquitetura para uma completamente convolucional, e que permita usar patches de tamanho variável. | pt_BR |