Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Primary config directory not found #31

Closed
Bibiisneaks opened this issue Jul 25, 2022 · 5 comments
Closed

Primary config directory not found #31

Bibiisneaks opened this issue Jul 25, 2022 · 5 comments
Assignees
Labels
question Further information is requested

Comments

@Bibiisneaks
Copy link

Bonjour,
après avoir build le dockerfile je rencontre une erreur au moment du run :

Primary config directory not found.
Check that the config directory '/CICD_github_assets/parametres_etape1/.hydra' exists and readable

Et effectivement, je ne vois nulle part dans les configs (dockerfile / .yml etc…) le folder /CICD_github_assets/

Suis-je passé à côté d'une étape ?

Merci

@CharlesGaydon
Copy link
Collaborator

Bonjour,
je serais ravi de vous aider à faire tourner l'outil, qui est encore tout nouvellement open sourcé :)
D'après ce que je comprends, vous avez souhaité lancé la commande obtenue directement dans le Dockerfile (permalink).
Cette commande est un simple exemple, dont les chemins correspondent à un serveur privé auquel vous n'avez pas accès. Il faut donc les remplacer par des chemins sur votre machine, où vous aurez à placer les éléments suivants :

  • A source cloud point in LAS format on which to infer classes and probabilites.
  • A checkpoint of a trained lightning module implementing model logic (class myria3d.models.model.Model)
  • A minimal yaml configuration specifying parameters. We use hydra to manage configurations, and this yaml results from the model training. The datamodule and model parameters groups must match dataset characteristics and model training settings. The predict parameters group specifies path to models and data as well as batch size (N=50 works well, the larger the faster) and use of gpu (optionnal). For hints on what to modify, see the experiment/predict.yaml file.

Ces éléments sont listés dans cette page de la documentation : Performing inference on new data
Le plus simple pour vous serait de télécharger les fichiers les plus à jour dans notre production à l'IGN, qui sont accessible sur cette Production Release:

image

Si vous utilisez Docker avec l'image appellée elle même "myria3d", vous pouvez vous baser sur la commande suivante de notre workflow d'intégration continue, ce qui donnerait (en ayant crée un dossier /inputs/ et /outputs/ sur votre machine, et téléchargé les fichiers dans /inputs/)

    docker run -v /inputs/:/inputs/ -v /outputs/:/outputs/ --ipc=host myria3d \
    python -m myria3d.predict \
    --config-path /inputs/
    --config-name predict_config_V2.3.0.yaml \
    predict.src_las=/inputs/792000_6272000_subset_buildings.las \
    predict.output_dir=/outputs/ \
    predict.ckpt_path=/inputs/RandLaNet_Buildings_B2V0.5_epoch_033.ckpt \
    datamodule.batch_size=25 \
    hydra.run.dir=/outputs/

Concernant le LAS d'entrée, vous pouvez utiliser un LAS du projet Lidar HD, ou bien celui de test qui est situé dans ce dossier.
Pour inspecter les résultats d'inférence, ouvrir CloudCompare et chercher le canal PredictedClassification. Les canaux de probabilitiés pour différentes classes peuvent tous être sauvegardés avec le paramètre predict.probas_to_save="all".

@CharlesGaydon CharlesGaydon added the question Further information is requested label Jul 26, 2022
@CharlesGaydon CharlesGaydon self-assigned this Jul 26, 2022
@Bibiisneaks
Copy link
Author

Bibiisneaks commented Jul 27, 2022

Merci!
Après avoir suivi vos indications et gérer quelques erreurs supplémentaires, j'ai finalement réussi à utiliser le script avec le fichier .las fourni en test dans le repository.
En revanche, lorsque j'essaye d'utiliser un des fichiers open source de l'IGN, j'obtiens la stack trace suivante (indiquant une erreur de clé manquante dans les données :

Error executing job with overrides: ['predict.src_las=/myria3d/myria3d/inputs/Semis_2021_0436_6470_LA93_IGN69.laz', 'predict.output_dir=/myria3d/myria3d/outputs/', 'predict.ckpt_path=/myria3d/myria3d/inputs/proto151_V0.0_epoch_056_Myri
a3DV2.3.0.ckpt', 'datamodule.batch_size=25']
Traceback (most recent call last):
  File "/myria3d/myria3d/predict.py", line 106, in main
    predict(config)
  File "/myria3d/myria3d/utils/utils.py", line 158, in timed
    result = method(*args, **kwargs)
  File "/myria3d/myria3d/predict.py", line 59, in predict
    for batch in tqdm(datamodule.predict_dataloader()):
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/tqdm/std.py", line 1195, in __iter__
    for obj in iterable:
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 521, in __next__
    data = self._next_data()
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1203, in _next_data
    return self._process_data(data)
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1229, in _process_data
    data.reraise()
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/torch/_utils.py", line 434, in reraise
    raise exception
ValueError: Caught ValueError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/pylas/point/record.py", line 304, in __getitem__
    composed_dim, sub_field = self.sub_fields_dict[item]
KeyError: 'red'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/torch/utils/data/_utils/worker.py", line 287, in _worker_loop
    data = fetcher.fetch(index)
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 32, in fetch
    data.append(next(self.dataset_iter))
  File "/myria3d/myria3d/data/datamodule.py", line 232, in yield_transformed_subtile_data
    tile_data = self.loading_function(filepath)
  File "/myria3d/myria3d/data/loading.py", line 232, in load_las
    [
  File "/myria3d/myria3d/data/loading.py", line 233, in <listcomp>
    las[x_name]
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/pylas/lasdatas/base.py", line 187, in __getitem__
    return self.points_data[item]
  File "/opt/conda/envs/myria3d/lib/python3.9/site-packages/pylas/point/record.py", line 309, in __getitem__
    return self.array[item]
ValueError: no field of name red

Cela est sûrement du au format des données Lidar qui ne sont pas les mêmes, et les champs rgb ne sont pas présents dans les données téléchargeables sur le site de l'IGN, et donc ces données ne sembles pas compatibles avec le projet myria3d

@CharlesGaydon
Copy link
Collaborator

Effectivement ça semble être le soucis. Sur la page du projet Lidar HD, sont téléchargeables 1) des données brutes (non colorisées donc, pour l'instant), et 2) "des échantillons de données classifiées". Ce sont ces dernières qui sont colorisées et peuvent permettre de tester l'outil !
Il semble que la plupart des liens soient non fonctionnels (je vais en prévenir le GéoPortail) mais le suivant semble fonctionner :
image

@CharlesGaydon
Copy link
Collaborator

@Bibiisneaks Bonjour, avez-vous pu résoudre votre problème ?

@CharlesGaydon
Copy link
Collaborator

CharlesGaydon commented Sep 12, 2022

Fermé car inactif. N'hésitez pas à rouvrir si besoin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants