トップページ情報工学を学ぶ人工知能の実行,Python プログラム (Windows 上)imglab による画像分類の画像のアノテーション(Dlib, Dlib の imglab, Python を使用)(Windows 上)

imglab による画像分類の画像のアノテーション(Dlib, Dlib の imglab, Python を使用)(Windows 上)

Dlibは,機械学習のアルゴリズムの機能を持つソフトウェア.

利用条件などは利用者において確認してください

サイト内の関連ページ

謝辞

Dlib の作者に感謝します

前準備

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)のインストール(Windows 上)

Build Tools for Visual Studio は,Windows で動くMicrosoft の C++ コンパイラーである.

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)のダウンロードページ

https://visualstudio.microsoft.com/ja/downloads/

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

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)のインストール: 別ページで説明している.

インストール手順の概要

  1. ダウンロード URL を開く

    https://visualstudio.microsoft.com/ja/downloads/

  2. このページの下の方の「Visual Studio 2022用のツール」を展開

    [image]
  3. Build Tools for Visual Studio 2022」の右の「ダウンロード」をクリック.

    [image]
  4. ダウンロードが始まる

    [image]
  5. ダウンロードした .exe ファイルを実行する
  6. 表示を確認し,「続行」をクリック

    [image]
  7. C++ によるデスクトップ開発」をクリック.「インストール」をクリック.

    [image]
  8. ダウンロードとインストールが始まる
  9. インストール終了の確認

Git のインストール

cmake のインストール

cmake のダウンロードページ: https://cmake.org/download/

7-Zip のインストール

7-Zip のページ: https://sevenzip.osdn.jp/ からダウンロードしてインストールする.

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

Windows での Python 3.10 のインストール,pip と setuptools の更新: 別ページで説明している.

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

Dlib のインストール

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

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

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

  2. 次のコマンドを実行.
    python -m pip install -U dlib
    

Dlib のソースコード等と,Dlib の学習済みモデルのダウンロード

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

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

  2. Dlib のソースコード等のダウンロード

    端末で,次のコマンドを実行..

    cd %HOMEPATH%
    rmdir /s /q dlib
    git clone https://github.com/davisking/dlib
    
  3. Dlib の学習済みモデルのダウンロード

    端末で,次のコマンドを実行..

    cd %HOMEPATH%
    cd dlib
    cd python_examples
    curl -O http://dlib.net/files/mmod_human_face_detector.dat.bz2
    curl -O http://dlib.net/files/dlib_face_recognition_resnet_model_v1.dat.bz2
    curl -O http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2
    curl -O http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
    "c:\Program Files\7-Zip\7z.exe" x mmod_human_face_detector.dat.bz2
    "c:\Program Files\7-Zip\7z.exe" x dlib_face_recognition_resnet_model_v1.dat.bz2
    "c:\Program Files\7-Zip\7z.exe" x shape_predictor_5_face_landmarks.dat.bz2
    "c:\Program Files\7-Zip\7z.exe" x shape_predictor_68_face_landmarks.dat.bz2
    del mmod_human_face_detector.dat.bz2
    del dlib_face_recognition_resnet_model_v1.dat.bz2
    del shape_predictor_5_face_landmarks.dat.bz2
    del shape_predictor_68_face_landmarks.dat.bz2
    

Python 用 numpy, scikit-image のインストール

Windows の場合

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

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

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

  2. 次のコマンドを実行.
    python -m pip install -U numpy scikit-image
    

Ubuntu の場合

端末で,次のコマンドを実行.

sudo apt -y update
sudo apt -y install python3-numpy python3-skimage

Dlib の imglab のインストール

前準備として、Windows のときは マイクロソフト C++ ビルドツール (Build Tools) のインストールが終わっていること

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

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

  2. 次のコマンドを実行
    cd %HOMEPATH%\dlib
    cd tools\imglab
    rmdir /s /q build
    mkdir build
    cd build
    cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 ^
        -DCMAKE_INSTALL_PREFIX="%HOMEPATH%\dlib" ..
    cmake --build . --config RELEASE 
    cmake --build . --config RELEASE --target INSTALL 
    

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

[image]

ここで,「%HOMEPATH%\dlib」は,Dlib のソースコードを展開したディレクトリに読み替えること。

imglab を使ってみる

  1. 画像を数枚準備する

    [image]

    [image]

    [image]
  2. 準備した画像ファイルを,次のディレクトリに置く
    %HOMEPATH%\dlib\bin
    

    [image]
  3. 画像ファイルの準備が終わったら、 .xml 形式ファイルを作る.

    Windowsのコマンドプロンプトを開き、次のコマンドを実行.エラーメッセージが出ないことを確認.

    「.\imglab.exe -c mydata.xml .」は、.xml 形式ファイルを作るコマンド.ファイル名 mydata.xml は何でもよい

    C:
    cd %HOMEPATH%\dlib\bin
    .\imglab.exe -c mydata.xml .
    

    [image]
  4. 生成された .xml 形式ファイルをエディタなどで開き確認してみる.
    notepad mydata.xml
    

    [image]
  5. imglab を起動してみる

    Windowsのコマンドプロンプトで、次のコマンドを実行.

    .\imglab.exe mydata.xml 
    

    [image]

    imglab は,画像ビューワになっている

    [image]
  6. imglab で、領域を指定してみる

    シフトキー(SHIFT キー)を押しながら、マウスをドラッグ<

    [image]
  7. 保存する

    File」→「Save」」と操作する

    [image]
  8. 確かに .xml形式ファイルに,結果が保存される

    指定した領域についての情報が保存される

    [image]

Dlib を用いた学習

  1. 教材ファイル Release.zip をダウンロードし,%HOMEPATH%\dlib\bin に置く
    C:
    cd %HOMEPATH%\dlib\bin
    curl -O https://www.kkaneko.jp/sample/dog/Release.zip
    "c:\Program Files\7-Zip\7z.exe" x Release.zip
    

    [image]
  2. Web ブラウザで training.xml を開いて、確認してみる

    14枚の画像について、 領域を指定済み

    Google Chrome ではうまく表示できない.下の図では Firefox での表示結果を示している.

    [image]
  3. imglab を起動して確認してみる

    Windowsのコマンドプロンプトで、次のコマンドを実行.

    C:
    cd %HOMEPATH%\dlib\bin
    .\imglab.exe training.xml
    

    [image]

    [image]
  4. imglab を閉じる
  5. 学習を行う(教師データの生成)

    最後の「.」を忘れないこと

    copy %HOMEPATH%\dlib\examples\faces\*.jpg .
    python %HOMEPATH%\dlib\python_examples\train_object_detector.py .
    

    [image]
  6. 途中で、Enterキーを押して続行

    [image]

    [image]
  7. Python プログラムの実行

    謝辞:http://tadaoyamaoka.hatenablog.com/entry/2016/09/21/184955 のものを参考に(少し変更して)使っています

    Python プログラムの実行

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

    Python のまとめ: 別ページにまとめている.

    コマンドプロンプトで次を実行

    python
    

    次の Python プログラムを実行

    import os
    import sys
    import glob
    
    import dlib
    from skimage import io
    
    f = '5920652345_5be61ae940.jpg'
    
    detector = dlib.simple_object_detector("detector.svm")
    
    win_det = dlib.image_window()
    win_det.set_image(detector)
    
    win = dlib.image_window()
    
    print("Processing file: {}".format(f))
    img = io.imread(f)
    dets = detector(img)
    print("Number of objects detected: {}".format(len(dets)))
    for k, d in enumerate(dets):
        print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
            k, d.left(), d.top(), d.right(), d.bottom()))
    
    win.clear_overlay()
    win.set_image(img)
    win.add_overlay(dets)
    dlib.hit_enter_to_continue()
    

    [image]

    上の犬の写真では、画像分類がうまくいっていない

  8. 学習に使う画像を増やすには
    .\imglab training.xml