Mac OS X10.10でcaffeをインストール


Mac OS X10.10でcaffeをインストール
[email protected]
http://blog.csdn.net/surgewong
LinuxでCaffe【1】を学ぶようになってしばらくの間、Caffeの枠組みについて少しずつ認識してきました.Linuxの下でCaffeを学ぶ人が多く、ネット上の参考資料も比較的多いです.インストール構成のチュートリアルは多く、問題が発生した場合は比較的解決しやすいです.先日、ボスがMacノートを持ってきて、MacにCaffeをインストールするように言ってくれました.貧乏キックアスは以前Macノートを遊んだことがなく、Macに対する好奇心に向かって、苦痛なインストールの旅を始めた.
一、Mac下ソフトウェアのインストール方式
Linux下のsudo apt-get install XXXXのソフトウェアインストール方式に慣れており、Mac下brew install XXXXには使いやすい.しかし、Macにはほとんど基礎がなく、formula、frameworkなどの特定の用語を理解するのは難しいです.何度も使うと、徐々に理解し始めます.brew方式のインストールはhomebrew【2】というパッケージ管理ツールによって実現される.brewのインストールをめぐる一般的なコマンドは、次のとおりです.
brew install XXXX-->ソフトウェアパッケージまたは対応するライブラリのインストール
brew uninstall XXXX-->パッケージまたは対応するライブラリのアンインストール
brew update-->Homebrew自身の更新
brew upgrade-->アップグレード可能なすべてのソフトウェアをアップグレード(brew方式でインストール)
brew list-->brewでインストールされているすべてのソフトウェアのリスト
brew doctor-->インストールに成功したかどうかを診断
brew edit XXXX-->XXXX(Formula)対応のソフトウェアプロファイルの編集
brew help-->共通コマンドのリスト
二、Caffeのインストールに必要な依存
公式チュートリアル【3】を参考に、Caffeがインストールする必要がある内容は次のとおりです.
CUDAは6.5バージョンが望ましい
BLASはATLAS,MKL,OpenBLASで提供できる
Opencvバージョンが2.4以上
Boostバージョンは約1.5に等しく、必要に応じてpythonバージョンも提供する必要があります.
     glog, gflags, protobuf, leveldb, snappy, hdf5, lmdb
以下は必須ではありません.
Python Python 2.7 numpyバージョン1.7以上
Matlabはmexコンパイラを提供します
三、CUDA及びBLASの取り付け
   1. CUDAのインストール:Macの下のCUDAのインストールはLinuxよりずっと簡単で、直接【4】をダウンロードして、それから直接ダブルクリックして、ヒントに従って直接インストールすればいいです.その他の関連設定はドキュメント【5】を参考にすることができます.
主にcuda関連のパスを設定する必要があります./etc/profileで次の環境変数を設定できます.
   export PATH=/Developer/NVIDIA/CUDA-6.5/bin:$PATH
   export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-6.5/lib:$DYLD_LIBRARY_PATH
   2. Atlasのインストール:Macシステムの下にあるvecLibフレームワーク(Accelerate Frame)自体がAtlasの実装を統合しており、Caffeをコンパイルする際には対応するヘッダファイルがあるディレクトリを指定するだけでよい.
   3. OpenBlasのインストール:brewを使用してインストールできます.(brewを直接使用すると問題があるかもしれませんが、後で説明します)
brew install homebrew/science/openblas----->直接インストール
brew install--build-from-source homebrew/science/openblas-->ソースコードをコンパイルしてインストール
   4. MKLのインストール:Intel MKLは1つの商業化がCPUに対して最適化する1つのライブラリで、学生の無料版を使うことができて、intelの公式サイト【6】まで1つのアカウントを登録することができて、相応のmacバージョンのMKLをダウンロードします.
四、OpenCV、glog、gflags、protobuf、leveldb、snappy、hdf 5、lmdbのインストール
Mac 10.9からシステムのデフォルトのC/C++コンパイラはgcc/g++ではなくclang/clang++であり、対応するC++標準ライブラリはlibc++(主にC++X 11)である.Caffeの多くの依存ライブラリは主にlibstdc++ライブラリに基づいているため、デフォルトのコンパイルオプションを使用すると簡単に表示されます:undefined symbols for architecture x 86_64のエラー.この問題を解決するには、対応する依存自体がlibstdc++に基づいてインストールをコンパイルすることを保証する必要はありません.
まずbrew方式で上記依存をインストールできますが、ソースコードでインストールするか、コンパイル時にlibstdc++ライブラリでコンパイルするかを選択する必要があります.この方法では、対応するhomebrew formulaを編集できます.前述したopenblasも、この方法でコンパイルインストールを行うことが望ましい.インストールが必要なHomebrew formulaごとに:
    boost snappy leveldb protobuf gflags glog szip lmdb homebrew/science/opencv
brew edit FORMULA(brew edit boostなど)を使用して、対応する環境ENV定義を追加します.
 def install # ADD THE FOLLOWING: ENV.append "CXXFLAGS", "-stdlib=libstdc++" ENV.append "CFLAGS", "-stdlib=libstdc++" ENV.append "LDFLAGS", "-stdlib=libstdc++ -lstdc++" # The following is necessary because libtool likes to strip LDFLAGS: ENV["CXX"] = "/usr/bin/clang++ -stdlib=libstdc++"

各formulaについて順番にアンインストールしてからソースコードで再コンパイルしてインストールします.
for x in snappy leveldb gflags glog szip lmdb homebrew/science/opencv; do brew uninstall $x; brew install --build-from-source --fresh -vd $x; done brew uninstall protobuf; brew install --build-from-source --with-python --fresh -vd protobuf brew install --build-from-source --fresh -vd boost boost-python

注意:上記のコンパイルインストールに成功しても、caffeのコンパイル中にtr 1/trupleヘッダファイルが欠落していることを示す可能性があります.hdf 5依存をインストールする必要があります.上記のようにインストールすればいいです.
五、OpenCVローカルソースコードのコンパイル、およびgflags、glogローカルソースコードのコンパイル
  1. OpenCVのインストール:上記のbrewのインストール方法ではインストールに失敗する可能性があります.筆者はopencvのインストールで多くのトラブルに遭遇した.
a.brew install homebrew/science/opencvを直接使用するとopencvを正常にインストールできますが、このopencvはcudaライブラリについてコンパイルされていません.それ自体はデフォルトのlibc++ライブラリでコンパイルされているため、コンパイルCaffeを使用すると前述のundefined symbols for architecture x 86_が表示されます.64エラー.この方式は望ましくない.
b.筆者はbrew install--build-from-source--fresh-vd homebrew/science/opencvの方式でインストールして、システムは2.4.10.1バージョンをインストールして、このバージョン、cudaと互換性の問題のbugがあって、正常にコンパイルできません.(注:Macに詳しくないので、この問題を修復する方法は試していません)筆者がLinuxで使用したバージョンは2.4.9で、似たようなバグに遭遇したことがあります【7】.従って、この方法の使用を放棄し、2.4.9ソースコードを使用して直接コンパイルする.
c.ソースコードを使用してコンパイルする場合、最大はopencvコンパイル時にlibc++ではなくlibstdc++を選択させる方法です.OpenCVはcmakeによってmakefileを生成するものであり,対応する設定を追加するには対応するcmake構成を変更する必要がある.cmakeの文法にあまり詳しくないので、推測するしかありません.筆者はファイルcmake/openCVDetectCUDA.cmakeの151行目に追加しました
set(CUDA_NVCC_FLAGS  ${CUDA_NVCC_FLAGS}  "-Xcompiler -stdlib=libstdc++; -Xlinker -stdlib=libstdc++")
その後、通常のコンパイル手順にそのまま従えばいいですが、コンパイル時間は長いです.
  2. gflagsのインストール:筆者は4ステップ目のbrew方式でインストールしたが、gflagsがlibstdc++ライブラリを使用してコンパイルに成功しなかった(コンパイルcaffeエラー).同様にgflagsのcmake関連ファイルに対応する構成を追加します.筆者はcmake/CMakeCXInformation.cmakeで209行目に追加
              set(CMAKE_CXX_FLAGS "-stdlib=libstdc++"${CMAKE_CXX_FLAGS})
その後、通常のコンパイル手順に従ってインストールをコンパイルします.
  3. glogのインストール:glogはgflagsに依存するため、glogをインストールする前にgflagsをインストールする必要があります.glogをコンパイルするとき、一部のファイル(*unittest.cc)のコンパイルエラーが発生します.その主な問題は名前空間の問題です(その原因を深く究明していません.ここでは解決策だけを示します).対応するファイルに追加するだけ
                      using namespace gflags;
六、コンパイルCaffe
Caffeをコンパイルする場合は、依存するパスとライブラリ依存を設定し、makeの成功を待つ必要があります.ここまでMacの下でCaffeプログラミングを楽しみましょう!
参考資料:
【1】Caffeホームページ
【2】Homebrewホームページ
【3】Caffeインストール公式サイト
【4】CUDA公式サイト
【5】CUDAオンラインドキュメント
【6】Intel公式サイトMKL
【7】1つのOpenCV 2.4.9 CUDAと互換性のあるBug