TensorBoard se bloque lors de la visualisation d'un graphique de détection d'objets
J'ai besoin de visualiser la structure d'un modèle de détection d'objets TensorFlow. J'essaye d'utiliser TensorBoard dans Colab avec le code ci-dessous. Lorsque TensorBoard charge les journaux, il reste bloqué sur l'étape «Hiérarchie des espaces de noms: recherche de sous-graphiques similaires».
!pip install -U tensorflow
import tensorflow as tf
from tensorflow.python.client import session
from tensorflow.python.framework import ops
from tensorflow.python.tools import saved_model_utils
from tensorflow.python.framework import importer
from tensorflow.python.summary import summary
!wget http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet50_v1_fpn_640x640_coco17_tpu-8.tar.gz
!tar -xf ssd_resnet50_v1_fpn_640x640_coco17_tpu-8.tar.gz
%load_ext tensorboard
log_dir = '/content/logs'
tag_set = "serve"
model_dir = '/content/ssd_resnet50_v1_fpn_640x640_coco17_tpu-8/saved_model'
with session.Session(graph=ops.Graph()) as sess:
input_graph_def = saved_model_utils.get_meta_graph_def(model_dir,
tag_set).graph_def
importer.import_graph_def(input_graph_def)
pb_visual_writer = summary.FileWriter(log_dir)
pb_visual_writer.add_graph(sess.graph)
print("Model Imported. Visualize by running: "
"tensorboard --logdir={}".format(log_dir))
%tensorboard --logdir=$log_dir
Voici un lien vers le cahier: https://colab.research.google.com/drive/1MrbNJYR2ds8RRgIBvgUgAILw0Jwdygui?usp=sharing.
Environnement: Navigateur: Chrome OS: Windows RAM: 8 Go
Finalement, je commence à recevoir les erreurs ci-dessous.
Pour info, j'ai essayé d'exécuter ce même processus sur un ordinateur Windows avec 4 Go de RAM, avec un serveur TensorBoard fonctionnant dans un shell. J'ai accédé à TensorBoard en utilisant l'URL par défaut (en dehors d'un ordinateur portable). Il a échoué au même moment dans le processus de démarrage.
Je vois que Tensorboard est resté coincé dans la `` hiérarchie des espaces de noms trouvant des sous-graphiques similaires '' et j'ai du mal à implémenter la surveillance du tensorboard dans le processus de formation Mask_RCNN posé des questions similaires, mais aucune réponse n'a été fournie.
Merci d'avance - cela m'aiderait vraiment dans l'important projet que je réalise pour mon entreprise.
Réponses
Il y a 3 problèmes que je crois savoir maintenant comment résoudre.
- RAM / CPU insuffisante -> s'exécuter sur un ordinateur avec plus de ressources
- Graphique complexe, doit être agrandi -> Utilisez Zoom pour voir les nœuds
- Variables non initialisées -> Évaluer le modèle pour afficher les bords du graphique
1. RAM / CPU insuffisante
L'exécution du processus sur un ordinateur Windows avec 24 Go de RAM et 8 cœurs i7 a éliminé les plantages pour moi. Parfois, je reçois un message indiquant que la page ne répond plus, mais vous pouvez simplement cliquer sur le bouton "Attendre" et elle se chargera. La charge elle-même était également beaucoup plus rapide.
2. Graphique complexe, doit être agrandi
En exécutant le code ci-dessus, TensorBoard affiche ce qui semble être un écran vide. Cependant, il y a un léger contour des nœuds du graphe.
Zoomez pour voir les détails. La zone de navigation dans la partie inférieure droite de l'écran est utile.
3. Initialiser les variables
Au lieu du code dans ma question ci-dessus, utilisez ce qui suit:
import tensorflow as tf
import numpy as np
!pip install -U tensorflow
%load_ext tensorboard
# Download model
!wget http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet50_v1_fpn_640x640_coco17_tpu-8.tar.gz
!tar -xf ssd_resnet50_v1_fpn_640x640_coco17_tpu-8.tar.gz
model_dir = '/content/ssd_resnet50_v1_fpn_640x640_coco17_tpu-8/saved_model'
log_dir = '/content/logs'
if os.path.exists(log_dir):
! rm -r $log_dir
@tf.function
def f(x):
imported = tf.saved_model.load(model_dir)
results = imported(x)
return results
#Initialize variables
imgs = np.zeros((1,640,640,3),dtype=int)
imgs_t = tf.constant(imgs, dtype=tf.dtypes.uint8)
imported_g = f.get_concrete_function(imgs_t).graph
# Export the graph
with session.Session(graph=imported_g) as sess:
pb_visual_writer = summary.FileWriter(log_dir)
pb_visual_writer.add_graph(sess.graph)
print("Model Imported. Visualize by running: "
"tensorboard --logdir={}".format(log_dir))
Le nouveau graphique montre les bords du graphique, pas seulement les nœuds.
Voici un bloc-notes que vous pouvez exécuter: https://colab.research.google.com/gist/mherzog01/d631998cb4d0b0dbcb70492b933a67c8/tensorboard-hangs-during-graph-visualization-solution.ipynb.