Funktioniert CoreML Tools + macOS High Sierra nur mit Apple Python?

Ich verwende CoreML Tools, um ein in Keras erstelltes trainiertes Modell auf iOS zu portieren. Die Genauigkeitsrate hat sich erheblich verschlechtert, daher wurde mir gesagt, ich solle auf High Sierra aktualisieren, als ich versuchte, "MLModel # Predict ()" auszuführen, um es auf meinem PC zu überprüfen. Ich konnte nicht anders, also habe ich es aktualisiert, aber die Situation hat sich verschlechtert, also habe ich ein Memorandum gemacht.

Annahme

Was ich getan habe

1. Aktualisieren Sie auf macOS High Sierra Beta 4

Laden Sie es vom Apple-Entwicklerportal herunter und installieren Sie es. Über 40 Minuten?

2. Versuchen Sie, das Modell zu laden

>>> model = coremltools.models.MLModel('HogeModel.mlmodel')  
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6

Fehler beim Laden des Modells

Als ich es in Eile versuchte, trat der gleiche Fehler beim Konvertieren des Modells auf (um genau zu sein, "MLModel # save ()" beim Speichern).

Wenn man sich den Fehler ansieht, scheint es, dass CoreML Tools für die von macOS gebündelte Version von Python ist. http://qiita.com/hatchinee/items/b16ee02b3c93603aee0c

Es schien, dass install_name_tool verwendet werden könnte, wenn die Details des Objekts bekannt wären, das den Fehler auslöste. Da ich jedoch das Innere von CoreML Tools nicht gut verstand (weil ich keine Zeit hatte), wechselte ich vorerst zur gebündelten Version von Python (/ usr / bin / python).

3. Wechseln Sie zur gebündelten Version von Python (/ usr / bin / python) (auf halbem Weg).

Es hat jedoch nicht funktioniert, da die alten Einstellungen von Pyenv beibehalten wurden. Daher habe ich die gebündelte Version mit dem vollständigen Pfad aufgerufen und nur pip neu installiert. Es ist schwer, also muss ich diesen Bereich bald reinigen.

$ which python
/usr/local/bin/python
$ python --version
Python 2.7.13

$ /usr/bin/python --version
Python 2.7.10

$ which pip
/usr/local/bin/pip
$ pip --version
pip 9.0.1 from /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)

Wenn die Pyenv-Umgebung nicht schmutzig wäre, könnte ich einfach zum System wechseln ...

4. Gesicht SIP

Abhängige Bibliotheken (Coremltools, Keras, Tensorflow, Numpy, H5Py) müssen neu installiert werden, aber High Sierra kann aufgrund von SIP (rootless) wie Sierra nicht mit Pip installiert werden. Ich mag das nicht und renne zur Homebrew-Version, aber diesmal passiert es nicht, also renne ich vorerst mit der Option "--user" davon.

$ pip install --user tensorflow coremltools

Wenn Sie / Users / Benutzername / Library / Python / 2.7 / lib / python / site-packages mit Python 2.7 (für den täglichen Gebrauch) wie der Homebrew-Version verwenden, ist das Installationsziel betroffen Sie müssen die Richtung der Option "--user" ändern. http://qiita.com/ronin_gw/items/cdf8112b61649ca455f5 oder so?

In meinem Fall hat sich die Homebrew-Version an "/ usr / local / lib / python2.7 / site-packages" gewandt, daher sollte dies vorerst in Ordnung sein. .. ..

4. Bestätigung der fehlgeschlagenen Verarbeitung

Das Laden selbst war erfolgreich, aber die Ausführung der wesentlichen Argumentation schlug fehl.

>>> result = model.predict({'image': x})
~ Ausgelassen ~
Exception: Unable to load CoreML.framework. Cannot make predictions.

Ist es doch nutzlos?

Impressionen

――Während ich denke, dass es nicht geholfen werden kann, weil ich die Funktionen des Betriebssystems verwenden werde, ist das Bündeln der Python-Bindung und der 2.7-Bindung problematisch. .. .. ――Beachten Sie, dass CoreML Tools einige Mitglieder zu haben scheint, die Methoden oder ziemlich drastisch sind, selbst wenn Sie sich die offizielle API-Referenz ansehen. ――Ich möchte so schnell wie möglich die volle Funktionalität ausprobieren.

Recommended Posts

Funktioniert CoreML Tools + macOS High Sierra nur mit Apple Python?
Installieren Sie Python 3 unter MacOS Catalina (nur mit Homebrew)
"Apple-Verarbeitung" mit OpenCV3 + Python3
Suchmaschinen arbeiten mit Python
5 Einfach zu verwendende Python-Tools | Steigern Sie die Arbeitseffizienz
Wenn matplotlib nicht mit python2.7 funktioniert
Installieren Sie Java2Python unter macOS High Sierra (10.13)