Classificador de Pose

.

Este notebook é parte do trabalho pixel sides. Ele descreve um experimento de criação de um classificador de pose de imagens de personagens em pixel art para estimar para que lado o personagem está virado: de costas, esquerda, frente ou direita:

center

O objetivo deste experimento foi de exercitar a criação de um classificador de rede neural convolucional (CNN) para a pose do personagem.

Primeiramente, os dados são carregados (seção Carregando o dataset) e, em seguida, é construída e treinada uma rede neural convolucional (seção Classificador CNN).

Além disso, a rede construída e treinada no dataset TinyHero foi usada para prever as poses de novas imagens de personagens em pixel art foram colhidas e os resultados estão na seção do Experimento EXTRA: testar em outro dataset.

Configuração de variáveis do experimento:

Carregando o dataset

O dataset usado se chama TinyHero e é composto por 3648 arquivos de imagem (64, 64, 4) divididos em 4 classes, cada uma representando uma direção para onde o personagem está virado.

Os dados rotulados foram divididos em treinamento e teste em proporção 80/20.

Classificador CNN

Após experimentação, foi gerado um classificador capaz de convergir para aproximadamente 100% de acurácia em apenas 10 épocas de treinamento.

center

A arquitetura possui 2 sequências de convolução e max pooling, seguidas de duas camadas totalmente conectadas. A última tem ativação softmax com 4 saídas e indica a confiança do modelo na classificação de cada exemplo quanto às 4 classes (costas, esquerda, frente, direita).

As duas primeiras camadas possuem 2 e 4 filtros de tamanho (3,3) e reduzem a dimensão da entrada pela metade devido ao preenchimento na convolução e o filtro (2,2) do max pooling. Além disso, sua ativação usa rectified linear unit.

O total de parâmetros treináveis é 24.850.

O otimizador usado foi o Adam com parâmetros:

Após o treinamento, foram analisados a acurácia e o erro da rede tanto em treinamento quanto no conjunto de teste.

Experimento EXTRA: testar em outro dataset

O modelo treinado no dataset TinyHero foi então aplicado a algumas imagens extraídas do programa RPG Maker 2000 (vide 00-pick-images-from-rpgmaker.ipynb). São apenas 96 imagens e elas eram originalmente de (32, 24) mas foram aumentadas/preenchidas respeitando a razão de aspecto para (64, 64).

Ideias pra aumentar aqui:

  1. Mostrar as que foram erradas e fazer análise
  2. Testar com outras imagens pixel art
  3. Testar com fotos ou imagens de alta resolução (reduzidas para 64x64)

Com o dataset carregado e preparado, o modelo foi usado novamente para predizer as classes de direção das novas imagens. Os resultados são exibidos em uma matriz de confusão e com algumas amostras das previsões.