Caffe 2とDetectronのインストールノートとMask-CNNのテスト

7170 ワード

このノートでは主に個人用インストールcaffe 2とDetectronで発生したインストールの問題を記録し、インストールが完了した後にFAIR公式のMask-CNNをテストした.
主な内容:
        1 caffe 2のインストールとテスト;
        ② Detectronのインストールとテスト;
        ③ Mask-CNNモデルのダウンロードとテストコマンド;
テストプラットフォームの構成の概要:
        ①マザーボードプラットフォーム:x-99
        ② CPU:i7-5820k
        ③GPU:2ブロック(1080 ti,TITAN Xp)
        ④システム:ubuntu 16.04.4 LTS
        ⑤ CUDA:CUDA-8.0,cudnn-7.1.2
一、caffe 2のインストール実践とテスト
      まずcaffe 2のインストールを開始します.caffe 2の公式サイトではインストールに関するチュートリアルが提供されています.インストールタイプから主に4つのタイプに分けられています.1 Pre-Build Binaries、②Build From Source(GitHubからclone、cmake)、③Docker Images、④Cloud;後者の2つはプラットフォーム制限が検討されていないため,主に前の2つの方式を試み,最後に実際の実装では2つ目の実装方式を用いた.
       注釈:なぜ①の方法を使わないのですか.  第1種のインストール方式(conda install xxx)は操作の難易度から言えば確かに比較的に簡便であるが、その後のインストール整合性テストで(caffe 2インストール成功テストとGPU運行サポート)、GPU運行サポートが通過できないこと、すなわちcaffe 2はCPUを用いて計算するしかなく、この計算方式は明らかにプラットフォームの性能を発揮できないことが発見され、具体的な原因はまだ探究されていない.他のインストール方法を反復するしかありません.
       私たちが選んだ2番目のインストール方法は、公式サイトの標準的な方法ではなく、公式サイトの他のインストール例を参考に改善し、caffe 2の実行のために独立した実行環境を構築することを目標としています.これを達成するために、公式サイトのCustom Anaconda Installを参照してください. ,名前から分かるように、独立した運用環境を実現するにはAnacondaをインストールする必要があります.caffe 2のために独立した運行環境を創造することは、1既存のpython構成に影響を与えないことを保証することができる.②pythonのバージョン2&3と対応するライブラリファイルを再結合できます.③インストールに失敗した場合は、構成されている環境およびライブラリファイルをすべて削除し、既存の構成およびライブラリファイルに影響を与えません.
       インストールの手順と注意すべき点について説明します.
       ①まず依存ライブラリEigenのバージョンを検出する必要があり、Eigenのバージョンは少なくとも3.3.0以上必要である.そうでなければcaffe 2  make install  ステージが表示されます
                #error Caffe2 requires Eigen to be at least 3.3.0  
        バージョンを検出するコマンドは
         cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION

       バージョンが満たされていないか、インストールされていない場合は、以下の手順に従ってEigenライブラリを更新またはインストールできますが、ファイルを置換するプロセスだけです.
                1.Eigenライブラリの公式サイトから最新バージョンのライブラリをダウンロードする
                2.ファイルを解凍し、フォルダ名をeigen 3に変更
                3.ターゲットのインストールパスを開きます. cd/usr/include 
                4.古いバージョンを削除: sudo rm -rf eigen3/  
                5.解凍後に名前を変更したファイルをターゲットインストールパスに移動します. sudo mv path/of/eigen3/usr/include/ 
                6.Eigenバージョンの再検出: cat/usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION
                7.インストールのバージョンが3.3.4の場合は、次のようになります.   
EIGEN_WORLD_VERSION 3
          EIGEN_MAJOR_VERSION 3
          EIGEN_MINOR_VERSION 4          
        新しいバージョンのEigenライブラリが正常にインストールされました.このインストールはstackoverflowのガイドを参照してください.
        ②caffe 2をインストールし、ソースコードのコンパイル、インストール方式を採用する
            1.condaコマンドを使用して、新しい環境を構築します.
conda create -yn caffe2_env python=2.7

            ここでcaffe 2_Envは、独自のネーミング習慣に従って変更できます.独立した実行環境の名前を表し、python=2.7は、デフォルト環境のpythonバージョンにかかわらず、sourceコマンドで実行環境をアクティブにすると、作成時に指定したpythonバージョンが使用されます.新しい実行環境を作成すると同時に、condaのマニュアルを参照して、同期インストールされたライブラリファイルを追加できます.caffe 2のインストール中にpython 2のバージョンを使用しました.これは私のデフォルトのAnaconda 2のバージョンと同じかもしれません.
            2.作成した実行環境のアクティブ化:source activate caffe 2_env
            これまでの2ステップとインストールanaconda 2とanaconda 3の併存は同じステップでしたが、新しい環境ではanacondaのパッケージがなく、自分でインストールする必要があります
            3.依存パッケージのインストール:
            conda install -y \ 
                    future \
                    gflags \
                    leveldb \
                    mkl \
                    mkl-include \
                    numpy \
                    opencv \
                    protobuf \ 
                    six
            また、インストールも必要です
pip install \
    flask \
    graphviz \ 
    hypothesis \ 
    jupyter \
    matplotlib \ 
    pydot \
    pyyaml \
    requests \ 
    scikit-image \
    scipy \
    setuptools \
    tornado 
            4.ローカルへのコードのダウンロード
cd ~ && git clone --recursive https://github.com/pytorch/pytorch.git && cd pytorch
git submodule update --init

            Caffe 2はpytorchのソースコードに統合されており、ダウンロード速度が遅い推奨インストールとproxychainsを使用して端末でダウンロードされています.
            5.pytorchのルートディレクトリにbuildフォルダを作成し、cmakeでコンパイルする             
rm -rf build && mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=~/anaconda2/envs/caffe2_env -DCMAKE_INSTALL_PREFIX=~/anaconda2/envs/caffe2_env -DUSE_NATIVE_ARCH=ON ..
make install

            -DCMAKE_PREFIX_PATH和 -DCMAKE_INSTALL_PREFIX 2つのパラメータは、作成した新しい実行環境のパスである必要があります.
            6.検出caffe 2取付
            実行環境での入力
###Test Install Success
python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

            caffe 2が正常にインストールされたかどうかを検出してから入力できます
###Test GPU Support
python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

            GPUサポートのインストールが完了したことを表す使用可能なGPUの数を返すべきで、私のは2を返します.
            またはipythonまたはpythonコンソールに入力します.
import caffe2.python.core

            GPUサポートのインストールが完了したことを示す戻りデータがありません.
二、Detectron取付
        Detectronのインストールは比較的に簡単で、ダウンロードのソースコードに分けて、コンパイルして、テストします
        ①ソースコードのダウンロード:
# DETECTRON=/path/to/clone/detectron 
git clone https://github.com/facebookresearch/detectron $DETECTRON 

        ②コンパイル:
cd $DETECTRON/lib 
make

        ③試験はunittestを採用している.
python2 $DETECTRON/tests/test_spatial_narrow_as_op.py

        これで十分です.Mask-CNNのテストを行うには、Detectronが自分の検出モデルを訓練する必要がある場合は、このブログを参照してops演算子ライブラリをコンパイルしてください.
三、Mask-CNNテスト
        ①テストMask-CNN同じくダウンロードしたDetectronのソースコードに、Detectronのtools/infer_を使用Simple.pyはMask-CNNのテストを完了し、テストを開始するには2つのテストで使用されるパラメータモデルをダウンロードしたほうがいいですが、ネットワーク速度が十分に速く、回線が十分に良いと思ったら、直接テストしてテストを実行することができます.
        ライン安定のテストコード:
python2 tools/infer_simple.py \
    --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
    --output-dir /tmp/detectron-visualizations \
    --image-ext jpg \
    --wts https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
    demo

        ②ネットワーク回線が悪い場合(ほとんどの場合)は、2つのモデルをダウンロードする必要があります.
https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl
https://s3-us-west-2.amazonaws.com/detectron/ImageNetPretrained/MSRA/R-101.pkl

        1つ目のモデルは訓練されたMask-CNNモデルであり,対応するパラメータ--wts,2つ目のモデルは
/tmp/detectron-download-cache/ImageNetPretrained/MSRA/R-101.pkl

        パスの下.
        独立ダウンロードモデルのテストコードは
python2 tools/infer_simple.py \
    --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
    --output-dir output/detectron-visualizations \
    --image-ext jpg \
    --wts model/MaskRCNN/e2e_mask_rcnn_R-101-FPN_2x_model_final.pkl \
    demo

これで、すべてのコンストラクションが終了します.