Responder a: Uso de GPU em CNNs

#29380
Léo Silva
Moderador

    Mateus,

    Inicialmente vamos comentar um pouco sobre GPUs.

    GPUs (Graphics Processing Units) são muito utilizadas em deep learning devido a arquitetura de processamento paralelo e a NVIDIA é o líder de mercado em hardware de deep learning.

    Veja em https://developer.nvidia.com/cuda-gpus

    Você precisa saber se seu equipamento já tem uma GPU. No caso de Linux tem um link que explica bem todos os detalhes: https://www.binarytides.com/linux-get-gpu-information/

    Os drivers da NVIDIA devem estar instalados em seu sistema para utilizar as GPUs, portanto existe a necessidade de fazer algumas configurações e instalar alguns drives para fazer funcionar uma GPU em sua máquina.

    Não tenho uma GPU instalada na minha máquina e pode ser um custo relativamente alto, porém uma outra opção é utilizar uma máquina virtual na nuvem, por exemplo, a AWS  da Amazon, Microsoft Azure e Google Colab.

    Agora vamos a sua pergunta propriamente dita, caso a sua máquina não tenha uma GPU ou não tenha os drives corretamente instalados, o processamento foi feito usando uma CPU mesmo.

    No caso deste curso, há um detector facial do Dlib treinado pelo HOG e é feita uma comparação com um outro detector do Dlib treinado em uma CNN, portanto não estamos treinando uma CNN neste curso, apenas utilizando um modelo de detecção facial já treinado.

    Realmente não sei se o autor do Dlib, o Davis King, utilizou uma GPU para treinar o detector CNN dele, mas em principio, acredito que sim.

    Não encontrei nem na documentação do Dlib nem na internet, como o autor efetivamente montou este modelo utilizando CNN. Na minha opinião, o autor quis mostrar que pode ser utilizado tanto um detector do Dlib quanto um de CNN, sendo que o modelo CNN é mais preciso que o HOG do Dlib, porém usa muito mais poder computacional para executar.

    Sugiro inicialmente você utilizar o Hog do Dlib tanto para detecção quanto para detecção de pontos de referência, pois é bem rápido e dá bons resultados.

    Não há como criar um modelo CNN a partir do Dlib, mas há outras ferramentas excelentes para fazer tal tarefa. Para se trabalhar com imagens, uma das ferramentas mais utilizadas é o Tensorflow (a IAExpert tem cursos excelentes sobre este tema) ou mesmo utilizando Keras tendo o Tensorflow como backend.  O PyTorch também é uma ferramenta excelente.

    O python 2.7 ou 3.5 e adiante é instalado normalmente sem precisar mencionar a GPU.

    Diferentemente, no caso da biblioteca tensorflow do Google, muito utilizada na área de deep learning, deve ser instalada com ou sem o suporte do GPU. Quando você executa uma aplicação com tensorflow, você é informado se está usando GPU ou não.

    Veja o link abaixo, que é uma resposta do autor do Dlib, o Davis King sobre o uso de GPUs no Dlib:

    https://github.com/davisking/dlib/issues/522

    Tanto no caso do Tensorflow quanto no PyTorch você consegue facilmente habilitar o uso de GPUs.

    Espero que tenha ajudado.