Ce semestre, je mettez en place un algorithme de détection compressé comme application iPhone. Pour ce faire, j'aurai besoin de bonnes bibliothèques de matrice / algèbre linéaire. Je suis un peu nouveau à Ios et à Python et je cherche une aide pour évaluer mes options. P>
Je sais que l'iPhone a le accélérer A> Cadre, qui comprend Veclib, Blas et Lapack, mais je ne connais pas leurs API (et ils semblent assez déroutants). P>
J'ai joué avec Python / Numpy, et j'aime beaucoup la façon dont il est simple d'utiliser - si j'ai le choix, je préférerais utiliser des numéros sur accélération. P>
Je sais qu'il est possible de Incorporer Python, mais j'ai eu peu de chance sur mon posséder. J'ai essayé d'inclure l'EPD.Framework d'enthousiasme dans un projet Xcode, mais je ne l'ai pas fait fonctionner après avoir joué environ une heure environ. J'imagine que la compilation numpy serait pire. P>
Une autre alternative, pourrais-je utiliser Cython (http://ython.org/) pour générer des fichiers C puis appeler des fonctions de cela? J'ai également tenté cela, mais j'ai rencontré plus de problèmes avec une bibliothèque .so et l'appelant. Y a-t-il un moyen de générer Cython .C et .h fichiers? Serait dit .c et .h fichiers dépendent toujours de NUMPY? P>
J'ai lu des choses à propos de Pyinstaller et de Free.py. Pourrait-on de m'aider ici? P>
Y a-t-il des options en plus d'accélérer ou de python + numpy? Est Python + Numpy une bonne option, ou sera-t-il difficile de compiler / construire? Est Cyron une solution valide? P>
Merci! P>
4 Réponses :
Prenez le temps d'apprendre les commandes d'accélération. Si vous faites des mathématiques complexes, ce sont les fonctions que vous souhaitez utiliser. Ils sont beaucoup plus rapides, infiniment plus susceptibles de continuer à être soutenus et à l'écoute du matériel futur. Ils utilisent également moins d'énergie que les solutions naïves. p>
-1. La ou les questions était, "Y a-t-il des options en plus d'accélérer ou de python + numpy? Est Python + Numpy une bonne option, ou sera-t-il difficile de compiler / de construire? Cyron est une solution valide?" Code >. Cette réponse ne répond pas à la question.
Curieusement, le OP l'a accepté ... Je ne sais pas pourquoi.
La nouvelle version du Swift Langage de programmation avec iOS 8 permet de haut niveau Python / Matlab -Code semblable à écrire. En conséquence, un cadre appelé Swix a été développé qui enveloppe les cadres Accelerate (/ Blas / Lapack / etc.) .
Code Snippet qui utilise pleinement le cadre d'accélération: p> Ce code peut être compilé pour l'iPhone / iOS. Les détails complets sur l'installation sont couverts dans La documentation Swix . P> P>
Avec la libération de Swift et son accès au cadre d'accélération, il y a peu de raisons de sortir de votre chemin pour faire courir Python. Avec les bonnes fraches, vous pouvez utiliser SWIFT pour écrire de haut niveau et performant, Code pour iOS avec syntaxe similaire à Python / NUMPLY, et performances qui seront significativement supérieures à la numie d'exécution sur IOS. p>
Au fur et à mesure que d'autres personnes ont déjà posté, il existe différentes bibliothèques qui tentent de "envelopper" le cadre d'accélération pour fournir une API accessible avec une API accessible. Comme une alternative au Swix bibliothèque dans une autre réponse, j'ai eu un grand succès avec le Upsurge cadre. Pour les types d'opérations que vous allez probablement utiliser, l'upsurge peut avoir tout ce dont vous avez besoin. p>
Il fournit une interface facile et détaillée à une variété de fonctions d'accélération; Matrices, convolution, FFT, algèbre linéaire, mathématiques, etc. Il prend également en charge une grande partie de ces opérations sur son propre type de tenseur personnalisé. Le gros avantage que j'ai trouvé sur Swix Quand je décidais d'entre eux, était-ce que l'upsurge n'avait pas eu de Dépendance à l'OPENCV et n'a pas besoin d'en-têtes de pontage (il est écrit en pure Swift) qui a fait du débogage plus facile pour moi em>. p>
Cela étant dit, ils sont à la fois de grands cadres et l'un ou l'autre couvrira vos besoins. J'aurais un coup d'œil aux deux et voyez lequel est mieux adapté à vos besoins. p>
Il existe des bibliothèques pour inclure Python sur iOS. Ces bibliothèques sont Kivy et Beeware . Ce sont des bibliothèques qui ont l'application entière écrite en Python. P>
Pour Kivy, regardez Kivy-iOS et le GitHub Project et pour Beeware Regardez sur Python-iOS-Modèle . P>