0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

maskrcnn-benchmarkの環境構築で遭遇したエラーと解決方法

Last updated at Posted at 2021-06-29

Mask R-CNNをCOCO以外のデータセットで学習するために、maskrcnn-benchmarkで提供されているdockerを使おうとしたらいろいろとエラーが起こり詰まったので、遭遇したエラーと解決した方法をメモしておきます。

#エラーと解決策
##ImportError: libGL.so.1: cannot open shared object file: No such file or directory
このエラーは、cv2のインポートをしようとした時に出た。

####解決方法
サイトを調べるうちに、このエラーは以下のコマンドを実行すれば解決できることがわかった。

$pip install opencv-python
$pip install opencv-contrib-python
$apt-get install -y libgl1-mesa-dev

しかし、3行目の実行でE: Unable to locate packageというエラーが発生した。

この問題を解決した方法は、

$sudo apt update

これにより、libGLがインポートできるようになった。

##ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
libGLがインポートできるようになったが、今度はこのエラーが出るようになった。
このエラーは「opencv-python自体はpipでインストールされており、cv2は見つかったものの、依存関係にある外部ライブラリが見つからない」という事を意味しているらしい。

####解決方法
色々調べてDockerFileを書き換え、lib~となっているパッケージをRUN以下に追加した

RUN apt-get update -y \
 && apt-get install -y apt-utils git curl ca-certificates bzip2 cmake tree htop bmon iotop g++ \
 && apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender-dev\
 && apt-get install -y --no-install-recommends \
    build-essential \
    wget \
    git \
    vim \
    sudo \
    libgl1-mesa-glx \
    libglib2.0-0 \
    libopencv-dev  \
    libsm6 \
    libxrender1 \
    libxext6 \
    libgl1-mesa-dev \
    curl \
    tmux && \
    rm -rf /var/lib/apt/lists/*

しかしこれだけでは動かなかった。その後以下のコマンドを実行したところ、動かすことができた。

$apt update
$apt-get install -y libglib2.0-0 libsm6 libxrender1 libxext6

##ImportError: numpy.core.multiarray failed to import
これはnumpyが古いバージョンであるために発生するエラーらしい。

####解決方法
numpyをアップデートしてあげる。

##Dockerfileをビルドする際に発生するエラー
提供されているDockerfileの一部が古く、自分の環境では動かすことができなかったので、以下の点を修正した。

  1. pytorch-nightlypytorch torchvision(36行目)
  2. apex と vision の github からインストールする部分はコメントアウト(40行〜42行目、50行〜52行目)

しかし、

/bin/sh: 1: /miniconda/bin/conda: not found

というエラーが出てしまった。

####解決方法
Dockerfile内のminicondaをすべて/opt/conda/に変更した。



次に

/bin/sh: 1: /opt/conda/bin/conda: not found

というエラーが出た。

####解決方法
minicondaのインストール部分を変更(13行目以下)

  1. /miniconda/tmp/minicondaに変更
  2. パスを https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh に変更

これによってエラーが出ずに最後までビルドができた。

##error: command 'gcc' failed with exit status 1
demoディレクトリ内のMask_R-CNN_demo.ipynbを動かそうとしたが、Jupyter notebookがうまく使えなかったため、新しく作成したPythonファイルにコードをコピーして実行した。
すると、apexがないというエラーが出たので、

git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cuda_ext --cpp_ext

を実行したところ、setup.pyの実行で

error: command 'gcc' failed with exit status 1

というエラーが出た。

####解決方法
以下のコマンドを実行することで、setup.pyが最後まで動いた。

git checkout f3a960f80244cf9e80558ab30f7f7e8cbf03c0a0

##cv2.error: OpenCV(4.5.2) : -1: error: (-5:Bad argument) in function 'putText'
デモからコードをコピーしてきたファイルmaskrcnn-demo.pyを実行したところ、

Traceback (most recent call last):
  File "maskrcnn-demo.py", line 57, in <module>
    predictions = coco_demo.run_on_opencv_image(image)
  File "/notebooks/maskrcnn-benchmark/demo/predictor.py", line 220, in run_on_opencv_image
    result = self.overlay_class_names(result, top_predictions)
  File "/notebooks/maskrcnn-benchmark/demo/predictor.py", line 404, in overlay_class_names
    image, s, (x, y), cv2.FONT_HERSHEY_SIMPLEX, .5, (255, 255, 255), 1
cv2.error: OpenCV(4.5.2) :-1: error: (-5:Bad argument) in function 'putText'
> Overload resolution failed:
>  - Can't parse 'org'. Sequence item with index 0 has a wrong type
>  - Can't parse 'org'. Sequence item with index 0 has a wrong type

というエラーが発生した。

####解決方法
このエラーはpredictor.pyputText()という関数の引数が、int型になっていなかったことが原因。引数のxとyをint型にしてあげたことで、きちんと画像が出力された。

元のコード↓

 cv2.putText(
                image, s, (x, y), cv2.FONT_HERSHEY_SIMPLEX, .5, (255, 255, 255), 1
            )

修正後のコード↓

 cv2.putText(
                image, s, (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, .5, (255, 255, 255), 1
            )

#まとめ
今回はいろいろなサイトを調べて解決をしました。最後に自分が調べたサイトのURLを貼っておくので、参考にしてください。各自の環境によって異なる解決法があると思いますが、エラー解決の助けに少しでもなれたら幸いです。

#参考サイト
(OpenCVのエラー系)
https://qiita.com/kenichiro-yamato/items/459b9597a940fb87c321
https://qiita.com/toshitanian/items/5da24c0c0bd473d514c8
https://qiita.com/hatorijobs/items/c503840c13672e12d188
https://qiita.com/narista/items/a3d7d26ae50d54c2553a
https://stackoverflow.com/questions/62786028/importerror-libgthread-2-0-so-0-cannot-open-shared-object-file-no-such-file-o
(maskrcnn-benchmarkのdemoコードのエラー)
https://github.com/facebookresearch/maskrcnn-benchmark/issues/1257)
https://github.com/facebookresearch/maskrcnn-benchmark/issues/1217

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?