金子邦彦研究室人工知能Windows で動く人工知能関係 Pythonアプリケーション,オープンソースソフトウエア)matterport/Mask_RCNN のインストールと動作確認(Mask RCNN によるインスタンス・セグメンテーション)(Python 3.7,TensorFlow 1.15.5, Keras 2.3.1 を使用)(Windows 上)

matterport/Mask_RCNN のインストールと動作確認(Mask RCNN によるインスタンス・セグメンテーション)(Python 3.7,TensorFlow 1.15.5, Keras 2.3.1 を使用)(Windows 上)

Mask RCNN を用いた画像の物体認識.

手順の要点: 前準備として,NVIDIA CUDA 10.0, NVIDIA cuDNN 7.6.5, Python 3.7, TensorFlow 1.15.5 等をインストール.

目次

  1. 前準備
  2. インストール
  3. Mask RCNN によるインスタンス・セグメンテーション

前準備

Git のインストール(Windows 上)

Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.

サイト内の関連ページ

Windows での Git のインストール: 別ページ »で説明している.

関連する外部ページ

Git の公式ページ: https://git-scm.com/

Python 3.7 64 ビット版のインストール,pip と setuptools の更新,Python 開発環境のインストール(Windows 上)

① Python 3.7 64 ビット版のインストール(Windows 上)

Python のインストールでの注意点

Python 3.7 のインストール手順の詳細(別ページ)

Windows での Python 3.7 のインストール: 別ページ »で説明している.

Python の公式ページ

https://www.python.org/

インストール手順の概要

  1. Python の URL を開く

    URL: https://www.python.org

  2. Windows 版の Python 3.7 をダウンロード

    ページの上の方にある「Downloads」をクリック,「Downloads」の下にメニューが出るので,その中の「Windows」をクリック.

    そして,Python 3.7.x (x は数字)を探す.

    そして,Windows の 64ビット版のインストーラをダウンロードしたいので,「Windows x86-64 executable installer」を選ぶ

    [image]
  3. インストール時の設定
    1. いまダウンロードした .exe ファイルを右クリック, 右クリックメニューで「管理者として実行」を選ぶ.

      [image]
    2. Python ランチャーをインストールするために,「Install launcher for all users (recommended)」をチェック.

      ※ すでに Python ランチャーをインストール済みのときは, 「Install launcher for all users (recommended)」がチェックできないようになっている場合がある.そのときは,チェックせずに進む.

    3. Add Python 3.7 to PATH」をチェック.

      [image]
    4. Customize installation」をクリック.

      [image]
    5. オプションの機能 (Optional Features)は,既定(デフォルト)のままでよい. 「Next」をクリック

      [image]
    6. Install for all users」を選ぶ.

      Python のインストールディレクトリは,「C:\Program Files\Python37」のように自動設定されることを確認.

      Install」をクリック

      [image]
    7. Disable path length limit」が表示される場合がある.クリックして,パス長の制限を解除する

      [image]
    8. インストールが終了したら,「Close」をクリック
  4. インストールのあと,Windows のスタートメニューに「Python 3.7」が増えていることを確認.
  5. システムの環境変数 Path の確認のため,新しくコマンドプロンプトを開き,次のコマンドを実行する.

    pypipパスが通っていることの確認である.

    where py
    where pip
    

    where py では「C:\Windows\py.exe」 が表示され, where pip では「C:\Program Files\Python37\scripts\pip.exe」 が表示されることを確認.

    [image]

② pip と setuptools の更新(Windows 上)

  1. Windows で,コマンドプロンプト管理者として実行

    Windowspip を実行するときは,コマンドプロンプト管理者として開き,それを使って pip を実行することにする.

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. 次のコマンドを実行する

    Python の使用は「py -3.7」で行う.

    py -3.7 -m pip install -U pip setuptools
    

    [image]

③ Python 開発環境として,Python の隔離された環境に,Python コンソール(Jupyter Qt Console), Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract をインストール

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. venv を用いて,Python の仮想環境を作成

    次のコマンドを実行する

    py -3.7 -m pip install -U pip setuptools
    py -3.7 -m venv C:\venv\py37
    
  3. Python の仮想環境の使用開始と,Python 開発環境のインストール

    次のコマンドを実行する

    Python の使用は「C:\venv\py37\scripts\activate.bat」の後,「python」で行う.

    C:\venv\py37\scripts\activate.bat
    python -m pip install -U pip setuptools jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter PySide6
    

Visual Studio Community 2017,NVIDIA ドライバ,NVIDIA CUDA ツールキット 10.0,NVIDIA cuDNN 7.6.5 のインストール(Windows 上)

Windows での Visual Studio Community 2017,NVIDIA ドライバNVIDIA CUDA ツールキット 10.0NVIDIA cuDNN 7.6.5 のインストール: 別ページ »で説明している.

インストール

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. pycocotools のインストール
    python -m pip install -U cython
    python -m pip install "git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI"
    

    [image]
  3. matterport/Mask_RCNN のインストール

    cd %HOMEPATH%
    rmdir /s /q Mask_RCNN
    git clone https://github.com/matterport/Mask_RCNN
    cd Mask_RCNN
    C:\venv\py37\scripts\activate.bat
    python -m pip install -r requirements.txt
    python -m pip uninstall -y tensorflow tensorflow-gpu tensorflow-intel keras tensorboard tensorflow-estimator
    python -m pip install tensorflow-gpu==1.15.5 keras==2.3.1
    python setup.py build
    python setup.py install 
    

Mask RCNN によるインスタンス・セグメンテーション

Python コンソールで,SSD.ipynb に記載のコマンドを実行しながら結果を確認したい.結果は,画像などでプロットされる場合がある.

Windows での手順を下に示す.Ubuntu でも同様の手順になる.

  1. Windows で,コマンドプロンプトを実行.
  2. カレントディレクトリ

    cd %HOMEPATH%\Mask_RCNN
    

    [image]
  3. jupyter qtconsole の起動

    これ以降の操作は,jupyter qtconsole で行う.

    C:\venv\py37\scripts\activate.bat
    jupyter qtconsole
    
  4. ROOT_DIR の設定

    エラーメッセージが出ないことを確認

    import os
    ROOT_DIR = os.environ['HOMEPATH'] + '\\Mask_RCNN'
    

    [image]
  5. 前準備

    前準備 として、mask_rcnn_coco.h5 のダウンロードなどを行う

    import os
    import sys
    import random
    import math
    import numpy as np
    import skimage.io
    import matplotlib
    %matplotlib inline
    import matplotlib.pyplot as plt
    import warnings
    warnings.filterwarnings('ignore')   # Suppress Matplotlib warnings
    import imgaug
    
    # Import Mask RCNN
    sys.path.append(ROOT_DIR)  # To find local version of the library
    from mrcnn import utils
    import mrcnn.model as modellib
    from mrcnn import visualize
    # Import COCO config
    sys.path.append(os.path.join(ROOT_DIR, "samples/coco/"))  # To find local version
    
    
    # Directory to save logs and trained model
    MODEL_DIR = os.path.join(ROOT_DIR, "logs")
    
    # Local path to trained weights file
    COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5")
    # Download COCO trained weights from Releases if needed
    if not os.path.exists(COCO_MODEL_PATH):
        utils.download_trained_weights(COCO_MODEL_PATH)
    
    # Directory of images to run detection on
    IMAGE_DIR = os.path.join(ROOT_DIR, "images")
    

    [image]
  6. 設定
    import coco
    class InferenceConfig(coco.CocoConfig):
        # Set batch size to 1 since we'll be running inference on
        # one image at a time. Batch size = GPU_COUNT * IMAGES_PER_GPU
        GPU_COUNT = 1
        IMAGES_PER_GPU = 1
    
    config = InferenceConfig()
    config.display()
    

    [image]
  7. 学習済みデータのロード
    # Create model object in inference mode.
    model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)
    
    # Load weights trained on MS-COCO
    model.load_weights(COCO_MODEL_PATH, by_name=True)
    

    [image]
  8. クラス名の設定
    # COCO Class names
    # Index of the class in the list is its ID. For example, to get ID of
    # the teddy bear class, use: class_names.index('teddy bear')
    class_names = ['BG', 'person', 'bicycle', 'car', 'motorcycle', 'airplane',
                   'bus', 'train', 'truck', 'boat', 'traffic light',
                   'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird',
                   'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear',
                   'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie',
                   'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball',
                   'kite', 'baseball bat', 'baseball glove', 'skateboard',
                   'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup',
                   'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
                   'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
                   'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed',
                   'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote',
                   'keyboard', 'cell phone', 'microwave', 'oven', 'toaster',
                   'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors',
                   'teddy bear', 'hair drier', 'toothbrush']
    
    

    [image]
  9. 画像からのオブジェクト検出
    # Load a random image from the images folder
    file_names = next(os.walk(IMAGE_DIR))[2]
    image = skimage.io.imread(os.path.join(IMAGE_DIR, random.choice(file_names)))
    
    # Run detection
    results = model.detect([image], verbose=1)
    
    # Visualize results
    %matplotlib inline 
    r = results[0]
    visualize.display_instances(image, r['rois'], r['masks'], r['class_ids'], 
                                class_names, r['scores'])
    

    実際の動作画面

    画像はランダムで選択されるので、違う画像が表示されても問題なし

    [image]