Aller au contenu

JupyterLab - Interface Web pour Nerfstudio

JupyterLab fournit une interface web interactive pour uploader des photos et lancer des trainings Nerfstudio sans ligne de commande.

Vue d'ensemble

Paramètre Valeur
URL http://192.168.1.82:8889
Port 8889
Token nerfstudio-jupyter-2026
User nerfstudio (système)
Notebooks /data/jupyter/notebooks/

Accès

  1. Ouvrir http://192.168.1.82:8889
  2. Entrer le token : nerfstudio-jupyter-2026
  3. Cliquer sur "Log in"

Première connexion : Le navigateur peut demander à enregistrer le token (recommandé).

Workflow complet

1. Ouvrir le notebook Nerfstudio

Depuis l'interface JupyterLab : 1. Double-cliquer sur nerfstudio-training.ipynb 2. Le notebook s'ouvre dans un nouvel onglet

2. Créer un nouveau projet

Cellule "Upload Photos" :

project_name = input("Nom du projet (ex: my-object): ")
# Entrer : my-sculpture

Résultat :

✅ Projet créé: /data/nerfstudio/data/my-sculpture
📁 Uploadez vos photos dans: /data/nerfstudio/data/my-sculpture/images

💡 Via terminal SSH:
   scp photos/*.jpg probatio@192.168.1.82:/data/nerfstudio/data/my-sculpture/images/

3. Upload des photos

Option A : Via l'interface JupyterLab (⭐ RECOMMANDÉ)

Directement dans le notebook, cellule "Upload des photos" :

  1. Cliquer sur "Sélectionner photos"
  2. Choisir vos photos (JPG, PNG) - sélection multiple possible
  3. Cliquer sur "💾 Sauvegarder les photos"
  4. Les photos sont automatiquement uploadées dans le dossier du projet

Avantages : - ✅ Aucune ligne de commande - ✅ Interface graphique simple - ✅ Sélection multiple de fichiers - ✅ Sauvegarde automatique au bon endroit

Option B : Via SSH (pour beaucoup de photos ou gros fichiers)

Depuis votre machine locale :

# Upload toutes les photos d'un dossier
scp photos/*.jpg probatio@192.168.1.82:/data/nerfstudio/data/my-sculpture/images/

# Ou avec rsync (plus rapide, reprend en cas d'interruption)
rsync -avz --progress photos/ probatio@192.168.1.82:/data/nerfstudio/data/my-sculpture/images/

Option C : Via SFTP (FileZilla, Cyberduck, WinSCP)

  • Host : 192.168.1.82
  • User : probatio
  • Password : (votre mot de passe SSH)
  • Dossier : /data/nerfstudio/data/my-sculpture/images/

4. Vérifier les photos

Cellule "Vérifier les photos uploadées" :

# Exécuter la cellule

Résultat :

📸 125 photos trouvées

Premières photos:
  - IMG_001.jpg
  - IMG_002.jpg
  - IMG_003.jpg
  - IMG_004.jpg
  - IMG_005.jpg
  ... et 120 autres

5. Choisir la méthode de training

Cellule "Choisir la méthode" :

Sélectionner une option : - ⭐ Gaussian Splatting (meilleure qualité, 10-20 min) ← Recommandé - Nerfacto (équilibré, 15-30 min) - Instant-NGP (rapide, 5-10 min)

6. Lancer le training

Cellule "Lancer le training" :

# Exécuter la cellule

Résultat :

🚀 Lancement training...
   Projet: my-sculpture
   Méthode: splatfacto
   Photos: 125

⏳ Le training va démarrer. Ouvrez le viewer:
   http://192.168.1.82:7007

✅ Training démarré en arrière-plan (PID: 12345)

💡 Suivez la progression sur le viewer: http://192.168.1.82:7007

7. Suivre la progression (Viewer)

Ouvrir le viewer : http://192.168.1.82:7007

Interface viewer :

┌─────────────────────────────────────────────┐
│  [◀] [▶] [▲] [▼]  Camera Controls          │
│                                             │
│  Training: ████████████░░ 82%               │
│  Step: 820/1000  |  FPS: 60                 │
│  Loss: 0.0087    |  PSNR: 34.1 dB           │
│  ETA: 3min 12s                              │
│                                             │
│  [Pause] [Resume] [Stop]                    │
└─────────────────────────────────────────────┘

Actions disponibles : - Rotation 3D (souris) - Zoom (molette) - Changer de caméra (dropdown) - Ajuster qualité rendu (samples, résolution)

8. Export mesh 3D

Attendre que le training soit terminé (loss < 0.01, PSNR > 30 dB)

Cellule "Export mesh 3D" :

# Exécuter la cellule

Résultat :

📦 Config trouvé: /data/nerfstudio/outputs/my-sculpture/splatfacto/.../config.yml

🎨 Lancement export mesh...
✅ Mesh exporté avec succès !
📁 Fichiers disponibles dans: /data/nerfstudio/exports
   - my-sculpture.ply

9. Télécharger le mesh

Option A : Via JupyterLab

  1. File browser (à gauche)
  2. Naviguer vers /data/nerfstudio/exports/
  3. Clic droit sur my-sculpture.ply
  4. Download

Option B : Via SSH

# Depuis votre machine locale
scp probatio@192.168.1.82:/data/nerfstudio/exports/my-sculpture.ply ~/Downloads/

Option C : Via SFTP

Dossier : /data/nerfstudio/exports/

10. Importer dans Blender

  1. Ouvrir Blender
  2. File → Import → Stanford (.ply)
  3. Sélectionner my-sculpture.ply
  4. Le mesh 3D s'affiche avec textures

Cas d'usage

1. Objet e-commerce (chaussure, meuble)

Photos : 50-80 photos, rotation 360° Méthode : Gaussian Splatting (splatfacto) Temps : 10-15 min Résultat : Viewer 3D interactif pour site web

Workflow notebook :

project_name = "nike-air-max"
# Upload 60 photos
# Choisir : Gaussian Splatting
# Lancer training
# Export mesh → intégration Three.js

2. Patrimoine (sculpture, monument)

Photos : 100-200 photos haute résolution Méthode : Gaussian Splatting (qualité max) Temps : 20-30 min Résultat : Mesh haute-fidélité pour conservation

Workflow notebook :

project_name = "statue-jardin-versailles"
# Upload 150 photos (DSLR, 4K)
# Choisir : Gaussian Splatting
# Lancer training (qualité max)
# Export mesh → archivage 3D

3. Immobilier (visite virtuelle)

Photos : 100-150 photos d'un appartement Méthode : Nerfacto (bon compromis) Temps : 15-20 min Résultat : Visite 3D navigable

Workflow notebook :

project_name = "appartement-paris-16e"
# Upload 120 photos (smartphone OK)
# Choisir : Nerfacto
# Lancer training
# Export vidéo flythrough

4. Prototypage rapide

Photos : 30-50 photos Méthode : Instant-NGP (ultra-rapide) Temps : 5-8 min Résultat : Preview 3D rapide

Workflow notebook :

project_name = "prototype-produit"
# Upload 40 photos
# Choisir : Instant-NGP
# Lancer training (rapide)
# Valider concept avant scan HD

Gestion des projets

Lister tous les projets

Cellule "Projets disponibles" :

# Exécuter la cellule

Résultat :

📁 5 projets disponibles:

✅ Trained my-sculpture (125 photos)
✅ Trained nike-air-max (60 photos)
📸 Ready statue-versailles (150 photos)
✅ Trained appartement-paris (120 photos)
📸 Ready prototype-v2 (40 photos)

Légende : - ✅ Trained : Training terminé, modèle disponible - 📸 Ready : Photos uploadées, prêt pour training

Supprimer un projet

# SSH vers le serveur
ssh probatio@192.168.1.82

# Supprimer données + outputs
sudo rm -rf /data/nerfstudio/data/my-old-project
sudo rm -rf /data/nerfstudio/outputs/my-old-project

Télécharger un projet complet

# Depuis votre machine locale
# Télécharger données + modèle + exports
scp -r probatio@192.168.1.82:/data/nerfstudio/data/my-sculpture ~/backups/
scp -r probatio@192.168.1.82:/data/nerfstudio/outputs/my-sculpture ~/backups/
scp -r probatio@192.168.1.82:/data/nerfstudio/exports/my-sculpture.ply ~/backups/

Intégration Homer

JupyterLab est référencé dans le dashboard Homer :

- name: "IA & Machine Learning"
  items:
    - name: "JupyterLab"
      logo: "assets/tools/jupyter.png"
      subtitle: "Interactive notebooks for Nerfstudio"
      url: "http://192.168.1.82:8889"

Accès depuis Homer : http://192.168.1.82:8080

Troubleshooting

JupyterLab ne démarre pas

# Vérifier le service
sudo systemctl status jupyterlab

# Vérifier les logs
sudo journalctl -u jupyterlab -n 50

# Redémarrer
sudo systemctl restart jupyterlab

Token invalide

Le token par défaut est : nerfstudio-jupyter-2026

Si vous avez besoin de le changer :

# Éditer la config
sudo nano /home/nerfstudio/.jupyter/jupyter_server_config.py

# Changer la ligne:
c.ServerApp.token = 'votre-nouveau-token'

# Redémarrer
sudo systemctl restart jupyterlab

Notebook ne se charge pas

# Vérifier que le notebook existe
ls -la /data/jupyter/notebooks/nerfstudio-training.ipynb

# Vérifier les permissions
sudo chown -R nerfstudio:nerfstudio /data/jupyter/

# Redémarrer JupyterLab
sudo systemctl restart jupyterlab

Upload photos échoue

Erreur : "Failed to upload file"

Solutions : 1. Vérifier espace disque : df -h /data/nerfstudio 2. Vérifier permissions : ls -la /data/nerfstudio/data/ 3. Utiliser SSH/SFTP au lieu de l'interface web pour gros fichiers

Limite upload : JupyterLab limite à ~100 MB par fichier. Pour de gros datasets, utiliser SSH/rsync.

Training ne démarre pas

Cellule "Lancer training" affiche :

ImportError: numpy._core.multiarray failed to import

Solution : NumPy conflict (connu). Lancer via terminal SSH :

ssh probatio@192.168.1.82
cd /opt/nerfstudio
./train.sh /data/nerfstudio/data/my-sculpture splatfacto

Viewer affiche "No training in progress"

Causes possibles : 1. Training pas encore démarré → attendre 10-20 secondes 2. Training terminé → consulter outputs 3. Erreur training → vérifier logs

Vérifier logs :

# Trouver le PID du training
ps aux | grep ns-train

# Si pas de training en cours, relancer manuellement
cd /opt/nerfstudio
./train.sh /data/nerfstudio/data/my-sculpture splatfacto

Maintenance

Mise à jour JupyterLab

# Mettre à jour via pip
sudo pip3 install --upgrade jupyterlab

# Redémarrer
sudo systemctl restart jupyterlab

Nettoyer anciens notebooks

# Supprimer notebooks de test
rm /data/jupyter/notebooks/Untitled*.ipynb

# Garder uniquement le notebook Nerfstudio
ls /data/jupyter/notebooks/
# nerfstudio-training.ipynb (à garder)

Sauvegarde notebooks

# Sauvegarder tous les notebooks
tar czf /tmp/jupyter-notebooks-$(date +%Y%m%d).tar.gz /data/jupyter/notebooks/

# Copier sur NAS
cp /tmp/jupyter-notebooks-*.tar.gz /mnt/nas/backups/

Ressources

  • JupyterLab Documentation : https://jupyterlab.readthedocs.io
  • Nerfstudio Documentation : https://docs.nerf.studio
  • Support : Voir logs systemd ou Jupyter

Résumé des ports

Service Port Protocole Accès
JupyterLab 8889 HTTP LAN uniquement
Nerfstudio Viewer 7007 HTTP LAN uniquement

Sécurité

Recommandations

  1. Changez le token après installation (production)
  2. Limitez l'accès réseau (firewall, VPN)
  3. Sauvegardez régulièrement les notebooks importants
  4. Ne partagez pas le token publiquement

Exposition Internet (déconseillé)

Si vous devez exposer JupyterLab sur Internet :

  1. HTTPS obligatoire (reverse proxy Nginx + Let's Encrypt)
  2. Password authentication (plus sécurisé que token)
  3. Rate limiting (limite de requêtes par IP)
  4. Monitoring (alertes sur connexions)

Recommandation : Utilisez un VPN (WireGuard) pour accès distant sécurisé.

Workflow rapide (aide-mémoire)

1. http://192.168.1.82:8889 → token: nerfstudio-jupyter-2026
2. Ouvrir: nerfstudio-training.ipynb
3. Créer projet → Nom: my-object
4. Upload photos: scp photos/*.jpg probatio@192.168.1.82:/data/.../images/
5. Vérifier photos (exécuter cellule)
6. Choisir méthode: Gaussian Splatting
7. Lancer training (exécuter cellule)
8. Viewer: http://192.168.1.82:7007
9. Export mesh (quand terminé)
10. Download: /data/nerfstudio/exports/my-object.ply