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

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

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

サイト内の関連ページ

謝辞

Dlib の作者に感謝します

前準備

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

注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.

winget(Windowsパッケージマネージャー)を使用してインストールを行う

  1. Windowsで,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する:
    winget --version
    
  3. Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
    winget install --scope machine Python.Launcher
    winget install --scope machine Python.Python.3.12
    
  4. 【関連する外部サイト】

    【サイト内の関連ページ】

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

CUDAツールキットは、GPU上でコードをコンパイルするためにC++コンパイラを必要とします。そのため、事前にMicrosoft C++ Build Tools または Visual Studio (C++開発ワークロードを含む) をインストールしておく必要があります。

インストールの判断Build Tools for Visual Studio は,C++コンパイラなどを含む開発ツールセットです. Visual Studio は統合開発環境であり,いくつかのエディションがあり,Build Tools for Visual Studioの機能を含むか連携して使用します.インストールは以下の基準で判断してください:

不明な点がある場合は,Visual Studio 全体をインストール する方が、後で機能を追加する手間が省ける場合があります.

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

  1. Windows で,コマンドプロンプト管理者権限で起動します(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)。

    以下のwingetコマンドを実行します。wingetはWindows標準のパッケージマネージャーです。

    --scope machine オプションはシステム全体にインストールすることを意味します。

    次のコマンドは,Build Tools for Visual Studio 2022と、多くのプログラムで必要とされるVC++ 2015以降の再頒布可能パッケージをインストールします.

    winget install --scope machine Microsoft.VisualStudio.2022.BuildTools
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Build Tools for Visual Studio 2022 で C++ によるデスクトップ開発関連コンポーネントのインストール

    CUDA開発には、標準のC++開発ツールに加えて、特定のコンポーネントが必要になる場合があります。

    1. Visual Studio Installer を起動します。

      起動方法: スタートメニューから「Visual Studio Installer」を探して実行します.

    2. Visual Studio Build Tools 2022 の項目で「変更」ボタンをクリックします.
    3. 「ワークロード」タブで「C++ によるデスクトップ開発」をクリックして選択します。画面右側の「インストールの詳細」で、必要に応じて「v143 ビルドツール用 C++/CLI サポート(最新)」、「ATL」、「MFC」などをチェックします(これらは一般的なC++開発や特定のプロジェクトタイプで必要になる場合があります)。その後、「変更」をクリックしてインストールまたは変更を適用します.

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

  1. Windows で,コマンドプロンプト管理者権限で起動します。
  2. インストールコマンドの実行

    以下のwingetコマンドを実行します。--override "--add ..." 部分で、インストールするワークロードやコンポーネントを指定しています。

    winget install Microsoft.VisualStudio.2022.Community --scope machine --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Component.CoreEditor Microsoft.VisualStudio.Component.NuGet Microsoft.VisualStudio.Component.Roslyn.Compiler Microsoft.VisualStudio.Component.TextTemplating Microsoft.VisualStudio.Component.Windows.SDK.Latest Microsoft.VisualStudio.Component.VC.Tools.x86.x64 Microsoft.VisualStudio.Component.VC.ATL Microsoft.VisualStudio.Component.VC.ATLMFC"
    winget install Microsoft.VisualStudio.2022.Community --scope machine Microsoft.VCRedist.2015+.x64
    

    インストールされる主要なコンポーネントの説明:

    • NativeDesktop (C++によるデスクトップ開発): CUDA開発に必要なC++コンパイラ(VC.Tools.x86.x64)やWindows SDK (Windows.SDK.Latest)など、基本的な開発ツール一式を含みます。
    • CoreEditor: Visual Studioの基本的なコードエディタ機能を提供します。
    • VC.CLI.Support: C++/CLIを用いた開発サポート(通常、純粋なCUDA C++開発では不要な場合もあります)。
    • NuGet: .NETライブラリ管理用(C++プロジェクトでも利用されることがあります)。
    • VC.ATL / VC.ATLMFC: 特定のWindowsアプリケーション開発フレームワーク(通常、CUDA開発自体には直接必要ありません)。

    システム要件と注意事項:

    • 管理者権限でのインストールが必須です。
    • 必要ディスク容量:10GB以上(選択するコンポーネントにより変動)。
    • 推奨メモリ:8GB以上のRAM。
    • インストール過程でシステムの再起動が要求される可能性があります。
    • 安定したインターネット接続環境が必要です。

    後から追加のコンポーネントが必要になった場合は,Visual Studio Installerを使用して個別にインストールすることが可能です.

  3. インストール完了の確認

    インストールが成功したか確認するには、管理者権限のコマンドプロンプトで以下のコマンドを実行します。

    winget list Microsoft.VisualStudio.2022.Community
    

    リストに表示されればインストールされています。

    トラブルシューティング:

    インストール失敗時は,以下のログファイルを確認すると原因究明の手がかりになります:

    %TEMP%\dd_setup_.log
    %TEMP%\dd_bootstrapper_.log

    ( は実行日時に対応する文字列)

  4. (オプション) Visual Studio Installer での確認と変更

    wingetでのインストール後も、Visual Studio Installerを使ってインストール内容を確認・変更できます。

    1. Visual Studio Installer を起動します。
    2. Visual Studio Community 2022 の項目で「変更」をクリックします。
    3. 「ワークロード」タブで「C++ によるデスクトップ開発」がチェックされていることを確認します。必要であれば、「個別のコンポーネント」タブで特定のツール(例: 特定バージョンのMSVCコンパイラ、CMakeツールなど)を追加・削除できます。「インストールの詳細」で「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 で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  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 の公式ページ: https://www.python.org/

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

CUDAツールキットは、GPU上でコードをコンパイルするためにC++コンパイラを必要とします。そのため、事前にMicrosoft C++ Build Tools または Visual Studio (C++開発ワークロードを含む) をインストールしておく必要があります。

インストールの判断Build Tools for Visual Studio は,C++コンパイラなどを含む開発ツールセットです. Visual Studio は統合開発環境であり,いくつかのエディションがあり,Build Tools for Visual Studioの機能を含むか連携して使用します.インストールは以下の基準で判断してください:

不明な点がある場合は,Visual Studio 全体をインストール する方が、後で機能を追加する手間が省ける場合があります.

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

  1. Windows で,コマンドプロンプト管理者権限で起動します(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)。

    以下のwingetコマンドを実行します。wingetはWindows標準のパッケージマネージャーです。

    --scope machine オプションはシステム全体にインストールすることを意味します。

    次のコマンドは,Build Tools for Visual Studio 2022と、多くのプログラムで必要とされるVC++ 2015以降の再頒布可能パッケージをインストールします.

    winget install --scope machine Microsoft.VisualStudio.2022.BuildTools
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Build Tools for Visual Studio 2022 で C++ によるデスクトップ開発関連コンポーネントのインストール

    CUDA開発には、標準のC++開発ツールに加えて、特定のコンポーネントが必要になる場合があります。

    1. Visual Studio Installer を起動します。

      起動方法: スタートメニューから「Visual Studio Installer」を探して実行します.

    2. Visual Studio Build Tools 2022 の項目で「変更」ボタンをクリックします.
    3. 「ワークロード」タブで「C++ によるデスクトップ開発」をクリックして選択します。画面右側の「インストールの詳細」で、必要に応じて「v143 ビルドツール用 C++/CLI サポート(最新)」、「ATL」、「MFC」などをチェックします(これらは一般的なC++開発や特定のプロジェクトタイプで必要になる場合があります)。その後、「変更」をクリックしてインストールまたは変更を適用します.

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

  1. Windows で,コマンドプロンプト管理者権限で起動します。
  2. インストールコマンドの実行

    以下のwingetコマンドを実行します。--override "--add ..." 部分で、インストールするワークロードやコンポーネントを指定しています。

    winget install Microsoft.VisualStudio.2022.Community --scope machine --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Component.CoreEditor Microsoft.VisualStudio.Component.NuGet Microsoft.VisualStudio.Component.Roslyn.Compiler Microsoft.VisualStudio.Component.TextTemplating Microsoft.VisualStudio.Component.Windows.SDK.Latest Microsoft.VisualStudio.Component.VC.Tools.x86.x64 Microsoft.VisualStudio.Component.VC.ATL Microsoft.VisualStudio.Component.VC.ATLMFC"
    winget install Microsoft.VisualStudio.2022.Community --scope machine Microsoft.VCRedist.2015+.x64
    

    インストールされる主要なコンポーネントの説明:

    • NativeDesktop (C++によるデスクトップ開発): CUDA開発に必要なC++コンパイラ(VC.Tools.x86.x64)やWindows SDK (Windows.SDK.Latest)など、基本的な開発ツール一式を含みます。
    • CoreEditor: Visual Studioの基本的なコードエディタ機能を提供します。
    • VC.CLI.Support: C++/CLIを用いた開発サポート(通常、純粋なCUDA C++開発では不要な場合もあります)。
    • NuGet: .NETライブラリ管理用(C++プロジェクトでも利用されることがあります)。
    • VC.ATL / VC.ATLMFC: 特定のWindowsアプリケーション開発フレームワーク(通常、CUDA開発自体には直接必要ありません)。

    システム要件と注意事項:

    • 管理者権限でのインストールが必須です。
    • 必要ディスク容量:10GB以上(選択するコンポーネントにより変動)。
    • 推奨メモリ:8GB以上のRAM。
    • インストール過程でシステムの再起動が要求される可能性があります。
    • 安定したインターネット接続環境が必要です。

    後から追加のコンポーネントが必要になった場合は,Visual Studio Installerを使用して個別にインストールすることが可能です.

  3. インストール完了の確認

    インストールが成功したか確認するには、管理者権限のコマンドプロンプトで以下のコマンドを実行します。

    winget list Microsoft.VisualStudio.2022.Community
    

    リストに表示されればインストールされています。

    トラブルシューティング:

    インストール失敗時は,以下のログファイルを確認すると原因究明の手がかりになります:

    %TEMP%\dd_setup_.log
    %TEMP%\dd_bootstrapper_.log

    ( は実行日時に対応する文字列)

  4. (オプション) Visual Studio Installer での確認と変更

    wingetでのインストール後も、Visual Studio Installerを使ってインストール内容を確認・変更できます。

    1. Visual Studio Installer を起動します。
    2. Visual Studio Community 2022 の項目で「変更」をクリックします。
    3. 「ワークロード」タブで「C++ によるデスクトップ開発」がチェックされていることを確認します。必要であれば、「個別のコンポーネント」タブで特定のツール(例: 特定バージョンのMSVCコンパイラ、CMakeツールなど)を追加・削除できます。「インストールの詳細」で「v143 ビルドツール用 C++/CLI サポート(最新)」などが選択されているかも確認できます。変更後、「変更」または「インストール」をクリックします。

Dlib のインストール

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

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

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

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

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

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  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 で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

    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 で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  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