前提・実現したいこと
初心者です、ご助言でいただければと思います。
顔の姿勢推定をしてみたく、head-pose-estimationのコードを以下のgithubから落としてきました。
https://github.com/yinguobing/head-pose-estimation
しかし、以下のエラーが出て、うまく動かすことができません。
指定したビデオに対して、ビデオ内の人物の顔の向きを推定するプログラムです。
発生している問題・エラーメッセージ
$ python3 estimate_head_pose.py --video /Users/home/head-pose-estimation/video.MP4 OpenCV version: 3.3.1 2020-04-20 10:48:50.699505: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA WARNING:tensorflow:From /Users/tamada/head-pose-estimation_1/mark_detector.py:82: load (from tensorflow.python.saved_model.loader_impl) is deprecated and will be removed in a future version. Instructions for updating: This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.loader.load or tf.compat.v1.saved_model.load. There will be a new function for importing SavedModels in Tensorflow 2.0. WARNING:tensorflow:From /Users/home/.pyenv/versions/pose_estimation/lib/python3.5/site-packages/tensorflow/python/training/saver.py:1276: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version. Instructions for updating: Use standard file APIs to check for files with this prefix. objc[86085]: +[NSMutableString initialize] may have been in progress in another thread when fork() was called. objc[86085]: +[NSMutableString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
この状態から、ターミナルが動かなくなります。
control+cで中断すると、以下が出てきます。
^CTraceback (most recent call last): File "estimate_head_pose.py", line 161, in <module> main() File "estimate_head_pose.py", line 103, in main facebox = box_queue.get() File "/Users/home/.pyenv/versions/3.5.3/lib/python3.5/multiprocessing/queues.py", line 94, in get res = self._recv_bytes() File "/Users/home/.pyenv/versions/3.5.3/lib/python3.5/multiprocessing/connection.py", line 216, in recv_bytes buf = self._recv_bytes(maxlength) File "/Users/home/.pyenv/versions/3.5.3/lib/python3.5/multiprocessing/connection.py", line 407, in _recv_bytes buf = self._recv(4) File "/Users/home/.pyenv/versions/3.5.3/lib/python3.5/multiprocessing/connection.py", line 379, in _recv chunk = read(handle, remaining) KeyboardInterrupt
試したこと
最初は、tensorflowのバージョンが良くないのかと思いupdateしてみましたが、違うエラーが出てきてさらに混乱をしました。そこで、tensorflowのバージョンを戻し実行をしてみました。
load()の辺りに問題があるように感じるのですが、修正の方法を見つけることができませんでした。
進んでいるのか、そうでないのかもよくわかりません。
試したことその2
エラー中の
objc[86085]: +[NSMutableString initialize] may have been in progress in another thread when fork() was called.
の部分を検索してみると以下のようなサイトを見つけました↓
https://stackoverflow.com/questions/52671926/rails-may-have-been-in-progress-in-another-thread-when-fork-was-called
そこで、
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
の1行をbash_profileに追記し反映してみましたが、上に書いたものと全く同じエラーが出力されました。
補足情報(FW/ツールのバージョンなど)
githubのページ:https://github.com/yinguobing/head-pose-estimation
PC:macos 10.15.4
python:3.5.3
Tensorflow:1.14
opencv:3.3.1.11
numpy:1.16.4
githubのREADMEに書いてある環境となるべく合わせるようにしました。
osはubuntuではなくmacOSを使用しています。
試し切れていないことがまだまだ多くあると思います、、、
よろしくお願いします!!
また、他にうまく動かしやすい姿勢推定のプログラムがありましたら、教えていただけたらと思います!!!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。