• Nenhum resultado encontrado

8 INSTANCIAÇÃO DO FRAMEWORK

8.1 IMPLEMENTAÇÃO DAS FUNCIONALIDADES DO FRAMEWORK

9.4.2 Ajustes promovidos na rede pré-treinada VGG Face

Todos os ajustes que foram promovidos na rede neural durante o experimento foram feitos nos arquivos Solver.Prototxt e Net.Prototxt. O primeiro contém as configurações de processamento de treino e teste, tais como: intervalo de interações de treino até um teste, taxa de aprendizagem da rede, queda na taxa de aprendizagem durante as iterações de treino, número máximo de iterações, número de interações em que os

parâmetros da rede serão gravados para uso posterior e identificador de uso de GPU (graphics processor unit). O segundo contém a arquitetura da rede neural através da descrição de suas camadas.

As orientações para manipulação dos arquivos Solver.Prototxt e Net.Prototxt foram embasadas nas informações contidas no tutorial da Caffe que é disponibilizado no endereço eletrônico http://caffe.berkeleyvision.org/tutorial/.

Inicialmente, em relação ao arquivo de configuração do processamento da rede Solver.Prototxt original, foram feitos ajustes nos seguintes parâmetros:

test_iter = 1 (inicialmente para 1 pois o arquivo de testes inicial conteria um conjunto de 6 imagens de uma das pessoas e previa-se que o parâmetro batch size para a configuração da rede teria valor igual a 6. Segundo as orientações dos pesquisadores da Caffe a multiplicação do test_iter pelo batch_size deveria ser igual ao número de imagens testadas).

test_interval = 100 (cada teste ocorreria após cada 100 iterações de treino);

base_lr = 0.0001 (optou-se por uma taxa de aprendizagem pequena, para depois ir ajustando, à medida que não se consegue uma boa taxa de acurácia mais cedo. Essa estratégia é sugerida no tutorial da Caffe);

lr_policy = "inv", gamma = 0.001, power = 0.75 (estes parâmetros que identificam a queda da taxa de aprendizagem foram mantidos de acordo com a configuração original pois entendeu-se que a taxa de aprendizado poderia ser reduzida à medida que os treinos da rede fossem ocorrendo, até que a perda atingisse um platô e começaria a se repetir indefinidamente, conforme mostra a Figura 51. Também foi uma estratégia conservadora para, caso não se conseguisse uma boa acurácia, dentro de um tempo razoável, se promovesse a mudança para uma política com uma taxa de aprendizagem maior por mais tempo (KRIZHEVSKY; SUTSKEVER; HINTON, 2012).

Figura 51 - Queda da taxa de aprendizado da rede conforme o tempo de treino

Fonte: https://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe.

display: 100 (número de interações a partir das quais os resultados seriam mostrados no vídeo);

max_iter: 10000 (número máximo de interações para a rede);

snapshot: 1000 (período de interações para gravação das posições da rede treinada até um determinado momento do treino);

solver_mode: GPU (uso ou não da placa gráfica do computador).

No arquivo Net.Prototxt, que contém as descrições das camadas de neurônios da rede neural, inicialmente foram feitos os seguintes ajustes:

 ajustes nas camadas de entrada de dados: (para colocar o nome dos arquivos de configuração das imagens para treino e teste, ajuste no parâmetro batch_size para o número de imagens que seriam carregadas na memória, tomando o cuidado para não carregar muitas imagens ao mesmo tempo para não ultrapassar a memória RAM disponível). Colocando-se um batch_size pequeno o processamento de treino se torna mais rápido, porém foi necessário acompanhá-lo para se evitar o problema de geração de muita oscilação na acurácia obtida pela rede neural, conforme recomendação encontrada em fóruns sobre a rede Caffe;

ajuste inicial no parâmetros blobs_lr para valores baixos) nas camadas de convolução (camadas que tratam da qualidade das imagens) para que elas ficassem um pouco “congeladas” e propiciassem então uma otimização rápida

das últimas camadas de classificação conforme recomendação encontrada em fóruns sobre a rede Caffe;

ajustes nas camadas de classificação (INNER- PRODUCT) para que elas tivessem melhores taxas de aprendizagem e fornecessem como saída as 6 expressões faciais que a base de imagens continha.

Durante os processamentos uma série de ajustes foram feitos na rede através de seus arquivos de configuração, para melhorar a acurácia encontrada.

No arquivo de configuração do processamento da rede Solver.Prototxt“original, foram feitos ajustes nos seguintes parâmetros:

test_iter: passou de 1 para 55 para que se pudesse aumentar a taxa de acurácia da rede, através do aumento do número de imagens do arquivo de teste;

base_lr: passou de 0.0001 para 0.001, o que significou uma taxa de aprendizagem maior. Com o objetivo de se chegar a uma taxa de acurácia mais cedo;

ir_policy: passou de “inv", , gamma: 0.001 e power: 0.75, para uma politica “fixed”, onde a taxa de aprendizagem se mantem até o fim, também para se chegar a uma taxa de acurácia mais rapidamente.

No arquivo de configuração da arquitetura da rede neural foram promovidos os seguintes ajustes:

 foram eliminadas as camadas de Dropout porque percebeu-se que tal tipo de camada é útil para grandes redes neurais com muitos dados de entrada, o que não era o perfil da entrada que estava sendo testada. Dropout é uma técnica aplicada para solucionar um problema no processamento das redes neurais denominado de overfitting, que é uma situação em que, em um treino, a taxa de erro é pequena, mas quando se usa o conjunto de teste a taxa de erro é alta. Isso acontece quando a rede não consegue uma boa generalização (SRIVASTAVA et al., 2014);

 em um determinado momento do treino em que estava ocorrendo constantes problemas do tipo out of memory, optou-se por eliminar uma camada totalmente conectada do tipo INNER- PRODUCT, o que parece contribuiu para solucionar o problema, sem prejuízo para os resultados do treinamento.