[PYTHON] Führen Sie OpenVino unter macOS Catalina aus

Was ist das

Nach langer Zeit wollte ich die OpenVino-Demo auf osx ausführen, aber es funktionierte nicht. Ich dachte darüber nach, es in einem Vortrag zu verwenden, aber ich war in Schwierigkeiten, also schaffte ich es, ein Memorandum über die Angelegenheit zu machen.

Umgebung

macOS Catalina(10.15.4) OpenVino(2020.2.117) Python 3.7.5 cmake 3.17.1

Installation

Von hier, holen Sie sich dmg und installieren Sie es. Das Installationsverzeichnis ist / opt / intel. Führen Sie dann das Operation Check Tutorial aus (https://docs.openvinotoolkit.org/2020.2/_docs_install_guides_installing_openvino_macos.html#set-the-environment-variables). Alle anderen, die bisher Probleme hatten.

Führen Sie die Python-Demo aus

Eine vollständige Kopie der Python-Demo.

$ cp -r /opt/intel/openvino/deployment_tools/open_model_zoo/demos/python_demos .

Beginnen wir mit der Demo face_recoginition.

$ cd python_demos/face_recognition_demo/
$ python3 ./face_recognition_demo.py -h
Traceback (most recent call last):
  File "./face_recognition_demo.py", line 24, in <module>
    import cv2
ImportError: dlopen(/opt/intel/openvino_2020.2.117/python/python3/cv2.so, 2): Library not loaded: @rpath/libopencv_ml.4.3.dylib
  Referenced from: /opt/intel/openvino_2020.2.117/python/python3/cv2.so
  Reason: image not found

Atmosphäre, in der eine andere verknüpfte Bibliothek nicht aus opencv von Intel gelesen werden kann. Mal sehen, was los ist.

$ otool -L /opt/intel/openvino_2020.2.117/python/python3/cv2.so
/opt/intel/openvino_2020.2.117/python/python3/cv2.so:
	@rpath/libopencv_ml.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_photo.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_dnn.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_highgui.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_objdetect.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_stitching.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_video.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_videoio.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_imgcodecs.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_calib3d.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_features2d.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_flann.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_imgproc.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	@rpath/libopencv_core.4.3.dylib (compatibility version 4.3.0, current version 4.3.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.4)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1)

Hey, ich habe viele Links, aber das Problem scheint zu sein, dass mir nicht gesagt wurde, was der Pfad ist. Lassen Sie uns die Einstellungen der Umgebungsvariablen überprüfen.

/opt/intel/openvino/opencv/setupvars.sh


export OpenCV_DIR=$INSTALLDIR/opencv/cmake
export LD_LIBRARY_PATH=$INSTALLDIR/opencv/lib:$LD_LIBRARY_PATH

Hmmm, was bedeutet es, dass Sie es nicht verwenden können, obwohl es eingestellt zu sein scheint? Als Ergebnis der Untersuchung scheint es, dass LD_LIBRARY_PATH nicht verwendet werden kann, es sei denn, das System ist nach El Capitan durcheinander, um die Sicherheit zu erhöhen. Am einfachsten ist es, alles, was relevant zu sein scheint, in / usr / local / lib zu speichern, aber ich möchte es nicht tun, da die Deinstallation mühsam sein kann. Es gibt eine Möglichkeit, aus dem Quellcode zu kompilieren, aber das möchte ich auch nicht, da das Kompilieren eines Programms der opencv-Klasse lange zu dauern scheint. Ich kann mir keinen guten Weg vorstellen, also setzen wir den Pfad als Erste Hilfe direkt in die Binärdatei.

$ sudo install_name_tool -add_rpath '/opt/intel/openvino/opencv/lib' /opt/intel/openvino_2020.2.117/python/python3/cv2.so
Password:
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/inference_engine/lib/intel64' /opt/intel/openvino_2020.2.117/python/python3/cv2.so
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/deployment_tools/ngraph/lib' /opt/intel/openvino_2020.2.117/python/python3/cv2.so
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/inference_engine/external/tbb/lib' /opt/intel/openvino/deployment_tools/inference_engine/lib/intel64/libinference_engine_legacy.dylib 
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/inference_engine/lib/intel64' /opt/intel/openvino/deployment_tools/inference_engine/lib/intel64/libMKLDNNPlugin.dylib
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/inference_engine/lib/intel64' /opt/intel/openvino/python/python3.7/openvino/inference_engine/ie_api.so
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/inference_engine/external/tbb/lib' /opt/intel/openvino/python/python3.7/openvino/inference_engine/ie_api.so
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/deployment_tools/ngraph/lib' /opt/intel/openvino/deployment_tools/inference_engine/lib/intel64/libinference_engine.dylib
$ sudo install_name_tool -add_rpath '/opt/intel/openvino/deployment_tools/ngraph/lib' /opt/intel/openvino/deployment_tools/inference_engine/lib/intel64/libinference_engine_legacy.dylib

Es gibt andere, aber jetzt lasse ich es auf dieser Ebene. Wenn etwas erneut passiert, sollte es auf die gleiche Weise gelöst werden. Laden Sie nun das Modell herunter und führen Sie es erneut aus.

$ /opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name face-detection-retail-0004 
$ /opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name landmarks-regression-retail-0009
$ /opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name face-reidentification-retail-0095
$ python3 face_recognition_demo.py \
-m_fd ./intel/face-detection-retail-0004/FP16/face-detection-retail-0004.xml \
-m_lm ./intel/landmarks-regression-retail-0009/FP16/landmarks-regression-retail-0009.xml \
-m_reid ./intel/face-reidentification-retail-0095/FP16/face-reidentification-retail-0095.xml \
--verbose -fg ./test

Es soll chaotisch sein, aber es funktioniert vorerst. Und einige Demos funktionieren nicht (aber ich denke, es ist ein weiteres Problem).

Kompilieren Sie die C ++ - Demo

Wenn Sie während der Installation die Demo security_barrier des Transitrituals ausgeführt haben, sollte sich in Ihrem Home-Verzeichnis ein Verzeichnis inference_engine_demos_build befinden. Dies entspricht / opt / intel / openvino / deploy_tools / open_model_zoo / demos /.

Wenn ich die README-Datei lese, sagen einige Python-Demos, dass native Python-Erweiterungsmodule erforderlich sind. Daher aktiviere ich Python-Module und mache sie.

$ cd ~/inference_engine_demos_build
$ rm CMakeCache.txt
$ cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PYTHON=ON /opt/intel/openvino/deployment_tools/inference_engine/demos
...... weggelassen ...
$ make -j2
...... weggelassen ...
/opt/intel/openvino/deployment_tools/open_model_zoo/demos/multi_channel/common/input.cpp:292:11: error: 
      'getAvgReadTime' overrides a member function but is not marked 'override'
      [-Werror,-Winconsistent-missing-override]
    float getAvgReadTime() const {
          ^
/opt/intel/openvino/deployment_tools/open_model_zoo/demos/multi_channel/common/input.cpp:43:19: note: overridden
      virtual function is here
    virtual float getAvgReadTime() const = 0;
                  ^
3 errors generated.
make[2]: *** [multi_channel/common/CMakeFiles/common.dir/input.cpp.o] Error 1
make[1]: *** [multi_channel/common/CMakeFiles/common.dir/all] Error 2
make: *** [all] Error 2
...... weggelassen ...

Oh? !! Jesus, ich habe ein paar kleine Worte. In einem solchen Fall ist die Durchgangsleistung wichtig. Wenn es nicht funktioniert, denken Sie noch einmal darüber nach. Setzen wir in CMakeCache.txt die Nembutsu-Flagge auf das Ohr des Pferdes.

CMakeCache.txt


...... weggelassen ...
//Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING=-Wno-inconsistent-missing-override
...... weggelassen ...

Führen Sie nun erneut make aus. O.K.Done. Die Details sind mir egal. Die Binärdatei wird unter intel64 / Release erstellt. Die C ++ - Version der Demo funktioniert jetzt, sodass Sie so spielen können, wie sie ist.

Nachwort

Früher bewegte ich mich reibungslos, aber ich hatte große Probleme. OpenVino ist ein PC ohne die GPU von nvidia, und ich möchte so etwas wie eine Demo mit DNN schnell implementieren! Ich denke, es ist sehr praktisch, wenn Sie Schülern, die hauptsächlich Macbooks verwenden, den Ort zeigen möchten, an dem sie sich schnell bewegen, aber es gibt nicht viele Informationen über macOS ... ・. Ich frage mich, ob es nicht viele Leute gibt, die es benutzen. Ich habe bemerkt, als ich den Satz geschrieben habe, aber der Mac unterstützt keine eingebauten HD-Grafiken! Der besondere Verdienst ist ... Ich hoffe, Sie werden so schnell wie möglich antworten.

Da der Pfad aller Bibliotheken nicht übergeben wird, kann es in Zukunft zu demselben Problem kommen, das Sie jedoch mit der oben beschriebenen Methode durchbrechen können. Ich würde wirklich gerne Umgebungsvariablen verwenden können, bin mir aber über das aktuelle macOS nicht sicher. Eine großartige Person zum Unterrichten.

aktualisieren

2020.5.19 Bestätigt mit macOS 10.15.4. C ++ - Programme funktionieren nur, wenn rpath festgelegt ist. Ändern Sie daher die Reihenfolge und Ausführung von Python. Fehlende Pfadeinstellungen hinzugefügt.

Recommended Posts

Führen Sie OpenVino unter macOS Catalina aus
Führen Sie OpenVino unter macOS und pyenv und pipenv aus
Installieren Sie Python unter 3.5.3 unter macOS Catalina
Wenn Fabric unter macOS Catalina unbrauchbar wird
Führen Sie die Pip-Installation unter MacOS Python 3.7 oder höher aus
Installieren Sie Python 3 unter MacOS Catalina (nur mit Homebrew)
Installieren Sie Python und Bibliotheken für Python unter MacOS Catalina
Führen Sie Django auf PythonAnywhere aus
Führen Sie mysqlclient auf Lambda aus
Führen Sie OpenMVG auf einem Mac aus
Memo zum Erstellen einer Python-Entwicklungsumgebung mit macOS Catalina
Führen Sie Jupyter unter Ubuntu unter Windows aus
Führen Sie Openpose unter Python (Windows) aus.
Verwenden Sie Python 3, das vom Befehlszeilentool unter macOS Catalina eingeführt wurde
Installieren Sie OpenPose auf einem Mac (Catalina)
Führen Sie Pythons CGI auf CORESERVER aus
Führen Sie den Unix-Befehl auf Python aus
Führen Sie IPython Notebook auf Docker aus
Catalina auf Mac und Pyenv
Führen Sie YOLO v3 unter AWS v2 aus
Führen Sie Jupyter Notebook unter Windows aus
Führen Sie YOLO v3 unter AWS aus
Führen Sie MuJoCo auf WSL (2) aus (auch GUI)
Installieren Sie Dropbox und führen Sie es unter Ubuntu 20.04 aus
Vorbereiten des Betriebs von Flask auf EC2
Erste Schritte mit MicroPython (unter macOS)
Führen Sie Tensorflow mit nativer Unterstützung für Windows aus
So installieren Sie das Graph-Tool unter macOS
Führen Sie einen Linux-Server mit GCP aus
Führen Sie Python planmäßig auf AWS Lambda aus
Wie man Matplotlib auf Heroku ausführt
Führen Sie SwitchBot mit Bleak unter Windows 10 aus
Führen Sie Matplotlib auf einem Docker-Container aus
Aufbau einer Python-Entwicklungsumgebung unter macOS
Führen Sie Headless-Chrome auf einem Debian-basierten Image aus
Führen Sie XGBoost unter Bash unter Ubuntu unter Windows aus
Führen Sie TensorFlow2 auf dem VPS-Server aus
Führen Sie den VMware Horizon Client unter Debian aus
[Hinweis] Führen Sie Django unter Amazon Linux 2 aus
Führen Sie Keras auf Google Colaboratory TPU aus
Führen Sie Yocto unter Ubuntu mit QEMU aus.
[Python] Pip unter macOS verfügbar machen
Installieren Sie Java2Python unter macOS High Sierra (10.13)
Führen Sie Sesame auf Sonys PaSoRi (RCS370) aus.
Führen Sie Python regelmäßig auf Heroku Scheduler aus
Führen Sie cron unter Amazon Linux aus (unter Linux eingestellt).