Mask R-CNNの実装手順


はじめに

Dockerを使い始める前、苦労してMask R-CNNを実装したときのメモを記事にしておきます

自分用メモだったため、説明が雑ですが、参考になれば幸いです。

環境構築

インストール

Python v3への切り替え

予めPythonv3に切り替えておく必要があります。やり方は割愛します。

jupyterのインストール

pip install jupyter
jupyter notebook

Mask R-CNNのソースコードを取ってくる

mkdir ~/maskrcnn_ws
cd maskrcnn_ws
git clone https://github.com/matterport/Mask_RCNN.git

必要なパッケージをインストール

pip3 install -r requirements.txt --user
python3 setup.py install –-user

エラー対処

たくさんエラーを吐くので、以下のサイトを見ながら1つずつアップデート&インストールをする。(権限エラーが起きたら --user をつける)

Import cv2でエラー

import cv2を以下のように置き換える

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2 

参考サイト:https://www.jyuko49.com/entry/2018/11/14/083226#Mask-R-CNNでできること
参考サイト:https://qiita.com/ReoNagai/items/112c3a8b6cd55c3e5380
参考サイト:https://qiita.com/HyunwookPark/items/242a8ceea656416b6da8

COCOデータセットをインストール

git clone https://github.com/cocodataset/cocoapi.git
cd coco/PythonAPI
sudo python3 setup.py install

GPUに対応させる(CUDA, cuDNN, TensorFlowをインストール)

バージョン確認

NVIDIAドライバーのバージョン確認

dpkg -l | grep nvidia

ドライバとCUDAの対応確認

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

CUDAとcuDNNとtensorflow-gpuの対応確認

https://www.tensorflow.org/install/source#common_installation_problems

環境を最新にする

sudo apt-get upgrade
sudo apt-get update
sudo apt list upgradable

参考サイト:https://qiita.com/konzo_/items/a6f2e8818e5e8fcdb896
参考サイト:https://qiita.com/konzo_/items/3e2d1d7480f7ef632603

ビルドツールインストール

sudo apt-get install build-essential

CUDA

ダウンロード

https://developer.nvidia.com/cuda-toolkit-archive から対応するバージョンの~networkをダウンロード

インストール

cd ~/ダウンロード
sudo dpkg -I [ダウンロードしてきたファイルの名前].deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-toolkit-10-0

cuda-toolkit-XX-Xは上で見たバージョンに合わせる

bashrcの設定

sudo gedit ~/.bashrc

一番下に以下を追加

   export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} 
   export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

再起動

CUDAの確認

 nvcc -V

cuDNN

ダウンロード

https://developer.nvidia.com/cudnn からRuntimeとDeveloper~とCode~をダウンロード(要ログイン)

インストール

sudo dpkg -i libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.4.1.5-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.4.1.5-1+cuda10.0_amd64.deb

※以上の順番でインストール(ファイル名はダウンロードしてきたものに変える)

TensorFlow

pip3 install tensorflow-gpu==1.14.0

※バージョンはうえで確認した対応関係に合わせる

エラー対処

Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

VS Codeなどで下記ファイルを開く

   ~/.local/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py

ファイルの変更

tf.Session()の箇所を

 session_config = tf.ConfigProto(gpu_options=tf.GPUOptions(allow_growth=True))
    tf.Session(config = session_config)

で置き換える

参考サイト:https://qiita.com/hiroshijsc16/items/d7226eae499e5ad7e5e9

動画を読み込む

参考サイト(サンプルコードはここにある):https://ai-coordinator.jp/mask-r-cnn

エラー対処

modelがインポートできない

~/maskrcnn_ws/Mask_RCNN/maskrcnn_from_movie.pyimport modelimport mrcnn.model as modellibに変更

cocoがインポートできない

cocoimport samples.coco.coco as cocoに変更

cv2がインポートできない

なんだかんだそのままでうまく行くようになった(理由はよくわからない)

画像読み込み(maskrcnn_from_photo.py)

参考サイト:https://www.jyuko49.com/entry/2018/11/14/083226#Mask-R-CNN%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8

エラー対処

Tensorflowが見つからない

pip3 install -U tensorflow keras

参考サイト:https://teratail.com/questions/138592

Imgaungが見つからない

pip3 install imgaug

cv2が見つからない

import cv2を以下で置き換える

  import sys
  sys.path.remove('/opt/ros/kitf.Sessionnetic/lib/python2.7/dist-packages')
  import cv2

エラー対処

CUDNN_STATUS_INTERNAL_ERROR

config.gpu_options.allow_growth = True
        _SESSION = tf.Session(config=config)

参考サイト:https://github.com/tensorflow/tensorflow/issues/27144