金子邦彦研究室人工知能Windows で動く人工知能関係 Pythonアプリケーション,オープンソースソフトウエア)bonlime/keras-deeplab-v3-plus のインストールと動作確認(セマンティック・セグメンテーション)(Deeplab v3+,Python を使用)(Windows 上)

bonlime/keras-deeplab-v3-plus のインストールと動作確認(セマンティック・セグメンテーション)(Deeplab v3+,Python を使用)(Windows 上)

bonlime/keras-deeplab-v3-plus のインストールと動作確認を行う.

目次

  1. 前準備
  2. Windows で bonlime/keras-deeplab-v3-plus を使ってみる

前準備

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

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

サイト内の関連ページ

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

関連する外部ページ

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

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

bonlime/keras-deeplab-v3-plus を使うために,Python バージョン3.9 を推奨する.

サイト内の関連ページ

関連する外部ページ

Python の公式ページ: https://www.python.org/

bonlime/keras-deeplab-v3-plus の実行(Windows 上)

GitHub の bonlime/keras-deeplab-v3-plus の Web ページ: https://github.com/bonlime/keras-deeplab-v3-plus

  1. インストール
    cd %HOMEPATH% 
    rmdir /s /q keras-deeplab-v3-plus
    git clone --recursive https://github.com/bonlime/keras-deeplab-v3-plus
    cd keras-deeplab-v3-plus
    type requirements.txt
    python -m pip install -U keras==2.2.4 tensorflow==2.5.0 pillow numpy matplotlib tqdm opencv-python
    
  2. モデルのダウンロードとロード

    python extract_weights.py 
    python load_weights.py 
    
  3. Python プログラムの実行

    Python プログラムの実行

    Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.

    Python のまとめ: 別ページ »にまとめ

    https://github.com/bonlime/keras-deeplab-v3-plus に記載のプログラムを使用

    from matplotlib import pyplot as plt
    import cv2 # used for resize. if you dont have it, use anything else
    import numpy as np
    from model import DeepLabv3
    deeplab_model = DeepLabv3()
    img = plt.imread("imgs/image1.jpg")
    w, h, _ = img.shape
    ratio = 512. / np.max([w,h])
    resized = cv2.resize(img,(int(ratio*h),int(ratio*w)))
    resized = resized / 127.5 - 1.
    pad_x = int(512 - resized.shape[0])
    resized2 = np.pad(resized,((0,pad_x),(0,0),(0,0)),mode='constant')
    res = deeplab_model.predict(np.expand_dims(resized2,0))
    labels = np.argmax(res.squeeze(),-1)
    plt.imshow(labels[:-pad_x])