Rob174 / PIR

1 stars 0 forks source link

Analyse et implémentation ENet #10

Open Rob174 opened 3 years ago

Rob174 commented 3 years ago

Modèle déjà entrainé : https://github.com/TimoSaemann/ENet : en caffee -> pas bonne plateforme

Rob174 commented 3 years ago

+ prometteur : https://github.com/PavlosMelissinos/enet-keras/blob/master/src/models/enet_unpooling/encoder.py

cf #11

Rob174 commented 3 years ago

TODO : revoir chargement des poids ✔️ TODO : importer dans un script le modèle ✔️

Rob174 commented 3 years ago

Création d'un mode d'installation de package à partir des fichiers :

  1. Forker le repo
  2. cloner sur le pc
  3. Faire la structure suivante : si avant on avait le dossier src contenant le code source faire
    • rename src en un nom évocateur pour le modèle / pour le repo
    • Créer un sous-dossier (package avec pycharm) dans anciennement src avec le même nom évocateur
    • Déplacer tout le code dedans
    • Ajouter un fichier setup.py dans le premier dossier et mettre
from distutils.core import setup

setup(name='meme_nom_evocateur', version='1.0.0', packages=['meme_nom_evocateur'])

On a donc la structure suivante

nom_evocateur ├─ nom_evocateur │ ├──fichier.py │ ├──fichier2.py │ └──.... ├─ setup.py └─ init.py

Puis dans l'invité de commande pycharm du projet sur lequel on travaille faire la commande bash suivante

python -m pip install -e /....chemin/projet/nom_evocateur/

⚠️ Bien checker qu'on utilise le même python que pour le projet Sous linux which python ; sous windows where python donne la liste des pythons installés (après je ne sais pas pour le moment comment checker lequel est utilisé pour exécuter la commande python du cmd

après cela dans un script python on peut faire (pour vérifier)

import nom_evocateur
Rob174 commented 3 years ago

import du modèle ok debug des packages utilisés fini

Rob174 commented 3 years ago

Pour utiliser le projet faire dans l'ordre : git clone https://github.com/Rob174/enet-keras.git dans votre dossier de projet (en dehors du git de PIR). Passer sur la branche adaptation_tensorflow. Puis faire la commande python -m pip install -e /....chemin/repo/cloné/enet/

Rob174 commented 3 years ago

A priori ok pour charger les poids depuis pytorch : faire un make setup dans le projet d'enet pour créer le fichier de poids préentrainés

Rob174 commented 3 years ago

Encore mieux pour intégrer des repo en dépendance https://git-scm.com/book/en/v2/Git-Tools-Submodules

Rob174 commented 3 years ago

cf #15

Rob174 commented 3 years ago

model Note : on remarque que l'output du réseau a été flatten : on retrouve la taille de départ (contrairement au réseau du papier qui l'augmente à 512px en partant de 256px) et on la flatten peut-être pour faciliter le calcul de la loss

Rob174 commented 3 years ago

Résumé : papier

Rob174 commented 3 years ago

Révisé et test d'entrainement Erreur Attempting to fetch value instead of handling error Internal: failed initializing StreamExecutor for CUDA device ordinal 1: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_OUT_OF_MEMORY: out of memory; total memory reported: 8505131008

Rob174 commented 3 years ago

Mais fonctionne sur pc perso : fin du summary du modèle

Total params: 371,894
Trainable params: 363,542
Non-trainable params: 8,352
__________________________________________________________________________________________________
None

Donc à priori rien d'insurmontable à créer Peut-être vient du fait que CUDA n'arrive pas à avoir de RAM (simple pas VRAM) pour stocker le modèle (2 entrainements en cours en parallèle)

-> A tester quand entrainements finis

Rob174 commented 3 years ago

Fonctionne sans autres entrainements : manquait sûrement de ram