設置環境
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: ビルドが停止しました: サブコマンドが失敗しました。
- 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));
- 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));
- マスクスコアリング_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));
- マスクスコアリング_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));