Ich wollte caffe in einer Anaconda-Umgebung ausführen, aber es hat nicht funktioniert, selbst wenn ich Makefile.config geändert habe. Notieren Sie sich den Erstellungsvorgang in einer Umgebung, in der keine Versionsverwaltung verwendet wird. Wenn Sie einen Fehler machen, würde ich mich freuen, wenn Sie mich kontaktieren könnten.
Allgemeine Abhängigkeiten
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
14.04
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
Klicken Sie hier für andere Versionen http://caffe.berkeleyvision.org/install_apt.html
Klicken Sie hier für ein anderes Betriebssystem http://caffe.berkeleyvision.org/installation.html
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config
Makefile.config
# USE_CUDNN := 1
↓
USE_CUDNN := 1
#cuda an Ihre Umgebung angepasst
CUDA_DIR := /usr/local/cuda-7.0
#Wenn ich es mit Anaconda machen wollte, sollte ich das ändern können, aber es hat in meiner Umgebung nicht funktioniert.
ANACONDA_HOME := $(HOME)/anaconda
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
PYTHON_LIB := $(ANACONDA_HOME)/lib
cmake .
make -j4 all
make install
mach sauber und mach -j4 alles sauber machen: Löscht die beim Erstellen einer Anwendung erstellten Zwischendateien und die resultierende Anwendung selbst.
Python-Zusammenstellung usw.
sudo apt-get install python-dev python-pip python-numpy python-skimage gfortran
sudo pip install -r ~/caffe/python/requirements.txt
make pycaffe
Durchlaufen
export PYTHONPATH=/home/ubuntu/caffe/build/caffe/python/:$PYTHONPATH
OK, wenn Sie importieren können
python
>>>import caffe
Stellen Sie den Pfad ein
.badhrc
export CAFFE_HOME=Wo Sie caffe installiert haben
export PATH=${CAFFE_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${CAFFE_HOME}/lib:${LD_LIBRARY_PATH}
export PYTHONPATH=${CAFFE_HOME}/python:${PYTHONPATH}
※Hinweis Trotzdem funktioniert classify.py möglicherweise nicht. http://qiita.com/Bonnnou_108/items/41e6dadeff1310b4eb5d
Wenn Sie dem Yahoo-Artikel folgen, sollte es funktionieren, aber Sie erhalten möglicherweise eine Fehlermeldung. https://techblog.yahoo.co.jp/programming/caffe-intro/
python classify.py --raw_scale 255 ../101_ObjectCategories/airplanes/image_0001.jpg ../result.npy
Details des Fehlers
ValueError: Mean shape incompatible with input shape
Hier bearbeiten caffe/python/caffe/io.py
if ms != self.inputs[in_][1:]:
raise ValueError('Mean shape incompatible with input shape.')
↓
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.')
Caffe Model Zoo
http://www.ics.uci.edu/~xzhu/face/ http://www.openu.ac.il/home/hassner/Adience/data.html
age_net.caffemodel ... Altersklassifizierungsmodell deploy_age.prototxt ... Verknüpfung von Altersklassifizierungsnummern und -bezeichnungen mean.binaryproto ... für durchschnittliches Bild gender_net.caffemodel ... Modell der Geschlechtsklassifizierung deploy_gender.prototxt ... Geschlechtsklassifizierungsnummer und Labelzuordnung
wget http://www.openu.ac.il/home/hassner/projects/cnn_agegender/cnn_age_gender_models_and_data.0.0.1.zip
unzip cnn_age_gender_models_and_data.0.0.1.zip
import
import os
import numpy as np
import matplotlib.pyplot as plt
caffe_root = './caffe-master/'
import sys
sys.path.insert(0, caffe_root + 'python')
import caffe
plt.rcParams['figure.figsize'] = (10, 10)
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'
mean_filename='./mean.binaryproto'
proto_data = open(mean_filename, "rb").read()
a = caffe.io.caffe_pb2.BlobProto.FromString(proto_data)
mean = caffe.io.blobproto_to_array(a)[0]
age_net_pretrained='./age_net.caffemodel'
age_net_model_file='./deploy_age.prototxt'
age_net = caffe.Classifier(age_net_model_file, age_net_pretrained,
mean=mean,
channel_swap=(2,1,0),
raw_scale=255,
image_dims=(256, 256))
gender_net_pretrained='./gender_net.caffemodel'
gender_net_model_file='./deploy_gender.prototxt'
gender_net = caffe.Classifier(gender_net_model_file, gender_net_pretrained,
mean=mean,
channel_swap=(2,1,0),
raw_scale=255,
image_dims=(256, 256))
Labels
age_list=['(0, 2)','(4, 6)','(8, 12)','(15, 20)','(25, 32)','(38, 43)','(48, 53)','(60, 100)']
gender_list=['Male','Female']
example_image = './example_image.jpg'
input_image = caffe.io.load_image(example_image)
_ = plt.imshow(input_image)
prediction = age_net.predict([input_image])
print 'predicted age:', age_list[prediction[0].argmax()]
Ausgabeergebnis: vorhergesagtes Alter: (0, 2)
prediction = gender_net.predict([input_image])
print 'predicted gender:', gender_list[prediction[0].argmax()]
Ausgabeergebnis: vorhergesagtes Geschlecht: weiblich
In CNN wird das Gewicht als Filter bezeichnet.
def showimage(im):
if im.ndim == 3:
im = im[:, :, ::-1]
plt.set_cmap('jet')
plt.imshow(im)
def vis_square(data, padsize=1, padval=0):
data -= data.min()
data /= data.max()
#Erzwingen Sie, dass die Anzahl der Filter quadratisch ist
n = int(np.ceil(np.sqrt(data.shape[0])))
padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3)
data = np.pad(data, padding, mode='constant', constant_values=(padval, padval))
#Kachelfilter für Bilder
data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))
data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])
showimage(data)
age_net = caffe.Classifier(age_net_model_file, age_net_pretrained,
channel_swap=(2,1,0),
raw_scale=255,
image_dims=(256, 256))
prediction = age_net.predict([input_image])
Funktionen, die mit input oder _ beginnen, werden möglicherweise angezeigt. In Python kann _ verwendet werden, um zu bedeuten, dass es von einer externen Klasse referenziert, aber nicht referenziert werden kann.
_ = plt.imshow(input_image)
filters = age_net.params['conv1'][0].data[:49]
vis_square(filters.transpose(0, 2, 3, 1))
feat = age_net.blobs['conv1'].data[4, :49]
vis_square(feat, padval=1)
cd ~/caffe
scripts/download_model_binary.py models/bvlc_reference_caffenet
python examples/finetune_flickr_style/assemble_data.py --workers=1 --images=2000 --seed 831486
./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
Regression Methods for Localization
Berge, Straßen, Läufer Um das Bild zu verstehen ● Object localization ● Object segmentation ● Human pose estimation Formuliert als DNN-basierte Regression ● Deep Neural Net-based Regression ● Object Mask Regression ● Object Bounding Box Regression ● Human Pose Estimation DNN-based Regression
fine-tuning http://hirotaka-hachiya.hatenablog.com/entry/2015/02/21/072255
https://bfeba431-a-62cb3a1a-s-sites.googlegroups.com/site/deeplearningcvpr2014/RegressionMethodsforLocalization.pdf?attachauth=ANoY7cpwt94hVCZXGTsfVWXtfKcakWqTiHT9TEYM6tLGdUk2jmlmBHiyEaL3qByRJEeBn-2EtPhanI3uoT58LSiRDl_A6JP51_8jm8LqcbyLZYo2bSMJpvbmCXlP4fMiRtJLT7nXmUu0QERcZEnYd_Ly-kka7TKKUEyk4-ez1iXr5ROM-G_2jjLa21y3y1y6s9sQK3Q0KJVvIHAAmzKn7uonJ4N2Q3f3dLVs7QQyw4MgIDd_ZiYcati9Ktkjq51cvzjLOPMfa7d6&attredirects=0
Recommended Posts