imglab を用いた画像のアノテーション(Dlib, Dlib の imglab, Python を使用)(Windows 上)

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

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

サイト内の関連ページ

謝辞

Dlib の作者に感謝します

前準備

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

インストールの判断Build Tools for Visual Studio は,開発ツールセットである. Visual Studio は統合開発環境であり,いくつかの種類があり,Build Tools for Visual Studioの機能を含むか連携して使用するものである.インストールは以下の基準で判断してください:

不明な点がある場合は,Visual Studio 全体をインストール を行う方が良い.

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

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

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

    次のコマンドを実行

    次のコマンドは,Build Tools for Visual Studio 2022と VC2015 再配布可能パッケージをインストールするものである.

    winget install --scope machine Microsoft.VisualStudio.2022.BuildTools 
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Build Tools for Visual Studio 2022 での C++ によるデスクトップ開発,CLI,ATL,MFC のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Build Tools 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をクリック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」,「ATL」,「MFC」をチェックする.その後,「変更」をクリック.

Visual Studio のインストール(Windows 上)

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

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

    次のコマンドを実行

    次のコマンドは,Visual Studio Community 2022と VC2015 再配布可能パッケージをインストールするものである.

    winget install --scope machine Microsoft.VisualStudio.2022.Community
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Visual Studio での C++ によるデスクトップ開発,CLI のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Community 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をチェック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」をチェックする.その後,「インストール」をクリック.

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

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

サイト内の関連ページWindows での Git のインストール: 別ページ »で説明

関連する外部ページGit の公式ページ: https://git-scm.com/

CMake のインストール

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

7-Zip のインストール(Windows 上)

7-Zipは,ファイル圧縮・展開(解凍)ツール

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

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

  2. 次のコマンドを実行

    次のコマンドは,7-Zipをインストールするものである.

    winget install --scope machine 7zip.7zip
    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\7-Zip\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    

関連する外部ページ

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

サイト内の関連ページ

関連する外部ページPython の公式ページ: https://www.python.org/

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

インストールの判断Build Tools for Visual Studio は,開発ツールセットである. Visual Studio は統合開発環境であり,いくつかの種類があり,Build Tools for Visual Studioの機能を含むか連携して使用するものである.インストールは以下の基準で判断してください:

不明な点がある場合は,Visual Studio 全体をインストール を行う方が良い.

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

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

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

    次のコマンドを実行

    次のコマンドは,Build Tools for Visual Studio 2022と VC2015 再配布可能パッケージをインストールするものである.

    winget install --scope machine Microsoft.VisualStudio.2022.BuildTools 
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Build Tools for Visual Studio 2022 での C++ によるデスクトップ開発,CLI,ATL,MFC のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Build Tools 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をクリック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」,「ATL」,「MFC」をチェックする.その後,「変更」をクリック.

Visual Studio のインストール(Windows 上)

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

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

    次のコマンドを実行

    次のコマンドは,Visual Studio Community 2022と VC2015 再配布可能パッケージをインストールするものである.

    winget install --scope machine Microsoft.VisualStudio.2022.Community
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Visual Studio での C++ によるデスクトップ開発,CLI のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Community 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をチェック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」をチェックする.その後,「インストール」をクリック.

Dlib のインストール

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

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

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

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

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

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

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

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

    次のコマンドを実行.

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

    次のコマンドを実行.

    cd C:\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 の場合

Ubuntu を使用する場合は,次のように操作する.

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

Dlib の imglab のインストール

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

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

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

  2. 次のコマンドを実行
    cd C:\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 -- /m:4 
    

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

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

imglab を使ってみる

  1. 画像を数枚準備する
  2. 準備した画像ファイルを,次のディレクトリに置く
    %HOMEPATH%\dlib\bin
    
  3. 画像ファイルの準備が終わったら、 .xml 形式ファイルを作る.

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

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

    C:
    cd C:\dlib\bin
    .\imglab.exe -c mydata.xml .
    
  4. 生成された .xml 形式ファイルをエディタなどで開き確認してみる.
    notepad mydata.xml
    
  5. imglab を起動してみる

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

    .\imglab.exe mydata.xml 
    

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

    • 複数の画像を簡単に表示できる機能がある。
    • ラベル(label)を編集する機能がある (Next Labelのところに書き込む)
    • 領域を指定する機能がある (シフトキー(SHIFT キー)を押しながら、マウスをドラッグ
  6. imglab で、領域を指定してみる

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

  7. 保存する

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

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

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

Dlib を用いた学習

  1. 教材ファイル Release.zip をダウンロードし,%HOMEPATH%\dlib\bin に置く
    C:
    cd C:\dlib\bin
    curl -O https://www.kkaneko.jp/sample/dog/Release.zip
    "c:\Program Files\7-Zip\7z.exe" x Release.zip
    
  2. Web ブラウザで training.xml を開いて、確認してみる

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

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

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

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

    C:
    cd C:\dlib\bin
    .\imglab.exe training.xml
    
  4. imglab を閉じる
  5. 学習を行う(教師データの生成)

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

    copy %HOMEPATH%\dlib\examples\faces\*.jpg .
    python C:\dlib\python_examples\train_object_detector.py .
    
  6. 途中で、Enterキーを押して続行
  7. Python プログラムの実行

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

    Python プログラムの実行(Windows 上)

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

    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()
    

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

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