6.2 Transcodificador VP9 para AV1
6.2.2 Resultados
101
orientação observadas nas Tabelas 12, 13, 14 e 15. É possível resumir essas tabelas através da Tabela 16, onde destacam-se as únicas orientações autorizadas a serem testadas no codificador AV1, dadas a profundidade atual na codificação e a orientação observada no formato VP9. Note que a profundidade 5 do AV1 possui apenas orienta- ção quadrática, razão pela qual ela não está presente na Tabela 16. Como podemos observar, quase todas as probabilidades de escolha do codificador AV1 tendem para a orientação quadrática. Dessa forma, é possível definir um pseudocódigo que sim- plifica a Tabela 16, como apresentado na Figura 20. Através desse pseudocódigo, podemos apresentar a proposta de transcodificador rápido do formato VP9 para AV1, como consta na Figura 21.
O algoritmo representado no fluxograma da Figura 21 tem como entrada informa- ções do decodificador, indicando as profundidades e orientações de cada árvore de particionamentos decodificada. Durante a execução do codificador, informações sobre o nível de quantização utilizado e o nível atual da árvore são utilizados para avaliar a correta orientação a ser utilizada naquele ponto do vídeo. A única exceção é caso a profundidade atual seja igual a cinco, como representado no primeiro condicional da Figura 21.
102
orientacaoAV1 <- Quad.
se profundidadeAV1 for 1 faça:
se profundidadeVP9 for 1
e orientacaoVP9 for Horz.
e quantização for 20 faça:
orientacaoAV1 <- Horz.
se profundidadeVP9 for 2
e orientacaoVP9 for Vert.
e quantização for 43 faça:
orientacaoAV1 <- Vert.
se profundidadeAV1 for 2 faça:
se profundidadeVP9 for 2
e orientacaoVP9 for Horz.
e quantização for 20 faça:
orientacaoAV1 <- Horz.
se profundidadeVP9 for 2
e orientacaoVP9 for Horz.
e quantização for 32 faça:
orientacaoAV1 <- Horz.
se profundidadeVP9 for 3
e orientacaoVP9 for Quad.
e quantização for 20 faça:
orientacaoAV1 <- Horz.
se profundidadeVP9 for 3
e orientacaoVP9 for Horz.
e quantização for 20 faça:
orientacaoAV1 <- Horz.
se profundidadeVP9 for 3
e orientacaoVP9 for Vert.
e quantização for 20 faça:
orientacaoAV1 <- Vert.
se profundidadeVP9 for 3
e orientacaoVP9 for Vert.
e quantização for 32 faça:
orientacaoAV1 <- Vert.
se profundidadeAV1 for 3 faça:
se profundidadeVP9 for 3
e orientacaoVP9 for Horz.
e quantização for 20 faça:
orientacaoAV1 <- Horz.
se profundidadeVP9 for 3
e orientacaoVP9 for Horz.
e quantização for 32 faça:
orientacaoAV1 <- Horz.
se profundidadeVP9 for 3
e orientacaoVP9 for Horz.
e quantização for 43 faça:
orientacaoAV1 <- Horz.
retorna orientacaoAV1
Figura 20 – Pseudocódigo implementado no AV1 para escolha de orientação de particiona- mentos, baseado na Tabela 16. Fonte: Elaborada pelo autor.
103
Figura 21 – Proposta de transcodificação rápida do formato VP9 para AV1 baseada em análi- ses estatísticas. Fonte: Elaborada pelo autor.
104 Tabela 16: Resumo de particionamentos permitidos ao codificador AV1, de acordo com as Tabelas 12, 13, 14 e 15. Des-
tacou-se as células que não são Quad.
CondiçãodoBloconoAV1
CQ 20
0 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
1 Quad. Horz. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
2 Quad. Quad. Quad. Quad. Horz. Quad. Horz. Horz. Vert. Quad.
3 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Horz. Quad. Quad.
4 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
CQ 32
0 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
1 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
2 Quad. Quad. Quad. Quad. Horz. Quad. Horz. Horz. Vert. Quad.
3 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Horz. Quad. Quad.
4 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
CQ 43
0 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
1 Quad. Quad. Vert. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
2 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
3 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Horz. Quad. Quad.
4 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
CQ 55 0 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
1 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
Profundidade e Orientação Observadas no VP9
Profundidade 1 2 3 4
Quad. Horz. Vert. Quad. Horz. Vert. Quad. Horz. Vert. Quad.
Continua na próxima página
105 Tabela 16: Resumo de particionamentos permitidos ao codificador AV1, de acordo com as Tabelas 12, 13, 14 e 15. Des-
tacou-se as células que não são Quad. (Continuação)
CQ 55
2 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
3 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
4 Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad. Quad.
Profundidade e Orientação Observadas no VP9 Profundidade
1 2 3 4
Quad. Horz. Vert. Quad. Horz. Vert. Quad. Horz. Vert. Quad.
106 Tabela 17: Resultados da transcodificação rápida de VP9 para AV1 baseada em análise estatística.
CIF
bqfree_240p_120f 4,7555 24,18 0,197
bqzoom_240p_120f 4,4228 23,37 0,189
chairlift_240p_120f 4,0765 26,89 0,152
mozzoom_240p_120f 2,7979 26,15 0,107
Média – CIF 4,0132 25,15 Desvio Padrão – CIF 0,8563 1,64
SD
rain2_hdr_amazon_360p 2,9938 32,73 0,091
red_kayak_360p_120f 1,9096 31,62 0,060
snow_mnt_640x360_120f 1,6583 33,61 0,049
tacomanarrows360p_120f 3,5571 18,65 0,191
Média – SD 2,5297 29,15 Desvio Padrão – SD 0,8972 7,05
HD720
dark720p_120f 4,1424 23,02 0,180
Johnny_1280x720_60_120f 6,0483 24,74 0,245
Netflix_DrivingPOV_1280x720_60fps_8bit_420_120f 6,3701 31,58 0,202 Netflix_RollerCoaster_1280x720_60fps_8bit_420_120f 6,6917 41,73 0,160
Média – HD720 5,8131 30,27 Desvio Padrão – HD720 1,1444 8,49
HD1080 crowd_run_1080p50_60f 3,5322 34,25 0,103
Netflix_Crosswalk_1920x1080_60fps_8bit_420_60f 4,0039 18,01 0,222
Classe Sequência BD-rate (%) TS (%) Razão
Continua na próxima página
107 Tabela 17: Resultados da transcodificação rápida de VP9 para AV1 baseada em análise estatística. (Conti-
nuação)
HD1080 park_joy_1080p50_60f 5,8649 42,67 0,137
seaplane_hdr_amazon_1080p 4,9808 24,53 0,203
Média – HD1080 4,5955 29,86 Desvio Padrão – HD1080 1,0393 10,83
HD1080+SCC
DOTA2_60f_420 3,3484 25,49 0,131
MINECRAFT_60f_420 4,8084 47,58 0,101
STARCRAFT_60f_420 2,8454 21,22 0,134
wikipedia_420 8,0104 11,26 0,711
Média – HD1080+SCC 4,7532 26,39 Desvio Padrão – HD1080+SCC 2,3256 15,33 Média Geral 4,3409 28,16 Desvio Padrão Geral 1,6411 8,92
Classe Sequência BD-rate (%) TS (%) Razão
7 TRANSCODIFICAÇÃO DE VÍDEO BASEADO EM APREN- DIZADO DE MÁQUINA
Ao longo do texto, apresentamos o uso de aprendizado de máquina como uma im- portante estratégia para tornar as propostas de aceleração da transcodificação mais eficientes. Como foi ressaltado no capítulo 3, trabalhos envolvendo aprendizado de máquina tendem a apresentar resultados mais satisfatórios de TS e BD-rate do que aqueles baseados em análises estatísticas. Apesar dos resultados de propostas ba- seadas em aprendizado de máquina serem positivos, a adaptação das estratégias em outros transcodificadores rápidos é algo incomum, principalmente em transcodi- ficações heterogêneas, já que pode ser difícil, ou mesmo impossível, compatibilizar as complexas ferramentas de diferentes formatos de codificação de vídeo. Portanto, um dos objetivos apresentados neste capítulo é desenvolver umpipeline de proces- samento que possibilite a adaptação da metodologia de desenvolvimento de trans- codificadores rápidos para diversas combinações de formatos utilizando aprendizado de máquina. Embora abordemos especificamente o algoritmo de aprendizado de má- quina CART (veja seção 7.1), a alteração de algoritmos e/ou de seus hiperparâmetros, dentro dopipeline, é simples e intuitiva.
Para fins de viabilidade e prova de conceito do pipeline de processamento pro- posto, este capítulo apresenta soluções geradas para transcodificadores de diversos formatos para o formato AV1, adaptando um trabalho original desenvolvido de VP9 para AV1. Contudo, ao invés de apresentar múltiplas soluções distintas, ou seja, um transcodificador rápido para cada combinação de formatos (como os apresentados no capítulo 6), este capítulo propõe a aplicação dopipeline proposto, a fim de permitir a geração de soluções para os vários transcodificadores rápidos de forma simplificada.
Como descrito no capítulo 3, o reaproveitamento de estruturas de particionamento de blocos é uma das principais abordagens em trabalhos de transcodificador rápido observados na literatura científica. Uma das principais razões dessa relevância está no fato de que o número de tamanhos de blocos avaliados está diretamente relaci- onados com a alta complexidade das predições intraquadro e interquadros, inclusive das transformadas, já que a busca pelos melhores modos preditivos se dá pela busca
109
(por vezes exaustiva) dos diversos tamanhos de blocos disponíveis. Logo, reduzir a quantidade de tamanhos de bloco a serem considerados na recodificação do vídeo reduz consideravelmente a complexidade do codificador. No capítulo 5, abordamos o impacto na eficiência da codificação do AV1 ao manipular a sua árvore de particiona- mentos. Portanto, as soluções desenvolvidas para transcodificação rápida usando mo- delos preditivos gerados por algoritmos de aprendizado de máquina, descritas neste capítulo da tese, possuem como base o treinamento de modelos com o objetivo de predizer o particionamento do bloco em quatro novos ramos.
Assim, apresentamos dois desafios neste capítulo: (1) verificar a possibilidade de implementar um pipeline de processamento que permita a adaptação de soluções para transcodificadores rápidos de forma simplificada e escalonável, ou seja, se é possível utilizar os mesmos passos empregados no desenvolvimento de um transcodi- ficador rápido ao desenvolver um outro transcodificador rápido para outra combinação de formatos; e (2) averiguar se opipeline permite atingir resultados compatíveis com o observado na literatura, independentemente da combinação de formatos utilizados como fonte e destino.
As soluções para aceleração de transcodificadores geradas a partir dopipelinepro- posto baseiam-se nos formatos mais comuns na indústria destreamingda atualidade, conforme Bitmovin (2021a) e Bitmovin (2022a): H.264/AVC, H.265/HEVC, VP9, VP8, VVC e AV1. Como deve ter ficado evidente até este momento, optamos por utilizar o AV1 como formato de destino.
Além do nosso trabalho apresentado na seção 5.2, não existem outros trabalhos conhecidos com foco na aceleração da transcodificação de VP9 para AV1. Há na li- teratura alguns trabalhos de transcodificação rápida de H.265/HEVC para AV1, vide Borges et al. (2019), Borges et al. (2019), Borges et al. (2021a) e Chen et al. (2019).
Inclusive, os autores deste último desenvolveram uma solução envolvendo aprendi- zado de máquina (trabalho já abordado nas seções 3.1 e 6.1). As demais soluções transcodificação que adaptamos por meio do uso de nosso pipeline são de trans- codificações rápidas inéditas, até o presente momento, na literatura: VP8-para-AV1, H.264/AVC-para-AV1 e H.266/VVC-para-AV1.
Conforme discutido no capítulo 1 com base no relatório publicado por Bitmovin (2021a) e Bitmovin (2022a), os formatos listados (H.264/AVC, H.265/HEVC, VP9 e VP8) são os mais utilizados na indústria destreaming de vídeos. Portanto, apresen- tamos soluções para aceleração de transcodificação para o formato de codificação de vídeo AV1 a partir de praticamente 100% dos formatos utilizados no mercado inter- nacional de streaming de vídeo, com exceção da China, que utiliza formatos próprios (SIGLIN, 2016).
Assim exposto, este capítulo apresenta as seguintes contribuições nas próximas seções:
110
1. Umpipelinede processamento para geração de soluções de transcodificadores rápidos de vídeo com uso de modelos preditivos treinados através de aprendi- zado de máquina;
2. Um transcodificador VP9-para-AV1, acelerado através do uso de árvores de de- cisão;
3. Um transcodificador H.264/AVC-para-AV1, acelerado através do uso de árvores de decisão;
4. Um transcodificador H.265/HEVC-para-AV1, acelerado através do uso de árvo- res de decisão;
5. Um transcodificador VP8-para-AV1, acelerado através do uso de árvores de de- cisão;
6. Um transcodificador H.266/VVC-para-AV1, acelerado através do uso de árvores de decisão.
Para permitir o desenvolvimento e a prova de conceito do pipeline de processa- mento proposto, algumas decisões precisaram ser tomadas, descritas na seção 7.1.
A seção 7.2 se dedica a abordar o funcionamento dopipeline proposto e suas fases de execução automatizadas. Os detalhes mais importantes dessepipelinede proces- samento são aprofundados nas seções 7.3 (seleção dos modelos de aprendizado de máquina) e 7.4 (algoritmo de transcodificação a ser adaptado pelas propostas).