dlibのface_recognitionでハマったメモ
dlibの顔検出機能を簡単に使えるようにしたライブラリface_recognitionを試した時に環境構築でハマったので忘れないうちにメモ。
顔検出でググるとopencvのhaarlikecascadeが多量に引っかかりますが、本ライブラリで使えるhog+svmとcnnを用いた方が精度は良いです。hog+svmはopencvでも使えるけどface_recognitionは数行で使えて簡単!(環境構築が簡単とは言っていない)
検出率比較や使い方は下記記事を参照してください。
エラー内容
ImportError: dlopen(/Users/hisafi/.anyenv/envs/pyenv/versions/anaconda3-4.3.0/envs/face_detector/lib/python3.5/site-packages/dlib/dlib.so, 2): Symbol not found: _PyClass_Type Referenced from: /usr/local/opt/boost-python/lib/libboost_python-mt.dylib Expected in: flat namespace
からの
File "/Users/hisafi/.anyenv/envs/pyenv/versions/anaconda3-4.3.0/envs/face_reco/lib/python3.5/site-packages/dlib/__init__.py", line 1, in <module> from .dlib import * ImportError: dlopen(/Users/hisafi/.anyenv/envs/pyenv/versions/anaconda3-4.3.0/envs/face_reco/lib/python3.5/site-packages/dlib/dlib.so, 2): Library not loaded: /usr/local/opt/boost-python/lib/libboost_python-mt.dylib Referenced from: /Users/hisafi/.anyenv/envs/pyenv/versions/anaconda3-4.3.0/envs/face_reco/lib/python3.5/site-packages/dlib/dlib.so Reason: image not found
対処方法
上段のエラーは、python-boostをインストールする際のpythonバージョンが異なると発生するエラーのようです。
Installation issue on the Mac · Issue #168 · ageitgey/face_recognition · GitHub
homebrew使っていると発生するエラーなのかな。
一旦boost-pythonをアンインストールしてpython3指定でインストールすることで下段のエラーに進化することができます。
brew install boost-python --with-python3 --without-python
下段のエラーは、face_recognitionで使用しているboost-pythonの名称がpython3対応していないためです。
python3指定でインストールしたboost-pythonは3がつくので、シンボリックリンクを貼り付けてあげると解決します。
ln -s libboost_python3-mt.dylib libboost_python-mt.dylib
さいごに
これ
プログラミング pic.twitter.com/BsXV1sQ5aU
— エクシリ/石井晃 (@exilias) 2017年9月5日
それじゃ!