Resolução de Problemas ao Configurar o Caffe para o Dataset MNIST no Linux

Cnofigurando o Ambiente

Para configurar o ambiente, consulte o tutorial básico disponível na documentação oficial.

Este tutorial está na maioria correto. Uma complementação importante é que após executar:

make all -j4

Vários arquivos *.bin serão gerados no diretório build/bin/, indicando que a compilação foi bem-sucedida.

Problemas com o Script create_mnist.sh

Ao executar o script MNIST, especificamente no passo create_mnist.sh, pode ocorrer o seguinte erro:

./create_mnist.sh: 17: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found

Este erro pode ser resolvido alterando o diretório de trabalho. É importante notar que versões mais recentes do Caffe exigem a execução a partir do diretório raiz do projeto para evitar este problema:

ubuntu@ubuntu-PC:~/work/caffe-master$ cp examples/mnist/create_mnist.sh ./
ubuntu@ubuntu-PC:~/work/caffe-master$ ./create_mnist.sh

A documentação oficial sugere o seguinte procedimento:

cd $CAFFE_ROOT
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh

Recomenda-se seguir a documentação oficial para a configuração completa do ambiente.

Testando com Dados Personalizados

Muitos tutoriais terminam após alcançar uma precisão de 99% com os dados oficiais do MNIST. No entanto, é importante testar com seus próprios dados para validar a implementação.

Existem duas abordagens principais para classificação: usando Python ou C++ para chamar o binário de classiifcação.

Usando Python para Classificação

import os    
import sys    
import numpy as np    
import matplotlib.pyplot as plt    
caffe_root = '/caminho/para/seu/diretorio/caffe/'    
sys.path.insert(0, caffe_root + 'python')    
import caffe    
MODEL_FILE = '/caminho/para/seu/diretorio/caffe/examples/mnist/lenet.prototxt'    
PRETRAINED = '/caminho/para/seu/diretorio/caffe/examples/mnist/lenet_iter_10000.caffemodel'    
IMAGE_FILE = '/caminho/para/sua/imagem/teste.jpg'    
      
input_image = caffe.io.load_image(IMAGE_FILE, color=False)  
net = caffe.Classifier(MODEL_FILE, PRETRAINED)   
      
prediction = net.predict([input_image])   
caffe.set_mode_cpu()  
print 'Classe prevista:', prediction[0].argmax()   

Usando C++ para Classificação

O binário de classificação pode ser chamado diretamente:

./build/examples/cpp_classification/classifier.bin

Este comando exibirá instruções de uso. Uma chamada de exemplo seria:

./build/examples/cpp_classification/classifier.bin \
caminho/para/seu/network.prototxt \
caminho/para/seu/modelo.caffemodel \
caminho/para/seu/mean.binaryproto \
caminho/para/seu/labels.txt \
caminho/para/sua/imagem.png

Se encontrar muitos parâmetros difíceis de gerenciar, considere modificar o arquivo classifeir.cpp e recompilar o binário com suas necessidades específicas.

Problemas com Bibliotecas Compartilhadas

Ao executar o binário de classificação, pode ocorrer o seguinte erro relacionado a bibliotecas compartilhadas:

./build/tools/caffe: error while loading shared libraries: libcaffe.so.1.0.0-rc5: cannot open shared object file: No such file or directory

Uma solução é copiar as bibliotecas (ou links simbólicos) para o diretório de bibliotecas do sistema:

sudo cp distribute/bin/libcaffe.so.1.0.0-rc5 /usr/lib/x86_64-linux-gnu/

Após esta etapa, a execução deve ocorrer normalmente, permitindo que você utilize o modelo treinado para classificar suas próprias imagens.

Tags: caffe deep-learning MNIST Linux computer-vision

Publicado em 6-13 21:57 por Thomas