수색…


비고

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를 사용하여 멀티 스레딩을 활성화하는 것입니다. 이렇게하려면 다음 세 단계를 수행하면됩니다.

  1. sudo apt-get install -y libopenblas-dev
  2. Caffe를 컴파일하기 전에 Makefile.config 편집하고 BLAS := atlasBLAS := openBLAS := open
  3. Caffe 컴파일 후에 export OPENBLAS_NUM_THREADS=4 하면 Caffe가 4 개의 코어를 사용하게됩니다.

Caffe의 정준화 손실 (체중 감량)

해결사 파일에서 weight_decayregularization_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"
    }
  }
}

자세한 내용은 이 스레드 를 참조하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow