FacebookをプレイするMarkrcenn-benchmarkプロジェクト1

7210 ワード

markrcnn-benchmarkはFacebookのオープンソースの基準アルゴリズムプロジェクトであり、検出、分割、人体のキーポイントなどのアルゴリズムが含まれています.
現在、多くのPyTorchフレームに基づく検出、分割されたSOTAアルゴリズムは、このプロジェクトの改善である.例えば、CVPR 2019 Oral Paper、Mask Scroring R-CSN.
工程:github.com/facebook res…
名称:Faster R-CoNN and Mask R-CoNN in PyTorch 1.0
  • どのようにpip環境構成プロジェクトを使用しますか?
  • MacOSのCPU環境設定依存ライブラリの使い方
  • 環境:MacOS+pip+touch+markrch-benchmark
    このシリーズは2つの編を含んでいます.
  • 第一編は環境を構築する;
  • 第二篇トレーニングと検証;
  • 設定
    markrcnn-benchmarkプロジェクトをダウンロードします.
    git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
    
    virtual lenvは仮想環境を作成し、python 3を選択し、同時にアクティブにします.
    virtualenv -p python3 mlp3_venv
    
    Pythoon 3.6.8+を使用しなければならないので、3.7を推奨します.
    あるいは既存の仮想環境を使用します.
    依存パッケージのインストール:
    pip install ninja yacs cython matplotlib tqdm opencv-python
    
    PyTorchをインストールして、直接公式サイトです.
    pip3 install torch torchvision
    
    依存ライブラリ
    markrcnn-benchmarkは2つの依存ライブラリcoppiとappxが必要で、参考は少し違っています.
    インストールパッケージ:pycotools 2.0、既存の仮想環境をアクティブにし、実行する:
    git clone https://github.com/cocodataset/cocoapi.git
    cd cocoapi/PythonAPI
    python setup.py build_ext install
    
    インストールパッケージ:appx 0.1、実行:
    git clone https://github.com/NVIDIA/apex.git
    cd apex
    MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install --cpp_ext
    
    Ubuntuサーバでは、以下のコマンドが使用できます.
    cd apex
    pip install -v --no-cache-dir .
    
    注意:
  • MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++は、Macに特有のコンパイルC++ライブラリを指定します.
  • CPU環境は、--cuda_extを追加しない.
  • インストールパッケージ:markrch-benchmark 0.1、実行
    cd maskrcnn-benchmark
    MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build develop
    
    予測する·.torch/modelsでは、モデルをダウンロードし、約458 M:
    wget https://dl.fbaipublicfiles.com/detectron/37697547/12_2017_baselines/e2e_keypoint_rcnn_R-50-FPN_1x.yaml.08_42_54.kdzV35ao/output/train/keypoints_coco_2014_train%3Akeypoints_coco_2014_valminusminival/generalized_rcnn/model_final.pkl
    
    名前を変更:
    mv model_final.pkl _detectron_37697547_12_2017_baselines_e2e_keypoint_rcnn_R-50-FPN_1x.yaml.08_42_54.kdzV35ao_output_train_keypoints_coco_2014_train%3Akeypoints_coco_2014_valminusminival_generalized_rcnn_model_final.pkl
    
    OpenCVを使って画像を読み取り、cv 2.imread()
    設定ファイルをロードするe2e_keypoint_rcnn_R_50_FPN_1x_caffe2.yaml.
  • keybootはキーポイントアルゴリズムである.
  • rnnは検出アルゴリズムである.
  • R_50はReset 50です
  • FPNは、特徴的な金子塔(Feature Pyramid Networks)である.
  • 1 xは、16であるminibatchであり、スキームの初期LR=0.02であり、60 Kと80 Kの反復後に、*0.1が減衰し、90 Kで反復終了し、参照する.
  • CPUモードを使用して、MODEL.DEVICEをcpuに設定します.
    モデルCOCO Demoを作成し、最小画像サイズ800、信頼度0.7;run_on_opencv_imageインターフェース予測ピクチャを呼び出して、描画結果のピクチャを生成します.
    ソースは以下の通りです
    import os
    import cv2
    import pylab
    import matplotlib.pyplot as plt
    
    from maskrcnn_benchmark.config import cfg
    from demo.predictor import COCODemo
    
    from root_dir import DATA_DIR
    
    
    def show_cv_img(img_cv):
        img = cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB)
        plt.imshow(img)
        plt.axis("off")
        fig = plt.gcf()
        fig.set_size_inches(10, 8)
        pylab.show()
    
    
    def main():
        img_path = os.path.join(DATA_DIR, 'girl_generation.jpg')
    
        img = cv2.imread(img_path)
        print('[Info] img size: {}'.format(img.shape))
        show_cv_img(img)
    
        config_file = "../configs/caffe2/e2e_keypoint_rcnn_R_50_FPN_1x_caffe2.yaml"
    
        cfg.merge_from_file(config_file)  #       
        cfg.merge_from_list(["MODEL.DEVICE", "cpu"])  #    CPU
    
        coco_demo = COCODemo(  #       
            cfg,
            min_image_size=800,
            confidence_threshold=0.7,
        )
    
        predictions = coco_demo.run_on_opencv_image(img)
        show_cv_img(predictions)
    
    
    if __name__ == '__main__':
        main()
    
    効果:
    Trouble shoting
    よくある問題の解決策.
    libomp.dylib
    次の問題に遭遇しました.libomp.dylibは読み込めません.
    ImportError: dlopen(python3.7/site-packages/torch/_C.cpython-37m-darwin.so, 9): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
      Referenced from: python3.7/site-packages/torch/lib/libshm.dylib
      Reason: image not found
    
    libompパッケージのインストール:
    brew install libomp
    
    参考:github.com/pytoch/pyt…
    toch.version.cda.split('.')
    GPUのバージョン、異常:
    get_cuda_version
        return tuple(int(x) for x in torch.version.cuda.split('.'))
    AttributeError: 'NoneType' object has no attribute 'split'
    
    環境はMacのCPU環境で、GPUがなくて、appexのソースコードの中で、依然としてGPUを探して、Bugを招いて、ソースを修正すればいいです./apex/amp/lists/torch_overrides.pyの69行目は、Try-Except文を追加し、異常をブロックします.
    try:
        if utils.get_cuda_version() >= (9, 1, 0):
            FP16_FUNCS.extend(_bmms)
        else:
            FP32_FUNCS.extend(_bmms)
    except:
        FP32_FUNCS.extend(_bmms)
    
    fatal error:Python.h:No such file or directory
    Pythonのヘッドファイルが不足しています.開発版をインストールすればいいです.
    sudo apt-get install python3-dev
    
    ap-fastを使ってダウンロードすることを勧めます.とても早いです.
    OK、that's all
    転載先:https://juejin.im/post/5cd2bd08f265da03855810d8