InferenCNN: Uma biblioteca para Inferência de Redes Neurais Convolucionais Multiplataforma em OpenCL - ANJOS, Jefferson Ramos Lucas dos (2019)
As Redes Neurais Convolucionais (Convolutional Neural Networks - CNN) têm se mostrado eficazes para problemas de Visão Computacional, como: classificação, detecção e reconhecimento de padrões. Assim, muitas bibliotecas, frameworks e soluções têm sido desenvolvidas para treinar e realizar a inferência dessas redes em dispositivos de computação. A inferência é a fase de uso de uma Rede Neural, em que novos dados são propagados pela rede, já treinada, a fim de se obter uma classificação, detecção ou reconhecimento de algum padrão. Nos últimos anos muitas arquiteturas de CNN’s foram desenvolvidas tendo como objetivo acelerar o treinamento e a inferência da rede neural, suprir a necessidade de problemas mais complexos e dar suporte à dispositivos de computação com limitação de memória e energia, como os dispositivos mobiles. Assim, com essa grande variedade de arquiteturas de CNN’s e dispositivos de computação, os atuais frameworks não dão suporte à alguns tipos de dispositivos ou se limitam à dispositivos de um fabricante específico. Neste trabalho apresentamos a InferenCNN, uma biblioteca multiplataforma capaz de realizar a inferência dos modelos de CNN’s, mapeando kernels OpenCL (Open Computing Language) em dispositivos de computação como CPU’s (Central Processing Unit), GPU’s (Graphics Processing Unit) e FPGA’s (Field Programmable Gate Array). A utilização do framework OpenCL, permite que a biblioteca independa do dispositivo ou fabricante do dispositivo, dando flexibilidade ao executar a inferência das arquiteturas de CNN’s. A InferenCNN apresenta um parser de pesos que permite a execução de arquiteturas de CNN’s que foram treinadas em diferentes frameworks, como Tensorflow, Caffe e Pytorch. Apresenta também um gráfico de fluxo que executa as camadas da CNN de forma modular, deixando espaço para que modificações e otimizações possam ser feitas, e que novas camadas e arquiteturas possam ser implementadas. Os experimentos realizados analisaram a InferenCNN em dispositivos diferentes e compararam as implementações com o framework Tensorflow e aceleradores em FPGA’s. Os resultados se mostraram promissores, apresentando melhoria de desempenho na inferência da arquitetura Inception quando comparada com o Tensorflow e desempenho próximo em outras arquiteturas. Quando comparada com aceleradores em FPGA a InferenCNN se mostrou com resultados inferiores em relação ao desempenho, mas com uma maior flexibilidade em realizar a inferência de várias arquiteturas de CNN.