Dlib入門
目次
1 概要
- お手軽に顔のパーツを検出出来る素晴らしいライブラリ
- 画像認識他多数の機能あり
2 関連文書
- 本家 http://dlib.net/
- GitHub https://github.com/davisking/dlib
- ダウンロード http://dlib.net/files/
- Pythonの例https://github.com/davisking/dlib/tree/master/python_examples
- NDK https://developer.android.com/ndk?hl=ja
- NDK ガイド https://developer.android.com/ndk/guides?hl=ja
- ネイティブ API https://developer.android.com/ndk/guides/stable_apis?hl=ja
- 他のビルドシステムで NDK を使用する https://developer.android.com/ndk/guides/other_build_systems?hl=ja
- スタンドアロン ツールチェーン(非推奨) https://developer.android.com/ndk/guides/standalone_toolchain?hl=ja
- CMake https://developer.android.com/ndk/guides/cmake?hl=ja
- NDK ガイド https://developer.android.com/ndk/guides?hl=ja
3 インストール
- Pythonをインストールしてから、pip install dlibで、自動でコンパイルして、Pythonから使えるようになる(Linux,Windows,Mac等)
3.1 以下の操作を行っている動画
3.2 2021/02/05時点で最新のdlibをUbuntu20.04にコンパイルインストールする 手順
- 作業用のディレクトリに移動してから以下の操作を行う
3.2.1 Python用のパッケージインストール(Ubuntu20.04)
- Ubuntu20.04以外(WindowsやMac)はPythonをインストールして、pip install dlibでコンパイルインストール出来るはず
- Windowsの場合はコンパイラも必要かも
- DockerでUbuntuを動かして、そこに入れる方法なら、同じ手順でいける
- DockerのUbuntu:20.04で確認したところ、以下をいれておけば、Dlibをコンパイル、インストール可能(もっと入れておけば良いのあるかも)
sudo apt update apt install git clang cmake make sudo python3-virtualenv python3-dev libpng-dev lldb python3-pip python-numpy libboost-dev python3-scipy python3-opencv
3.2.2 Python用のパッケージインストール
- 以下のコマンドで自動でダウンロードしてコンパイルし、Pythonから使えるようになる
- virtualenv環境でやる方が良いかも(私はそうした)
pip3 install dlib or pip install dlib
3.2.3 virtualenv 作成コマンド例(名前がkivy_buildozerなら)
virtualenv kivy_buildozer
- 作成したvirtualenvに入る
source kivy_buildozer/bin/activate
3.2.4 githubからゲットしてコンパイル
- 作業用のディレクトリに移動して以下を実行(静的ライブラリ)
git clone https://github.com/davisking/dlib cd dlib mkdir build cd build cmake .. make
- cmake .. を以下にすると、動的ライブラリ
cmake -DBUILD_SHARED_LIBS=1 ..
- pybind11(python用の動的ライブラリをコンパイルする手順)
- python setup.py build でもコンパイルできる(これで、どのようなコマンドでコンパイル可能か調べた)
- virtualenvの場合は/usr/bin/python3 ではなく、which pythonとかwhich python3で確認したpythonにした方がよさげ(未確認)
git clone https://github.com/davisking/dlib cd dlib cmake tools/python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=build/lib.linux-x86_64-3.8 -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Release make
3.3 この章のまとめ
- Pythonから使えるようにインストールする手順を紹介
- GitHubからソースゲットしてコンパイルする手順も紹介
4 画像ファイルの読み込みと表示
4.1 以下の操作を行っている動画
4.2 画像ファイルの読み込みと表示手順
4.2.1 画像ファイルの読み込み
- これで読み込める
dlib.load_rgb_image(ファイル名)
4.3 この章のまとめ
- dlibの機能をつかって、ファイルの読み込みと、表示を行った。
5 顔認識
- 複数の顔認識が可能なようですが、外部ファイル不要なタイプをこの章ではやります。
5.1 関係文書
5.2 以下の操作を行っている動画
5.3 顔認識の手順
5.3.1 顔認識
detector = dlib.get_frontal_face_detector() dets = detector(画像データ, 1)
5.3.2 プログラム例
import dlib img=dlib.load_rgb_image("Yukichi_Fukuzawa_1891.png") detector = dlib.get_frontal_face_detector() dets = detector(img, 1) win = dlib.image_window() win.set_image(img) win.add_overlay(dets)
5.4 この章のまとめ
- dlibの機能をつかって、顔認識と、認識箇所の描画を行った。
6 顔のランドマーク検出
6.1 関係文書
6.2 以下の操作を行っている動画
6.3 顔のランドマーク検出 の手順
6.3.1 検出器に必要なファイルダウンロード
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
- 解凍(ここではこのコマンドつかってるけど、他のツールで解凍してもOK)
bzcat shape_predictor_68_face_landmarks.dat.bz2 > shape_predictor_68_face_landmarks.dat
6.3.2 Dlibでの顔のランドマーク検出のやりかた
- predictorの作成
predictor = dlib.shape_predictor(ランドマーク検出用datファイル)
- 検出
- 顔のある場所はrectangleで渡す
shape = predictor(画像データ, 顔のある場所)
6.3.3 プログラム例
- 顔の画像はパブリックドメインの福沢諭吉さんの画像”Yukichi_Fukuzawa_1891.png”を使ってます。他の顔画像でもOK
import dlib img=dlib.load_rgb_image("Yukichi_Fukuzawa_1891.png") predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") detector = dlib.get_frontal_face_detector() dets = detector(img, 1) win = dlib.image_window() win.set_image(img) win.add_overlay(dets) shapes=[] for k, d in enumerate(dets): shapes.append(predictor(img, d)) win.add_overlay(shapes[k])
6.4 この章のまとめ
- dlibの機能をつかって、顔のランドマーク検出を行って、結果を表示した。
7 次のまだ書いてない章
7.0.1 追加パッケージインストール
pip install immutils opencv-python Pillow ipython matplotlib
8 今後
- 今後も文書追加していきます。
9 この文書のチェンジログ
- 2021/02/06 初版
- 2021/02/16 画像ファイルの読み込みと表示, 顔認識, 顔のランドマーク検出 の章追加
Created: 2021-02-16 火 14:07