Maskrcnn-benchmarkの環境構築に問題があります

設置環境

conda create --name maskrcnn_benchmark 
conda activate maskrcnn_benchmark

conda install python==3.7
conda install ipython pip
pip install ninja yacs cython matplotlib tqdm opencv-python
conda install -c pytorch pytorch-nightly torchvision cudatoolkit=9.0
建议换成
conda install pytorch==1.1 torchvision cudatoolkit=9.0

问题1:ModuleNotFoundError: 「maskrcnn_benchmark」という名前のモジュールがありません

解決:

パスの追加方法:
永続的: 環境変数 PATHONPATH に追加します。そうでない場合は、新しいものを作成します。

import sys
sys.path.append("自己路径")

问题2:属性エラー: モジュール 'torch._six' には属性 'PY3' がありません

バージョンの問題:

エラー プロンプトに従って変更します: /maskrcnn_benchmark/utils/imports.py の torch._six.PY3: が次のように変更されます: torch._six.PY37:

質問 3: ImportError: 名前 '_C' を 'maskrcnn_benchmark' からインポートできません

レイヤー以下のファイルについては、maskrcnn_benchmark import _C でエラーが発生した nms.py、roi_align.py などをすべて from ._utils import _C に置き換えると解決します

質問 3: apex をインストールする

このライブラリのインストールは他のライブラリのように直接使用する形式ではなく pip install XXX、独自の Git の方法で行われます。

GitHub でライブラリを直接ダウンロードし、解凍します。そして対応する位置に置きます。

https://github.com/NVIDIA/apex.git

解凍されたフォルダーに移動します。

python setup.py install --cuda_ext --cpp_ext

問題 4:subprocess.CalledProcessError: コマンド '['where', 'cl']' がゼロ以外の終了ステータス 1 を返しました

環境変数を設定します --- cl.exe の場所はインターネットと同じではありません。

C:\Program Files (x86)\Microsoft VisualStudio\2019\Community\SDK\ScopeCppSDK\vc15\VC\bin

问题5: 「C:/Users/gpu/AppData/Local/Temp/tmpxft_00004664_00000000-10_ROIPool_cuda.cpp1.ii」のコンパイルで 77 個のエラーが検出されました。
ROIPool_cuda.cu
ninja: ビルドが停止しました: サブコマンドが失敗しました。

  1. masscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu の 275 行目を変更します。
    //原代码: dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));
    
    dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
    

  2. masscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu の 320 行目を変更します。
// dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

  dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
  1. マスクスコアリング_rcnn/maskrcnn_benchmark/csrc/cuda/ROIPool_cuda.cu の 129 行目を変更します。
// dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

  dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
  1. マスクスコアリング_rcnn/maskrcnn_benchmark/csrc/cuda/ROIPool_cuda.cu の 176 行目を変更します。
//dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));

  dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));

おすすめ

転載: blog.csdn.net/qq_31807039/article/details/130602186