CoreML Tools + macOS High Sierra fonctionne-t-il uniquement avec Apple Python?

J'utilise CoreML Tools pour porter un modèle entraîné créé dans Keras vers iOS. Le taux de précision s'est considérablement détérioré, alors on m'a dit de mettre à jour vers High Sierra lorsque j'ai essayé de faire MLModel # predict () pour le vérifier sur mon PC. Je n'ai pas pu m'en empêcher, alors je l'ai mis à jour, mais la situation s'est aggravée, alors j'ai rédigé un mémorandum.

supposition

Ce que j'ai fait

1. Mettre à jour vers macOS High Sierra beta 4

Téléchargez et installez à partir du portail des développeurs d'Apple. Environ 40 minutes?

2. Essayez de charger le modèle

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

Erreur lors du chargement du modèle

Quand je l'ai essayé à la hâte, la même erreur s'est produite pour la conversion du modèle (pour être exact, MLModel # save () pour le processus d'enregistrement).

En regardant l'erreur, il semble que CoreML Tools soit destiné à la version fournie avec macOS de Python. http://qiita.com/hatchinee/items/b16ee02b3c93603aee0c

Il semblait que install_name_tool pouvait être utilisé si les détails de l'objet qui lançait l'erreur étaient connus, mais comme je ne comprenais pas bien l'intérieur de CoreML Tools (parce que je n'avais pas le temps), je suis passé à la version fournie de Python (/ usr / bin / python) pour le moment.

3. Basculez vers la version intégrée de Python (/ usr / bin / python) (à mi-chemin)

Cependant, cela n'a pas fonctionné car les anciens paramètres de Pyenv sont restés, j'ai donc appelé la version fournie avec le chemin complet et réinstallé uniquement pip. C'est difficile donc je dois nettoyer cette zone bientôt.

$ 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)

Si l'environnement pyenv n'était pas sale, pourrais-je simplement passer au système ...

4. Face SIP

Les bibliothèques dépendantes (coremltools, keras, tensorflow, numpy, h5py) doivent être réinstallées, mais High Sierra ne parvient pas à s'installer avec pip en raison de SIP (sans racine) comme Sierra. Je n'aime pas ça et je m'enfuis vers la version Homebrew, mais cette fois cela n'arrive pas, alors je m'enfuis avec l'option --user pour le moment.

$ pip install --user tensorflow coremltools

Si vous utilisez / Users / username / Library / Python / 2.7 / lib / python / site-packages avec Python 2.7 (pour un usage quotidien) tel que la version Homebrew, la destination d'installation sera affectée, donc Vous devez changer la direction de l'option --user. http://qiita.com/ronin_gw/items/cdf8112b61649ca455f5 ou quelque chose?

Dans mon cas, la version Homebrew était plus appropriée pour / usr / local / lib / python2.7 / site-packages, donc cela devrait être correct pour le moment. .. ..

4. Confirmation de l'échec du traitement

Le chargement lui-même a réussi, mais l'exécution du raisonnement essentiel a échoué.

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

Est-ce inutile après tout?

Impressions

Tout en pensant que cela ne peut pas être aidé car vous utiliserez les fonctions du système d'exploitation, la liaison Python et la liaison 2.7 sont gênantes. .. .. ――Notez que CoreML Tools semble avoir des membres qui sont des méthodes ou assez drastiques même si vous regardez la référence officielle de l'API. ――Je veux essayer toutes les fonctionnalités dès que possible.

Recommended Posts

CoreML Tools + macOS High Sierra fonctionne-t-il uniquement avec Apple Python?
Installez Python 3 sur MacOS Catalina (avec Homebrew uniquement)
"Traitement Apple" avec OpenCV3 + Python3
Les moteurs de recherche fonctionnent avec python
5 outils Python faciles à utiliser | Augmenter l'efficacité du travail
Quand matplotlib ne fonctionne pas avec python2.7
Installez Java2Python sur macOS High Sierra (10.13)