[PYTHON] Installez Caffe sur OSX 10.10 et classez les images par modèle de référence

** Information au 22 avril 2015 ** ** caffe est mis à jour fréquemment, nous ne pouvons donc pas garantir qu'il fonctionnera maintenant **

La discrimination d'image est effectuée à l'aide du modèle de référence de l'installation. Jusqu'à l'identification d'image à l'aide du modèle de référence bvlc_reference_caffenet.caffemodel et classify.py.

Qu'est-ce que le café

Cadre d'apprentissage profond Un framework très rapide, actif et populaire Voir le fonctionnaire pour plus de détails http://caffe.berkeleyvision.org/

Pour ceux qui veulent voir un peu de performance Caffe Demos Si vous collez l'URL de l'image dans laquelle vous souhaitez classer La classification des images se fait avec le modèle de référence officiel

Installer sur MacOSX 10.10.3 (yosemite)

Je pense que les articles suivants seront également utiles Installer Caffe sur OS X 10.10 (Yosemite) (résolution de problèmes libstdc ++)

À propos de l'environnement d'installation

・ IMac 27 pouces, fin 2013 ・ Processeur Intel Core i7 à 3,5 GHz 16 Go de mémoire DDR3 à 1600 MHz ・ GPU NVIDIA GeForce GTX 775M 2048 Mo ・ OS MaxOSX10.10.3 yosemite

Introduire des bibliothèques dépendantes

Python Puisque Anaconda est officiellement recommandé, utilisez Anaconda-2.1.0 Anaconda est une distribution qui introduit divers packages pour créer un environnement de calcul numérique en python. Utilisez ceci

Géré par pyenv Création d'un environnement Python sur un Mac à l'aide de pyenv Veuillez introduire en référence à

Dans cet article, j'ai créé pyenv dans mon répertoire personnel sans utiliser brew. Changement de l'environnement python en Anaconda Il y a 2 séries et 3 séries, mais 2 séries c'est mieux

python


pyenv install anaconda-2.1.0
pyenv global anaconda-2.1.0
pyenv local anaconda-2.1.0

Il devrait déjà avoir été installé dans anaconda-2.1.0, mais vérifions le paquet pour le moment.

python


pip install -r caffe/python/python/requirements.txt

Installons les packages requis sur

CUDA7.0 Introduit 7.0 ou supérieur de NVIDIA Maintenant, il est officiellement publié, donc aucune inscription requise Peut être compilé avec libc ++ s'il est 7.0 ou supérieur NAVIDIA CUDA7 Downloads

Autres bibliothèques

Installer avec Homebrew

python


brew install --fresh -vd snappy leveldb gflags glog szip lmdb

booster boost-installer python

Il y avait des informations selon lesquelles cela ne fonctionnerait que si c'était la version 1.55 de Chimata. Cela a fonctionné avec boost1.57 et boost-python1.57, donc c'est comme ça

python


brew install --build-from-source --fresh -vd boost boost-python

Installer protobuf

N'oubliez pas l'option --with-python Si vous ne l'attachez pas, vous vous fâcherez contre PROTOC au moment de la construction.

python


brew install --build-from-source --with-python --fresh -vd protobuf

Installez openBLAS

python


brew tap homebrew/science
brew install homebrew/science/openblas

installation de hdf5

** Probablement amélioré avec la mise à jour, donc si vous pouvez exécuter le test sans aucun problème, vous n'avez pas besoin de changer la formule **

Lors d'un test d'exécution libhdf5_hl.8.dylib Peut être affiché s'il est introuvable (à compter du 22 avril 2015)

Apparemment dans hdf5-1.8.14 libhdf5_hl.9.dylib J'ai changé la formule Homebrew pour que Présentez hdf5-1.8.13

python


brew edit hdf5

Changer l'URL et sha1

python


class Hdf5 < Formula
  homepage "http://www.hdfgroup.org/HDF5"
 --> url "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.13/src/hdf5-1.8.13.tar.bz2"
 --> sha1 "712955025f03db808f000d8f4976b8df0c0d37b5"

python


brew install --build-from-source --fresh -vd hdf5

Pour le moment, l'installation des bibliothèques dépendantes est terminée.

Modifier makefile et makefile.config

Installer Caffe sur OS X 10.10 (Yosemite) (résolution de problèmes libstdc ++) Veuillez également vous référer ici

Modifier Makefile

Modifions le Makefile

python



#stdlib=libstdc++À-stdlib=libc++changer en
CXXFLAGS += -stdlib=libc++
LINKFLAGS += -stdlib=libc++
			
#BLAS_Passez également INCLUDE (il y a deux lignes, passons donc les deux)
BLAS_INCLUDE ?= /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers/

Modifier Makefile.comfig

python


#Changer la compilation en clang
# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
CUSTOM_CXX := /usr/bin/clang++

#Commentez parce que c'est 7 ou plus
# For CUDA < 6.0, comment the *_50 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
		-gencode arch=compute_20,code=sm_21 \
		-gencode arch=compute_30,code=sm_30 \
		-gencode arch=compute_35,code=sm_35 \
#-gencode arch=compute_50,code=sm_50 \
#-gencode arch=compute_50,code=compute_50

#Autour d'Anakonda
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
#ANACONDA parce que c'est compliqué_N'utilisez pas HOME, allez à ↓
 PYTHON_INCLUDE := /Users/name/.pyenv/versions/anaconda-2.1.0/include /Users/name/.pyenv/versions/anaconda-2.1.0/include/python2.7 /Users/name/.pyenv/versions/anaconda-2.1.0/lib/python2.7/site-packages/numpy/core/include

# open for OpenBlas
BLAS := open

 BLAS_INCLUDE := /usr/local/Cellar/openblas/0.2.14/include
 BLAS_LIB := /usr/local/Cellar/openblas/0.2.14/lib

Mettez-le à travers le chemin python
# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /Users/name/.pyenv/versions/anaconda-2.1.0/lib

passer le chemin de la lib
# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /Developer/NVIDIA/CUDA-7.0/lib

Construire

Dans le premier dossier de caffe

python


make all -j8
make test -j8

-j8 est une option pour paralléliser la compilation. Le nombre est le nombre de parallèles, donc changez-le en fonction de votre environnement. Cela prendra beaucoup de temps pour construire en un seul.

Faites un test

python


make runtest

Après plusieurs tests, les résultats sont affichés pendant un certain temps

python


YOU HAVE 2 DISABLED TESTS

Est affiché, c'est bon

Construit pour utiliser Caffe avec python

Dans le premier dossier de caffe

python


make pycaffe

Frappé! N'oubliez pas de l'exécuter via python cette fois!

Mettez le chemin dans .bash_profile

python


PYTHONPATH=/Users/name/caffe/À travers python

Si vous obtenez l'erreur suivante lors de la construction

python


python/caffe/_caffe.cpp:1:10: fatal error: 'Python.h' file not found
#include <Python.h>  // NOLINT(build/include_alpha)

Ajoutez le chemin suivant à .bash_profile

python


CPLUS_INCLUDE_PATH=/Users/name/.pyenv/versions/anaconda-2.1.0/include/python2.7

Importer du café avec python

Le protocole est requis, alors installez-le en python avec pip

pip install protobuf

Lancez python en mode interactif

python


>>> import caffe

Si tu passes avec ça, c'est ok Dans cet environnement

python


caffe Fatal Python error: PyThreadState_Get: no current thread

Et python a été arrêté de force, j'ai donc passé le chemin suivant avec .bash_profile

python


export DYLD_FALLBACK_LIBRARY_PATH=/Users/name/.pyenv/versions/anaconda-2.1.0/lib:/usr/local/cuda/lib:/usr/local/lib:/usr/local/cuda/lib:/usr/local/lib

Effectuer une classification d'images avec un modèle de référence

Classification facile des images avec Caffe Il y a un article disant, mais la version a changé et ce n'est pas facile. Cette fois, nous allons passer à la première partie de cette page.

Télécharger le modèle de référence

python


caffe/models/bvlc_reference_caffenet/readme.md

Selon lui, il semble exister à l'URL suivante http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel Télécharger à partir de

python


caffe/models/bvlc_reference_caffenet/

Enregistrez-le ci-dessous

Télécharger les fichiers associés

caffe/data/ilsvrc12/get_ilsvrc_aux.sh Exécutez le script, Obtenez les données associées du modèle.

Image de reconnaissance d'objets

Comme échantillon Serengeti_Elefantenbulle.jpg Classifions les images de cet éléphant d'Afrique.

python


caffe/python/Elefante.jpg

Enregistrez-le sous.

Classification des images à l'aide de classify.py

python


caffe/python/

Appuyez sur la commande suivante avec pour classer

python


python classify.py --raw_scale 255 ./Elefante.jpg  ./result.npy

Ce n'est pas grave si vous pouvez l'effacer ici Selon la version

python


  File "classify.py", line 137, in <module>

    main(sys.argv)

  File "classify.py", line 109, in main

    channel_swap=channel_swap)

  File "/Users/name/caffe/python/caffe/classifier.py", line 34, in __init__

    self.transformer.set_mean(in_, mean)

  File "/Users/name/caffe/python/caffe/io.py", line 255, in set_mean

    raise ValueError('Mean shape incompatible with input shape.')

ValueError: Mean shape incompatible with input shape.

Une erreur peut revenir.

Il semble que l'entrée "café / imagenet / ilsvrc_2012_mean.npy" ne puisse pas être gérée correctement. La cause est utilisée par classify.py

python


caffe/python/caffe/io.py

Lignes 253 à 254

python


if ms != self.inputs[in_][1:]:
	raise ValueError('Mean shape incompatible with input shape.')

Cela semble être dans. Apparemment, la partie nouvellement créée ne fonctionne pas bien, je vais donc la réécrire dans l'ancien style Caffe.

python


if ms != self.inputs[in_][1:]:
	print(self.inputs[in_])
	in_shape = self.inputs[in_][1:]
	m_min, m_max = mean.min(), mean.max()
	normal_mean = (mean - m_min) / (m_max - m_min)
	mean = resize_image(normal_mean.transpose((1,2,0)),in_shape[1:]).transpose((2,0,1)) * (m_max - m_min) + m_min
	#raise ValueError('Mean shape incompatible with input shape.')

Le même problème est soulevé dans l'URL suivante http://stackoverflow.com/questions/28692209/using-gpu-despite-setting-cpu-only-yielding-unexpected-keyword-argument

Après le changement, utilisez à nouveau classify.py

Résultat d'exécution

Loading file: ./Elefante.jpg
Classifying 1 inputs.
Done in 0.90 s.
Saving results into ./result.npy

Est ok. Le résultat de la détermination est enregistré dans result.pny.

À propos du contenu de result.npy Classification facile des images avec Caffe Publié dans

python


show_result.py

Vous pouvez voir le résultat numériquement en utilisant.

python


$ python show_result.sh ../data/ilsvrc12/synset_words.txt result.npy 
1 | n02504458 African elephant, Loxodonta africana | 81.2%
2 | n01871265 tusker | 14.9%
3 | n02504013 Indian elephant, Elephas maximus |  3.3%

81% de chance d'éléphant d'Afrique Grande créature avec des crocs à 14% 3% sont des éléphants indiens A été jugé

Recommended Posts

Installez Caffe sur OSX 10.10 et classez les images par modèle de référence
Installez Caffe sur Mac
Installez pyenv sur OSX
Apprentissage automatique avec des images de catégorie Caffe -1 à l'aide du modèle de référence
Installez openssl-1.0.2l sur OSX El Capitan et mettez à jour Python _ssl.so
Installer l'oreiller sur Mac OSX 10.9
Installez Caffe sur Ubuntu 14.04 (GPU)
Installez Ubuntu 18.04 sur le modèle de la barre tactile MacBook Pro et connectez-vous au WIFI
Installez Caffe sur Ubuntu 14.04 (mode CPU)
Installez et exécutez Dropbox sur Ubuntu 20.04
Installez OpenCV et Chainer sur Ubuntu
Installez CUDA 8.0 et Chainer sur Ubuntu 16.04
Construisez et installez OpenCV sur Windows
Installez le fabric sur Ubuntu et essayez
Installez easy_install et pip sur Windows
Installez wsl2 et master linux sous Windows
Installer et lancer k3s sur Manjaro Linux
Installer et configurer le serveur TigerVNC sous Linux
Installez Caffe exécutant 3D-CNN sur un Ubuntu 14.04 propre
Installez Puppet Master and Client sur Ubuntu 16.04
Installez pyenv et Python 3.6.8 sur Ubuntu 18.04 LTS
Installez pyenv et rbenv à l'échelle du système sur CentOS