caffe 튜토리얼
caffe 시작하기
수색…
비고
Caffe는 Convolutional Neural Networks (CNN)의 실험과 사용을 용이하게하기 위해 C ++로 작성된 라이브러리입니다. Caffe는 Berkeley Vision and Learning Center (BVLC)에서 개발했습니다.
Caffe는 실제로 "빠른 기능 추출을위한 컨볼 루션 아키텍처"를 나타내는 약어입니다. 이 머리 글자 어는 라이브러리의 중요한 범위를 요약합니다. 도서관 형태의 Caffe는 CNN의 효율적인 교육 및 테스트를 수행하는 데 사용할 수있는 일반적인 프로그래밍 프레임 워크 / 아키텍처를 제공합니다. "효율성"은 Caffe의 주요 특징이며 Caffe의 주요 설계 목표입니다.
Caffe는 BSD 2 조항 라이센스 하에 공개 된 오픈 소스 라이브러리 입니다.
Caffe는 GitHub에서 유지 관리됩니다.
Caffe는 다음과 같은 용도로 사용할 수 있습니다.
- 여러 CNN 아키텍처, 특히 DAG (Directed Acylclic Graph)로 표현할 수있는 모든 아키텍처를 효율적으로 교육하고 테스트합니다.
- 교육 및 테스트를 위해 여러 개의 GPU (최대 4 개)를 활용하십시오. 모든 GPU는 동일한 유형이어야합니다. 그렇지 않으면 성능은 시스템에서 가장 느린 GPU의 한계로 제한됩니다. 예를 들어, TitanX 및 GTX 980의 경우 성능은 후자에 의해 제한됩니다. 여러 아키텍처를 혼합하는 것은 지원되지 않습니다 (예 : Kepler 및 Fermi 3) .
Caffe는 효율적인 객체 지향 프로그래밍 (OOP) 원칙에 따라 작성되었습니다.
caffe에 대한 소개를 시작하는 좋은 출발점은 Caffe이 기본 객체를 통해 어떻게 작동하는지에 대한 조감도를 얻는 것입니다.
버전
| 번역 | 출시일 |
|---|---|
| 1.0 | 2017-04-19 |
설치 및 설정
우분투
아래에는 Ubuntu 14.04 x64 또는 14.10 x64에서 Caffe, pycaffe 및 종속성을 설치하는 방법에 대한 자세한 지침이 나와 있습니다.
다음 스크립트를 실행합니다. 예를 들어 "bash compile_caffe_ubuntu_14.sh"(새 Ubuntu에서는 30 ~ 60 분)입니다.
# This script installs Caffe and pycaffe.
# CPU only, multi-threaded Caffe.
# Usage:
# 0. Set up here how many cores you want to use during the installation:
# By default Caffe will use all these cores.
NUMBER_OF_CORES=4
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev
sudo apt-get install -y libopencv-dev libhdf5-serial-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y python-dev
sudo apt-get install -y python-pip git
# For Ubuntu 14.04
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
# Install LMDB
git clone https://github.com/LMDB/lmdb.git
cd lmdb/libraries/liblmdb
sudo make
sudo make install
# More pre-requisites
sudo apt-get install -y cmake unzip doxygen
sudo apt-get install -y protobuf-compiler
sudo apt-get install -y libffi-dev python-pip python-dev build-essential
sudo pip install lmdb
sudo pip install numpy
sudo apt-get install -y python-numpy
sudo apt-get install -y gfortran # required by scipy
sudo pip install scipy # required by scikit-image
sudo apt-get install -y python-scipy # in case pip failed
sudo apt-get install -y python-nose
sudo pip install scikit-image # to fix https://github.com/BVLC/caffe/issues/50
# Get caffe (http://caffe.berkeleyvision.org/installation.html#compilation)
cd
mkdir caffe
cd caffe
wget https://github.com/BVLC/caffe/archive/master.zip
unzip -o master.zip
cd caffe-master
# Prepare Python binding (pycaffe)
cd python
for req in $(cat requirements.txt); do sudo pip install $req; done
# to be able to call "import caffe" from Python after reboot:
echo "export PYTHONPATH=$(pwd):$PYTHONPATH " >> ~/.bash_profile
source ~/.bash_profile # Update shell
cd ..
# Compile caffe and pycaffe
cp Makefile.config.example Makefile.config
sed -i '8s/.*/CPU_ONLY := 1/' Makefile.config # Line 8: CPU only
sudo apt-get install -y libopenblas-dev
sed -i '33s/.*/BLAS := open/' Makefile.config # Line 33: to use OpenBLAS
# Note that if one day the Makefile.config changes and these line numbers may change
echo "export OPENBLAS_NUM_THREADS=($NUMBER_OF_CORES)" >> ~/.bash_profile
mkdir build
cd build
cmake ..
cd ..
make all -j$NUMBER_OF_CORES # 4 is the number of parallel threads for compilation: typically equal to number of physical cores
make pycaffe -j$NUMBER_OF_CORES
make test
make runtest
#make matcaffe
make distribute
# Afew few more dependencies for pycaffe
sudo pip install pydot
sudo apt-get install -y graphviz
sudo pip install scikit-learn
결국 "source ~ / .bash_profile"을 수동으로 실행하거나 새로운 쉘을 시작하여 'python import caffe'를 수행 할 수 있어야합니다.
Caffe로 멀티 쓰레딩 가능
Caffe는 여러 개의 코어에서 실행될 수 있습니다. 한 가지 방법은 Caffe가 기본 ATLAS 대신 OpenBLAS를 사용하여 멀티 스레딩을 활성화하는 것입니다. 이렇게하려면 다음 세 단계를 수행하면됩니다.
-
sudo apt-get install -y libopenblas-dev - Caffe를 컴파일하기 전에
Makefile.config편집하고BLAS := atlas를BLAS := open로BLAS := open - Caffe 컴파일 후에
export OPENBLAS_NUM_THREADS=4하면 Caffe가 4 개의 코어를 사용하게됩니다.
Caffe의 정준화 손실 (체중 감량)
해결사 파일에서 weight_decay 및 regularization_type 옵션을 사용하여 전역 정규화 손실을 설정할 수 있습니다.
많은 경우 우리는 서로 다른 층에 대해 서로 다른 무게 감쇠율을 원합니다. 이것은 네트워크 정의 파일의 각 레이어에 대한 decay_mult 옵션을 설정하여 수행 할 수 있습니다. decay_mult 는 전체 체중 decay_mult 에서 승수이므로 한 레이어에 적용되는 실제 체중 감쇠율은 decay_mult*weight_decay 입니다.
예를 들어, 다음은 솔버 파일의 옵션과 상관없이 무게 감쇄가없는 길쌈 레이어를 정의합니다.
layer {
name: "Convolution1"
type: "Convolution"
bottom: "data"
top: "Convolution1"
param {
decay_mult: 0
}
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "xavier"
}
}
}
자세한 내용은 이 스레드 를 참조하십시오.