[PYTHON] Installieren Sie Caffe unter OSX 10.10 und klassifizieren Sie Bilder nach Referenzmodell

** Informationen vom 22. April 2015 ** ** caffe wird regelmäßig aktualisiert, daher können wir nicht garantieren, dass es jetzt funktioniert **

Bis zur Bildidentifikation mit dem Referenzmodell bvlc_reference_caffenet.caffemodel und classify.py.

Was ist Kaffee?

Deep Learning Framework Ein sehr schneller, aktiver und beliebter Rahmen Einzelheiten erfahren Sie beim Beamten http://caffe.berkeleyvision.org/

Für diejenigen, die ein wenig Leistung sehen wollen Caffe Demos Wenn Sie die URL des Bildes einfügen, in das Sie klassifizieren möchten Die Bildklassifizierung erfolgt mit dem offiziellen Referenzmodell

Installation unter MacOSX 10.10.3 (Yosemite)

Ich denke, die folgenden Artikel werden auch hilfreich sein Installieren Sie Caffe unter OS X 10.10 (Yosemite) (libstdc ++ - Problemlösung)

Informationen zur Installationsumgebung

・ IMac 27 Zoll, Ende 2013 ・ CPU 3,5 GHz Intel Core i7 16 GB 1600 MHz DDR3 ・ GPU NVIDIA GeForce GTX 775M 2048 MB ・ OS MaxOSX10.10.3 Yosemite

Führen Sie abhängige Bibliotheken ein

Python Da Anaconda offiziell empfohlen wird, verwenden Sie Anaconda-2.1.0 Anaconda ist eine Distribution, die verschiedene Pakete einführt, um eine numerische Berechnungsumgebung in Python zu erstellen. Benutze das

Verwaltet von pyenv Erstellen einer Python-Umgebung auf einem Mac mit pyenv Bitte mit Bezug auf einführen

In diesem Artikel habe ich pyenv in meinem Home-Verzeichnis erstellt, ohne Brew zu verwenden. Die Python-Umgebung wurde in Anaconda geändert Es gibt 2 Serien und 3 Serien, aber 2 Serien sind besser

python


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

Es sollte bereits in anaconda-2.1.0 installiert sein, aber lassen Sie uns das Paket vorerst überprüfen.

python


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

Lassen Sie uns die erforderlichen Pakete unter installieren

CUDA7.0 Einführung von 7.0 oder höher von NVIDIA Jetzt ist es offiziell freigegeben, sodass keine Registrierung erforderlich ist Kann mit libc ++ kompiliert werden, wenn es 7.0 oder höher ist NAVIDIA CUDA7 Downloads

Andere Bibliotheken

Mit Homebrew installieren

python


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

Boost Boost-Install Python

Es gab Informationen, dass es nicht funktionieren würde, wenn es nicht in Chimata Version 1.55 wäre. Es hat mit boost1.57 und boost-python1.57 funktioniert, also ist es so wie es ist

python


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

Installieren Sie protobuf

Denken Sie daran, die Option --with-python zu verwenden Wenn Sie es nicht anhängen, werden Sie beim Erstellen wütend auf PROTOC.

python


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

Installieren Sie openBLAS

python


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

Installation von HDF5

** Wahrscheinlich mit dem Update verbessert. Wenn Sie also problemlos testen können, müssen Sie die Formel nicht ändern **

Bei einem Lauftest libhdf5_hl.8.dylib Kann angezeigt werden, wenn es nicht gefunden wird (Stand 22. April 2015)

Anscheinend in hdf5-1.8.14 libhdf5_hl.9.dylib Ich habe dort die Homebrew-Formel geändert, damit Führen Sie hdf5-1.8.13 ein

python


brew edit hdf5

URL und sha1 ändern

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

Die Installation der abhängigen Bibliotheken ist vorerst abgeschlossen.

Ändern Sie makefile und makefile.config

Installieren Sie Caffe unter OS X 10.10 (Yosemite) (libstdc ++ - Problemlösung) Bitte beachten Sie auch hier

Makefile ändern

Lassen Sie uns das Makefile ändern

python



#stdlib=libstdc++Zu-stdlib=libc++ändern
CXXFLAGS += -stdlib=libc++
LINKFLAGS += -stdlib=libc++
			
#BLAS_Übergeben Sie auch INCLUDE (es gibt zwei Zeilen, also lassen Sie uns beide übergeben)
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/

Ändern Sie Makefile.comfig

python


#Ändern Sie die Kompilierung in "Klirren"
# 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++

#Kommentiere aus, weil es 7 oder mehr ist
# 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

#Rund um Anakonda
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
#Es ist kompliziert, also ANA CONDA_Verwenden Sie HOME nicht, gehen Sie zu ↓
 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

Setzen Sie es durch den Python-Pfad
# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /Users/name/.pyenv/versions/anaconda-2.1.0/lib

Übergeben Sie den lib-Pfad
# 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

Bauen

Im ersten Ordner von caffe

python


make all -j8
make test -j8

-j8 ist eine Option zum Parallelisieren der Kompilierung. Die Anzahl ist die Anzahl der Parallelen. Ändern Sie sie also entsprechend der Umgebung. Ich denke, es wird lange dauern, bis sie als einzelne erstellt wird.

Mach einen Test

python


make runtest

Nach verschiedenen Testergebnissen werden für eine Weile ausgegeben

python


YOU HAVE 2 DISABLED TESTS

Wird angezeigt, ist es okay

Bauen Sie, um Caffe mit Python zu verwenden

Im ersten Ordner von caffe

python


make pycaffe

Schlagen! Vergessen Sie nicht, es diesmal über Python auszuführen!

Fügen Sie den Pfad in .bash_profile ein

python


PYTHONPATH=/Users/name/caffe/Durch Python

Wenn beim Erstellen der folgende Fehler angezeigt wird

python


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

Fügen Sie den folgenden Pfad zu .bash_profile hinzu

python


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

Importieren Sie Kaffee mit Python

Protoc ist erforderlich, installieren Sie es also in Python mit pip

pip install protobuf

Starten Sie Python im interaktiven Modus

python


>>> import caffe

Wenn Sie damit bestehen, ist es in Ordnung In dieser Umgebung

python


caffe Fatal Python error: PyThreadState_Get: no current thread

Und Python wurde gewaltsam beendet, also habe ich den folgenden Pfad mit .bash_profile übergeben

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

Führen Sie eine Bildklassifizierung mit einem Referenzmodell durch

Einfache Bildklassifizierung mit Caffe Es gibt einen Artikel, der sagt, aber die Version hat sich geändert und es ist nicht einfach. Dieses Mal gehen wir zum ersten Teil dieser Seite.

Referenzmodell herunterladen

python


caffe/models/bvlc_reference_caffenet/readme.md

Demnach scheint es unter der folgenden URL zu existieren http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel Herunterladen von

python


caffe/models/bvlc_reference_caffenet/

Speichern Sie es unten

Laden Sie verwandte Dateien herunter

caffe/data/ilsvrc12/get_ilsvrc_aux.sh Führen Sie das Skript aus, Holen Sie sich die zugehörigen Daten des Modells.

Bild der Objekterkennung

Als Beispiel Serengeti_Elefantenbulle.jpg Lassen Sie uns die Bilder dieses afrikanischen Elefanten klassifizieren.

python


caffe/python/Elefante.jpg

Speichern Sie es als.

Bildklassifizierung mit classify.py

python


caffe/python/

Drücken Sie den folgenden Befehl mit, um zu klassifizieren

python


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

Es ist in Ordnung, wenn Sie es hier löschen können Abhängig von der 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.

Fehler kann zurückkommen.

Es scheint, dass die Eingabe 'caffe / imagenet / ilsvrc_2012_mean.npy' nicht gut verarbeitet werden kann. Die Ursache wird von classify.py verwendet

python


caffe/python/caffe/io.py

Zeilen 253-254

python


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

Es scheint in zu sein. Anscheinend funktioniert der neu erstellte Teil nicht gut, also werde ich ihn im alten Caffe-Stil umschreiben.

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.')

Das gleiche Problem wird in der folgenden URL angesprochen http://stackoverflow.com/questions/28692209/using-gpu-despite-setting-cpu-only-yielding-unexpected-keyword-argument

Verwenden Sie nach der Änderung erneut classify.py

Ausführungsergebnis

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

Ist in Ordnung. Das Bestimmungsergebnis wird in result.pny gespeichert.

Über den Inhalt von result.npy Einfache Bildklassifizierung mit Caffe Veröffentlicht in

python


show_result.py

Sie können das Ergebnis numerisch anzeigen, indem Sie verwenden.

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% Chance auf afrikanischen Elefanten Große Kreatur mit Reißzähnen bei 14% 3% sind indische Elefanten Wurde beurteilt

Recommended Posts

Installieren Sie Caffe unter OSX 10.10 und klassifizieren Sie Bilder nach Referenzmodell
Installieren Sie Caffe auf dem Mac
Installieren Sie pyenv unter OSX
Maschinelles Lernen mit Bildern der Kategorie Caffe -1 unter Verwendung eines Referenzmodells
Installieren Sie openssl-1.0.2l unter OSX El Capitan und aktualisieren Sie Python _ssl.so
Installieren Sie das Kissen unter Mac OSX 10.9
Installieren Sie Caffe unter Ubuntu 14.04 (GPU)
Installieren Sie Ubuntu 18.04 auf dem MacBook Pro Touchbar-Modell und stellen Sie eine Verbindung zu WIFI her
Installieren Sie Caffe unter Ubuntu 14.04 (CPU-Modus)
Installieren Sie Dropbox und führen Sie es unter Ubuntu 20.04 aus
Installieren Sie OpenCV und Chainer unter Ubuntu
Installieren Sie CUDA 8.0 und Chainer unter Ubuntu 16.04
Erstellen und installieren Sie OpenCV unter Windows
Installieren Sie Fabric unter Ubuntu und versuchen Sie es
Installieren Sie easy_install und pip unter Windows
Installieren Sie wsl2 und Master Linux unter Windows
Installieren und starten Sie k3s unter Manjaro Linux
Installieren und konfigurieren Sie den TigerVNC-Server unter Linux
Installieren Sie Caffe mit 3D-CNN auf einem sauberen Ubuntu 14.04
Installieren Sie Puppet Master und Client unter Ubuntu 16.04
Installieren Sie pyenv und Python 3.6.8 unter Ubuntu 18.04 LTS
Installieren Sie pyenv und rbenv systemweit unter CentOS