トップページ -> データベース関連技術 -> 顔検出、顔識別 -> Dlib で、画像を使っての学習と画像認識の手順(付属の imglab を使用)
[サイトマップへ], [サイト内検索へ]

Dlib で、画像を使っての学習と画像認識の手順(付属の imglab を使用)

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

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

サイト内の関連ページ

謝辞

Dlib の作者に感謝します


Python のインストール,pip と setuptools の更新,Python 開発環境(JupyterLab, spyder, nteract)のインストール

Windows の場合

  1. Python のインストール

    Python の URL: http://www.python.org/

    インストール手順の詳細は: 別ページで説明している.

  2. pip と setuptools の更新,Python 開発環境(JupyterLab, spyder, nteract)のインストール(Windows 上)

    コマンドプロンプトを管理者として実行し,次のコマンドを実行.

    Windows での pip の実行では,コマンドプロンプトを管理者として実行することにする。

    [image]

    python -m pip install -U pip setuptools
    python -m pip install -U jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder
    

Ubuntu の場合

システム Python を使用(インストール操作は不要)

  1. pip と setuptools の更新,Python 開発環境(JupyterLab, spyder, nteract)のインストール(Ubuntu 上)

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

    sudo apt -y install python3-dev python3-pip python3-setuptools python3-venv
    sudo pip3 uninstall ptyprocess sniffio terminado tornado jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder
    sudo apt -y install jupyter jupyter-qtconsole spyder3
    sudo apt -y install python3-ptyprocess python3-sniffio python3-terminado python3-tornado 
    sudo pip3 install -U jupyterlab nteract_on_jupyter
    

Dlib のインストール

Dlib は C:\pytools\dlib にインストールされているとする

cmake のインストール

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

Windows の場合

Windows では「python」を使う,Ubuntu では「python3」を使う.

※ 「pip install ...」は,Python パッケージをインストールするための操作.

python -m pip install -U
python -m pip install -U numpy scikit-image

Ubuntu の場合

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

imglab のインストール

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

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

    [image]
  2. 次のコマンドを実行
    cd C:\pytools\dlib
    cd tools\imglab
    rmdir /s /q build
    mkdir build
    cd build
    cmake -G "Visual Studio 16 2019" -A x64 -T host=x64 ^
        -DCMAKE_INSTALL_PREFIX="C:\pytools\dlib" ..
    cmake --build . --config RELEASE 
    cmake --build . --config RELEASE --target INSTALL 
    

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

[image]

※ ここで,「C:\pytools\dlib」は,Dlib をインストールしたディレクトリに読み替えること。

※ まだ Dlib のインストールを行っていないときは、 Dlib のインストールを行うこと.


imglab を使ってみる

  1. 画像を数枚準備する

    [image]

    [image]

    [image]
  2. 準備した画像ファイルを,次のディレクトリに置く
    C:\pytools\dlib\tools\imglab\Release
    

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

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

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

    C:
    cd C:\pytools\dlib\tools\imglab\Release
    .\imglab.exe -c mydata.xml .
    

    [image]
  4. 生成された .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 をダウンロード

    写真は https://ccphotosearch.com/ を利用して、クリエイティブコモンズのものを使用.領域指定は手作業で実施.

  2. ダウンロードした Release.zip ファイルを展開(解凍)する.分かりやすいディレクトリに置く.

    ※ Windows での展開(解凍)のためのソフトには,「7-Zip」などがある.

    [image]
  3. 展開してできたファイルを、まるごと C:\pytools\dlib\tools\imglab\Release にコピー

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

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

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

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

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

    C:
    cd C:\pytools\dlib\tools\imglab\Release
    .\imglab.exe training.xml
    

    [image]

    [image]
  6. imglab を閉じる
  7. 学習を行う(学習データの生成)

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

    py C:\pytools\dlib\python_examples\train_object_detector.py .
    

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

    [image]

    [image]
  9. 次のプログラムファイルを作り、 C:\pytools\dlib\tools\imglab\Release の下に hoge.py のようなファイル名で保存

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

    import os
    import sys
    import glob
    
    import dlib
    from skimage import io
    
    if len(sys.argv) != 2:
        exit()
    f = sys.argv[1]
    
    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()
    
  10. Windows のコマンドプロンプトを開く
  11. プログラムの実行
    py hoge.py 5920652345_5be61ae940.jpg
    

    [image]

    以上、学習と、画像の識別を示した(上の犬の写真では、画像の識別がうまくいっていない)

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

本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]