Dlib入門

Dlib入門

1 概要

  • お手軽に顔のパーツを検出出来る素晴らしいライブラリ
  • 画像認識他多数の機能あり

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 .. 
  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(ファイル名)
  1. 画像の表示
    win = dlib.image_window() # window作成
    win.set_image(画像)       # 画像表示
    
  2. サンプルプログラム
    • 顔の画像はパブリックドメインの福沢諭吉さんの画像”Yukichi_Fukuzawa_1891.png”を使ってます。他の顔画像でもOK
    import dlib
    img=dlib.load_rgb_image("Yukichi_Fukuzawa_1891.png")
    win = dlib.image_window()
    win.set_image(img)
    

4.3 この章のまとめ

  • dlibの機能をつかって、ファイルの読み込みと、表示を行った。

5 顔認識

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.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 画像ファイルの読み込みと表示, 顔認識, 顔のランドマーク検出 の章追加

著者: NM Max

Created: 2021-02-16 火 14:07

Validate

CERN ROOT v6-22-00(2020/07/09 最新リリースバージョン) インストール

CERN ROOT v6-22-00(2020/07/09 最新リリースバージョン) インストール

1 概要

  • 超有名なCERNで利用されている、C++インタプリタ+膨大なライブラリのROOTシステム
  • 昔はCINTという日本人作のC++インタプリタがコアだった、今はCINTからCling(LLVMのもの)におきかえられている

2 リンク

3 Ubuntu(20.04)でコンパイル、インストール

3.1 以下の操作を行っている動画


3.2 CERN ROOT のインストール 手順

3.2.1 依存パッケージのインストール

sudo apt install lsb-core cmake make binutils libx11-dev libxpm-dev libxft-dev libxext-dev
sudo apt install gfortran libssl-dev libpcre2-dev libegl1-mesa-dev libglu1-mesa-dev libglew-dev libftgl-dev libmysqlclient-dev fftw-dev libcfitsio-dev libgraphviz-dev  libavahi-compat-libdnssd-dev libldap2-dev python3-dev libxml2-dev libgsl-dev
sudo apt-get install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev python3
sudo apt-get install gfortran libssl-dev libpcre3-dev xlibmesa-glu-dev libglew1.5-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio-dev graphviz-dev libavahi-compat-libdnssd-dev libldap2-dev python3-dev libxml2-dev libkrb5-dev libgs-dev qt5-default

3.2.2 ソースゲット

git clone --branch v6-22-00-patches https://github.com/root-project/root.git root_src

3.2.3 ソースバックアップ

tar czf root_src_v6-22-00-patches.tgz root_src/

3.2.4 コンパイル

mkdir v6-22-00-build v6-22-00
cd v6-22-00-build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/root/v6-22-00 /opt/root/root_src 2>&1 | tee ./log001.txt
cmake --build . --target install 2>&1 | tee log002.txt
  • これでコンパイルが実行される、私のマシンで約3.5時間程度必要になった

3.3 バックアップ(インストールしたファイル群と、ビルドしたファイル群)

cd ..
tar cvzf v6-22-00.000.tgz v6-22-00/
tar cvzf v6-22-00-build.000.tgz v6-22-00-build/

3.4 動作確認

source v6-22-00/bin/thisroot.sh 
root
  • 上のコマンドで、環境の設定、ROOTの起動。以下の画面が表示された
   ------------------------------------------------------------------
  | Welcome to ROOT 6.22/01                        https://root.cern |
  | (c) 1995-2020, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for linuxx8664gcc on Jul 09 2020, 12:45:00                 |
  | From heads/v6-22-00-patches@v6-22-00-41-gc1502e9d23              |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q'       |
   ------------------------------------------------------------------

root [0] 
  • テストで以下を入力
cout << 1+2 << endl
  • 以下が表示された
root [0] cout << 1+2 << endl
3
(std::basic_ostream<char, std::char_traits<char> >::__ostream_type &) @0x7f9081c39480
root [1] 
  • .quitと入力しEnterキーで終了
root [1] .quit

3.5 この章のまとめ

  • CERNのROOTをソースをコンパイルしてインストールしてみた

4 今後

  • 今後も文書追加していきます。

5 この文書のチェンジログ

  • 2020/07/09 初版

著者: NM Max

Created: 2020-07-09 木 20:46

Validate