はじめに
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の対応確認
CUDAとcuDNNとtensorflow-gpuの対応確認
環境を最新にする
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.py
のimport model
をimport mrcnn.model as modellib
に変更
cocoがインポートできない
coco
をimport samples.coco.coco as coco
に変更
cv2がインポートできない
なんだかんだそのままでうまく行くようになった(理由はよくわからない)
画像読み込み(maskrcnn_from_photo.py)
エラー対処
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)