[PYTHON] Utilisez DeepLabCut

Je pense que le goulot d'étranglement de DeepLabCut est qu'il est assez difficile de créer un environnement. J'étais aussi accro au marais. Explication du référentiel Github est assez substantiel, et j'ai trouvé que les articles japonais sont expliqués en détail. Je vais. Cependant, je suis resté coincé avec ces derniers, alors j'ai résumé les points.

C'est pour qui

--Les personnes souhaitant utiliser DeepLab Cut --Personnes qui ont un serveur GPU (Pour ceux qui ne l'ont pas, article utilisant Colab sera utile)

Conclusion

La solution optimale dépend de l'environnement serveur que vous pouvez utiliser et si vous disposez d'un environnement GUI. Si ni CUDA ni NVIDIA Driver ne sont inclus en premier lieu, ils ne sont pas couverts par cet article, veuillez donc vous référer à un autre article. Je suis désolé.

CUDA Vous pouvez vérifier la version de CUDA avec la commande nvidia-smi. CUDA10, CUDA9 → Possible CUDA8 → Impossible. Passez à Comment utiliser Google Colab.

** Environnement GUI ** CUDA9,10 × Environnement GUI → Vous pouvez également étiqueter et apprendre. CUDA9,10 uniquement → L'étiquetage et l'apprentissage se feront dans des environnements différents.

** Dans mon cas ** Je peux utiliser deux environnements GPU, l'un avec un environnement GUI mais CUDA 8.0, et l'autre avec une CLI uniquement et CUDA 9.0. Les deux étaient des serveurs partagés et le pilote nvidia n'a pas pu être mis à jour. L'étiquetage a été fait sous Windows.

Ce qui suit va procéder en supposant qu'il s'agit de CUDA 9.0 ou supérieur.

Si vous disposez d'un environnement de bureau

Vous pouvez le faire immédiatement en créant un environnement à l'aide d'Anaconda conformément à la Description officielle de DeepLabCut. Facile.

Cependant, il est supposé que vous avez CUDA10 par défaut, donc dans le cas de CUDA9, [Setting File](https://github.com/DeepLabCut/DeepLabCut/blob/master/conda-environments/DLC-GPU. yaml ) Doit être réécrit. Vous devez sélectionner la version de python, tensorflow-gpu, cudnn selon CUDA en regardant ici. Pour tensorflow-gpu et cudnn, consultez Anaconda Cloud pour voir s'il existe une version que vous souhaitez. Si vous spécifiez un package qui n'est pas publié sur Anaconda Cloud, vous obtiendrez une erreur Resolve Package not found. Ce n'est pas une dépendance, c'est juste que la version spécifiée est introuvable.

Dans le cas de CUDA9, je pense que cela fonctionnera si cudnn = 7.3.1 etc. Je pense que le flux tenseur dans ce cas peut être n'importe quoi entre 1,5 et 1,12. python devrait être 3,6. Finalement,

python


dependencies:
   - python=3.6
   - tensorflow-gpu==1.12.0
   - cudnn=7

Si vous le faites, cela devrait fonctionner. Une fois cette édition terminée, vous pouvez revenir à l'explication du chef de famille. La suite de l'article n'est pas pertinente.

Si vous ne disposez pas d'un environnement de bureau

Bien qu'il s'agisse d'une méthode utilisée dans d'autres articles, il est plus facile d'effectuer un étiquetage sur un processeur avec un environnement GUI et d'apprendre dans un environnement GPU. (Si vous faites de votre mieux, vous pourrez peut-être utiliser la destination SSH DeepLabCut localement avec l'interface graphique, mais je ne pourrais pas le faire moi-même. Si quelqu'un sait comment le faire, merci de me le faire savoir m (_ _) m) C'est un peu ennuyeux, mais créons un environnement d'étiquetage avec un processeur approprié et un environnement d'apprentissage sur le serveur GPU.

L'environnement d'étiquetage du CPU doit suivre la Description officielle, et le CPU lors du choix entre GPU et CPU Sélectionnez simplement correctement.

Ensuite, lors de la création d'un environnement d'apprentissage pour le serveur, c'est un peu gênant.

This base container is mainly useful for server deployment for training networks and video analysis (i.e. you can move this to your server, University Cluster, AWS, etc) as it assumes you have no display.

Et comme écrit, il est préférable d'utiliser le conteneur Docker.

Ici, ce qu'il faut

Résumé

J'ai passé beaucoup de temps sur cette configuration ... Que votre temps soit sauvé.

Il semble que tensorflow-gpu = 1.0.0 a été utilisé au moment de la rédaction de l'article original, mais lorsque j'ai regardé Anaconda Cloud, il n'a pas été publié.

Pourquoi CUDA8 est impossible

Parce qu'il n'y a pas de cudnn correspondant. En regardant la table de correspondance, cudnn nécessite 5.1 ou 6, mais quand je regarde Anaconda Cloud, il n'est pas publié. Cependant, il y avait cudnn 7.1.3 qui peut être utilisé avec CUDA 8.0, donc peut-être que spécifier cette version fonctionnera. De plus, CUDA8.0 est suspect, et pour autant que la table de correspondance soit vue, tensorflow ne fonctionne que jusqu'à 1.4.0. S'il s'agit de Linux, à partir de 2020/7, la 1.4.1 est ouverte au public, vous pourrez donc peut-être l'utiliser. Lorsque je suis passé à tensorflow-gpu == 1.4.1, j'ai eu une erreur de conflit de package. Il est peut-être impossible de tout installer en même temps en utilisant le fichier de configuration Anaconda, donc pour le moment, je pense qu'il est nécessaire de créer uniquement un environnement virtuel et de le mettre un par un qui ne provoque pas de conflits de version. Il semble que si vous utilisez bien pipenv et Poetry, cela résoudra la dépendance, mais je ne l'ai pas confirmé jusqu'à présent. Voulez-vous l'exécuter localement jusqu'à présent? C'est pourquoi je pense qu'il vaut mieux utiliser Colab.

Qu'est-ce qui est resté coincé dans l'utilisation de Deeplabcut

Comme indiqué dans cet article, vous devez disposer des privilèges d'administrateur lors du lancement de l'invite. Vous pouvez sélectionner à partir du clic droit. Sinon, Manage Project ne pourra pas créer de projets. De plus, lors de l'utilisation de DeepLabCut,

deeplabcut.extract_frames(config_path)

Cependant, si vous ne le démarrez pas avec les privilèges d'administrateur pour le moment, le phénomène selon lequel l'image n'est pas incluse dans named_data se produira.

prime

C'est un point que j'ai abordé dans le débogage lors de la création de l'environnement autour de DeepLabCut. C'est peut-être utile?

Comment utiliser nvidia-docker

Jusqu'à présent, je pensais que je le spécifierais avec docker run --runtime = nvidia, Sur le serveur que j'utilise maintenant, taper une commande avec nvidia-docker fonctionne bien.

Quand le jeton de Jupyter Lab ne passe pas par tous les moyens

Utilisez le mot de passe du notebook jupyter pour définir le mot de passe. Si vous entrez le mot de passe et que cela ne fonctionne pas, il y a un problème.

Recommended Posts

Utilisez DeepLabCut
Utiliser pycscope
Utilisez des collections.
Utilisation: Django-MySQL
Utilisez Pygments.rb
Utilisez Numpy
Utilisez pandas-ply
Utilisez GitPython
Utiliser Miniconda
Utiliser le TSC invariant
Pourquoi utiliser Linux
[C] Utilisez qsort ()
Utilisons pytube
Utiliser l'API JIRA
Utilisez des références faibles
Utiliser django-debug-toolbar de manière non locale
Utiliser l'optimisation des combinaisons