#エラーの原因特定まで
[【前編】Mask R-CNNで発生したエラー「UserWarning: An input could not be retrieved. It could be because a worker has died」を解決してみた。]
(https://qiita.com/skperfarming/items/68cdec8ad8672837bd38)
前編ではエラーの発生とその原因を探りました。
後編では実際にちゃんと学習できる実装を紹介します。
#DOWNLOAD/SETUP/IMPORT
# Mount drive
from google.colab import drive
drive.mount('/content/drive/')
%tensorflow_version 1.x
google driveをマウントします。
tensorflowのバージョンも前のものを指定しましょう。
# Change directory to project folder
%cd "/content/drive/My Drive/DeepLearning2/Mask_RCNN"
!python setup.py install
setup.pyがあるディレクトリを指定して、セットアップをします。
import os
import sys
import random
import math
import re
import time
import numpy as np
import tensorflow as tf
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# Root directory of the project
ROOT_DIR = os.path.abspath("../../")
# Import Mask RCNN
sys.path.append(ROOT_DIR) # To find local version of the library
from mrcnn import utils
from mrcnn import visualize
from mrcnn.visualize import display_images
import mrcnn.model as modellib
from mrcnn.model import log
from samples.nucleus import nucleus
%matplotlib inline
# Directory to save logs and trained model
LOGS_DIR = os.path.join(ROOT_DIR, "logs")
おなじみのいろいろをimportしたりします。
多分、他のipynbのものをコピーしただけです。
#学習まで
!mkdir "/content/datasets"
!cp "/content/drive/My Drive/DeepLearning2/Mask_RCNN/datasets/nucleus/stage1_train.zip" "/content/datasets"
!mkdir "/content/datasets/stage1_train"
!unzip /content/datasets/stage1_train.zip -d /content/datasets/stage1_train
content直下にdatasetsというフォルダを作成
→その中にzipを格納
→datasets直下に解凍したデータを入れるフォルダを作成
→zipを解凍して、作成したフォルダに格納
%cd "/content/drive/My Drive/DeepLearning2/Mask_RCNN/samples/nucleus/"
!python3 nucleus.py train --dataset=/content/datasets/ --subset=train --weights="/content/drive/My Drive/DeepLearning2/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5"
ディレクトリをnucleus.pyがあるところまで移動
→学習開始するコマンドを実行!
#エラー解決
前編で述べていたエラーは出ることなく、Epoch40まで学習を進めることができました。
途中でセッションが切れてしまったりした場合、以下のように指定することで途中から学習を再開することができます。
!python3 nucleus.py train --dataset=/content/datasets/ --subset=train --weights=last
無事学習を進めることができました!
改善点等あればコメントを下さい~