初めてOpenFaceを開いて人の顔の画像の対比をします
6318 ワード
一.pythonのインストール
二.gitのインストール
三.c++標準ライブラリのインストール
四.OpenFaceコードのダウンロード
五.OpenCVインストール
六.パッケージ管理ツールpipのインストール
エラーが発生したらpipを更新します
pipアップグレード後のImport Error:cannot import name main
方法1:
元のfrom pip import mainをfrom pip._に置き換えます.internal import main
方法2:
もとの
置換:
from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main())
注意:それでもエラーが発生した場合はpipを再ロードします.
七.依存PYTHONライブラリのインストール
八.luarocks-Luaパッケージマネージャをインストールし、Luaパッケージ依存、サードパーティLuaパッケージのインストールなどの機能を管理するコマンドラインを提供します.
九.TORCH-科学計算フレームワークをインストールし、機械学習アルゴリズムをサポートする
十.torch 7で設定した先ほどの環境変数を有効にします.
十一.依存LUAライブラリのインストール
次はオプションで、関数やメソッドが使用される場合があります.
十二.OpenFaceコードのコンパイル
十三事前トレーニング後のデータのダウンロード
ここまでインストールすべてがうまくいけばインストールが完了しても
demo
コードlogpy
このコードは、別のpyコード呼び出しのために、端末が出力情報を印刷するように構成するために使用される.
face_compare.py
ここでは実際に顔をマッチングするコードです.
注:このコードでは、次のパラメータを変更します.
dlib_model_dir = '/home/xxx/openface/models/dlib' openface_model_dir = '/home/xxx/openface/models/openface'
十四:運転
2枚の図を比較します.
フォルダ内のすべての画像を比較します.
二.gitのインストール
sudo apt-get install git
三.c++標準ライブラリのインストール
sudo apt-get install libboost-dev
sudo apt-get install libboost-python-dev
四.OpenFaceコードのダウンロード
git clone https://github.com/cmusatyalab/openface.git
五.OpenCVインストール
sudo apt-get install libopencv-dev
sudo apt-get install python-opencv
六.パッケージ管理ツールpipのインストール
sudo apt install python-pip
エラーが発生したらpipを更新します
pip install --upgrade pip
pipアップグレード後のImport Error:cannot import name main
方法1:
sudo gedit /usr/bin/pip
元のfrom pip import mainをfrom pip._に置き換えます.internal import main
方法2:
sudo gedit /usr/bin/pip
もとの
from pip import main
if __name__ == '__main__':
sys.exit(main())
置換:
from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main())
注意:それでもエラーが発生した場合はpipを再ロードします.
pip install pyopenssl
七.依存PYTHONライブラリのインストール
cd openface
sudo pip install -r requirements.txt
sudo pip install dlib
sudo pip install matplotlib
八.luarocks-Luaパッケージマネージャをインストールし、Luaパッケージ依存、サードパーティLuaパッケージのインストールなどの機能を管理するコマンドラインを提供します.
sudo apt-get install luarocks
九.TORCH-科学計算フレームワークをインストールし、機械学習アルゴリズムをサポートする
git clone https://github.com/torch/distro.git ~/torch --recursive
cd torch
bash install-deps
./install.sh
十.torch 7で設定した先ほどの環境変数を有効にします.
source ~/.bashrc
十一.依存LUAライブラリのインストール
luarocks install dpnn
次はオプションで、関数やメソッドが使用される場合があります.
luarocks install image
luarocks install nn
luarocks install graphicsmagick
luarocks install torchx
luarocks install csvigo
十二.OpenFaceコードのコンパイル
python setup.py build
sudo python setup.py install
十三事前トレーニング後のデータのダウンロード
cd openface
./models/get-models.sh
ここまでインストールすべてがうまくいけばインストールが完了しても
demo
コードlogpy
このコードは、別のpyコード呼び出しのために、端末が出力情報を印刷するように構成するために使用される.
import logging
import sys
# logger , root logger
logger = logging.getLogger('Test')
# logger
formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')
#
# file_handler = logging.FileHandler("test.log")
# file_handler.setFormatter(formatter) # setFormatter
#
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter # formatter
# logger
# logger.addHandler(file_handler)
logger.addHandler(console_handler)
# , WARN
logger.setLevel(logging.INFO)
face_compare.py
ここでは実際に顔をマッチングするコードです.
import time
start = time.time()
import cv2
import itertools
import os
import numpy as np
import openface
import argparse
from log import logger
dlib_model_dir = '/home/xhb/ /Packages/openface/models/dlib'
openface_model_dir = '/home/xhb/ /Packages/openface/models/openface'
parser = argparse.ArgumentParser()
parser.add_argument('imgs', type=str, nargs='+', help='Input images.')
parser.add_argument('--dlibFacePredictor', type=str, help="Path to dlib's face predictor.", default=os.path.join(dlib_model_dir, "shape_predictor_68_face_landmarks.dat"))
parser.add_argument('--networkModel', type=str, help="Path to Torch network model.", default=os.path.join(openface_model_dir, 'nn4.small2.v1.t7'))
parser.add_argument('--imgDim', type=int, help="Default image dimension.", default=96)
parser.add_argument('--verbose', action='store_true')
args = parser.parse_args()
if args.verbose:
logger.info("Argument parsing and loading libraries took {} seconds.".format(time.time() - start))
start = time.time()
align = openface.AlignDlib(args.dlibFacePredictor)
net = openface.TorchNeuralNet(args.networkModel, args.imgDim)
if args.verbose:
logger.info("Loading the dlib and OpenFace models took {} seconds.".format(
time.time() - start))
def getRep(imgPath):
if args.verbose:
logger.info("Processing {}.".format(imgPath))
bgrImg = cv2.imread(imgPath)
if bgrImg is None:
raise Exception("Unable to load image: {}".format(imgPath))
rgbImg = cv2.cvtColor(bgrImg, cv2.COLOR_BGR2RGB)
if args.verbose:
logger.info("Original size: {}".format(rgbImg.shape))
start = time.time()
faceBoundingBox = align.getLargestFaceBoundingBox(rgbImg)
if faceBoundingBox is None:
raise Exception("Unable to find a face: {}".format(imgPath))
if args.verbose:
logger.info("Face detection took {} seconds.".format(tim.time() - start))
start = time.time()
alignedFace = align.align(args.imgDim, rgbImg, faceBoundingBox, landmarkIndices=openface.AlignDlib.OUTER_EYES_AND_NOSE)
if alignedFace is None:
raise Exception("Unable to align image: {}".format(imgPath))
if args.verbose:
logger.info("Face alignment took {} seconds.".format(time.time() - start))
start = time.time()
rep = net.forward(alignedFace)
if args.verbose:
logger.info("OpenFace forward pass took {} seconds.".format(time.time()-start))
logger.info("Representation:")
logger.info(rep)
return rep
for (img1, img2) in itertools.combinations(args.imgs, 2):
distance = getRep(img1) - getRep(img2)
logger.info("Comparing {} with {}.".format(img1, img2))
logger.info("Squared l2 distance between representations: {:0.3f}".format(np.dot(distance, distance)))
注:このコードでは、次のパラメータを変更します.
dlib_model_dir = '/home/xxx/openface/models/dlib' openface_model_dir = '/home/xxx/openface/models/openface'
十四:運転
2枚の図を比較します.
python ./demos/compare.py test_images/3.jpg test_images/4.jpg
フォルダ内のすべての画像を比較します.
python ./face_compare.py test_images/*