Table des matières
WearSurfacesDatasets
WearSurfacesDatasets publie les textures de surface capturées pendant des essais d’usure contrôlés, classées par matériau, grain abrasif, charge et distance de glissement. C’est le jeu de données public de la recherche de maîtrise à l’ÉTS sur l’usure dans l’espace texture, où il sert à comparer les motifs d’usure simulés à la microgéométrie mesurée. Il est publié sous ETSim pour les chercheurs en rendu et en tribologie qui ont besoin de vraies progressions d’usure.
1. Aperçu
Chaque état mesuré correspond à une feuille Parquet :
data/parquet/<matériau>/<forme>/<direction>/S<grain>/<charge>g/<distance>mm/data.parquet
Par exemple data/parquet/Cartboard/Raw/Normal/S60/200g/800mm/data.parquet. Chaque ligne stocke une carte en octets JPEG dans image_data, étiquetée par map_type ; metadata.json liste les cartes d’occlusion ambiante, de bump, de déplacement, de hauteur, d’ombrage (hillshade) et de normales. Les mêmes enregistrements existent aussi en archives WebDataset, de data/shards/shard-0000.tar à shard-0839.tar.
data/parquet/sequences.json répertorie 20 chronologies d’usure : carton sous cinq charges (10 à 200 g, grain S60), mousse, MDF (trajets en cercle et en ligne), PLA à plusieurs grains en direction linéaire et non linéaire, bois tendre, et des références de papier abrasif non usé de S40 à S240.
Par-dessus les données, le dépôt ajoute trois couches d’outils :
generate_datasets.py,read_datasets.pyetgenerate_metadata.py(CLI Typer) construisent le Parquet et les shards à partir d’un dossierwear/de cartes PNG, les réextraient et écrivent les métadonnées par feuille et l’index.alignment/recale chaque séquence par une méthode SIFT/ECC en deux passes (align.py), recadre la zone valide commune, ajoute des points milieux Catmull-Rom dans le temps (interpolate.py) et extrapole les normal maps futures avec un modèle FFT et SLERP (extrapolate.py).bake.pyenchaîne le tout pour une séquence ou pour toutes, et peut réempaqueter les résultats.docs/index.htmlest une visionneuse de matériaux WebGPU qui lit le Parquet dans le navigateur avec parquet-wasm.docs/serve_local.pyest un serveur FastAPI qui sert la visionneuse et les données et expose/api/datasets,/api/sequenceset/api/align/sequence.
2. Cas d’utilisation
Séquences de cartes de surfaces usées (matériau, grain, charge, distance) avec outils Python et visionneuse WebGPU.
- Télécharger les séquences
- Chercheur en renduStockage Git LFS
Les feuilles Parquet et les shards WebDataset sont des objets Git LFS : git lfs pull remplace les pointeurs dans data/parquet et data/shards.
- Parcourir une usure
- Chercheur en renduNavigateur WebGPU
docs/serve_local.py sert docs/index.html, qui lit le Parquet avec parquet-wasm et affiche les cartes en WebGPU pendant qu'on fait défiler la distance ou qu'on lance la lecture.
- Aligner une séquence
- Chercheur en renduNavigateur WebGPU
POST /api/align/sequence lance un recalage SIFT/ECC en deux passes des normal maps sur la première image, recadre la zone commune et met les PNG en cache dans data/aligned.
- Interpoler et extrapoler
- Chercheur en rendu
python -m alignment.bake ajoute des points milieux Catmull-Rom et des normal maps extrapolées par FFT et SLERP après la dernière mesure.
- Empaqueter Parquet et shards
- Chercheur en rendu
generate_datasets.py parquet et webdataset transforment un arbre wear/ de cartes PNG en feuilles Parquet imbriquées et en fichiers shard-*.tar.
- Extraire les cartes en PNG
- Chercheur en rendu
read_datasets.py decompress et generate_datasets.py extract réécrivent en fichiers image les octets JPEG stockés par map_type.
2.1. Scénario : Examiner l'usure d'un carton sous 200 g
- Cloner le dépôt, lancer git lfs pull et pip install -r requirements.txt.
- Démarrer python docs/serve_local.py et ouvrir http://127.0.0.1:8080/docs/index.html.
- Choisir Cartboard / Raw / Normal · S60 · 200 g et cliquer sur Load sequence.
- Cliquer sur Align sequence, puis faire défiler la distance de 0 mm à 2400 mm ou lancer Play.
- Lancer python -m alignment.bake --sequence-id cartboard-raw-normal-s60-200g --pack pour ajouter les étapes interpolées et extrapolées.
Fichiers consultésREADME.md.gitattributesrequirements.txtmetadata.jsondata/parquet/README.mddata/parquet/sequences.jsondocs/README.mddocs/index.htmldocs/serve_local.pyalignment/align.pyalignment/pipeline.pyalignment/bake.pyalignment/interpolate.pyalignment/extrapolate.pygenerate_datasets.pyread_datasets.py
3. Démarrage
D’après le README :
git clone https://github.com/ETSim/WearSurfacesDatasets
cd WearSurfacesDatasets
git lfs pull
pip install -r requirements.txt
python docs/serve_local.py
# ouvrir http://127.0.0.1:8080/docs/index.html
Dans la visionneuse, on choisit une séquence, on clique sur Load sequence, au besoin sur Align sequence, puis on fait défiler la distance ou on lance Play. Pour calculer les étapes interpolées et extrapolées :
python -m alignment.bake --sequence-id cartboard-raw-normal-s60-200g --pack
python -m alignment.bake --all --pack
Pour reconstruire le jeu de données à partir des PNG ou extraire les images :
python generate_datasets.py parquet --input-dir wear --output-dir data/parquet
python generate_datasets.py webdataset --input-dir wear --output-dir data/shards
python read_datasets.py decompress --shards-dir data/shards --output-dir data/images --workers 4
4. Guide du dépôt
data/parquet/: feuilles Parquet,sequences.jsonetmetadata.parquet.data/shards/: shards WebDataset.tar.metadata.json: matériaux, grains, charges, distances, montage de capture et types de cartes.alignment/: recalage, déformation, interpolation, extrapolation, calcul et empaquetage.docs/index.html,docs/serve_local.pyetdocs/serve_app.py: la visionneuse et ses serveurs locaux.docs/prepare_viewer_parquets.pyreconstruitsequences.json.docs/package/: la version de parquet-wasm embarquée pour la visionneuse.examples/Wear/powerpoint/: une présentation PowerPoint par série d’essais (carton, mousse, MDF, PLA, papier abrasif, bois tendre).
5. Fonctionnalités
- Séquences d’usure indexées par matériau, forme du trajet, direction, grain, charge et distance de glissement.
- Deux formats de stockage : Parquet imbriqué pour la consultation et shards WebDataset pour la lecture en flux.
- Visionneuse dans le navigateur avec défilement de la distance, lecture et préchargement des étapes voisines.
- Alignement SIFT/ECC côté serveur, avec résultats en cache et téléchargement d’un atlas à plat.
- Interpolation Catmull-Rom et extrapolation FFT et SLERP des normal maps.
- Outils en ligne de commande pour reconstruire, extraire et décrire le jeu de données.
6. Limites
- Les fichiers Parquet et les shards sont des objets Git LFS : un simple clone ne contient que des pointeurs tant que
git lfs pulln’a pas été lancé. - L’arbre PNG source
wear/utilisé pargenerate_datasets.pyn’est pas dans le dépôt, etdata/aligned/etdata/wear_extrapolated/sont ignorés par Git. - Le README et
metadata.jsoncitent Alu et Resin, mais lesequences.jsonversionné ne contient aucune séquence Alu ni Resin. - Les images extrapolées sont produites par un modèle, ce ne sont pas des mesures.
- Plusieurs séquences sont courtes (deux étapes pour certaines séries PLA et MDF), et un dossier de mousse s’appelle
4000000mm. docs/README.mdetmetadata.jsondonnent des valeurs de capture différentes (résolution, nombre de DEL, température) ; mieux vaut les lire comme descriptives.- Sur un hébergement statique, la visionneuse charge toujours les images, mais l’alignement est désactivé parce qu’il exige le serveur Python.
- Aucun test automatisé.
7. Sources
- Dépôt GitHub
- README
data/parquet/sequences.jsonalignment/align.pyalignment/extrapolate.pydocs/serve_local.py
8. Pipeline CI/CD
Aucun pipeline CI/CD dans le dépôt. Le code se construit et se lance à la main, comme décrit plus haut.
Généré à partir du code au commit 6841dff.
9. Schéma de déploiement
Mermaid Schéma de déploiement
flowchart LR
repo[("Dépôt GitHub")]
local["Poste local<br/>Python"]
repo -->|"cloner et lancer"| local
Le dépôt ne contient ni Dockerfile, ni fichier Compose, ni configuration d’hébergement : le code s’exécute sur le poste qui le clone.
10. Dépendances externes
10 paquets déclarés (10 à l’exécution, 0 pour le développement) dans requirements.txt.
Tableau des paquets 10
| Paquet | Version | Usage | Rôle | Registre |
|---|---|---|---|---|
pandas | — | exécution | Analyse de données | pypi.org |
pyarrow | — | exécution | Analyse de données | pypi.org |
numpy | — | exécution | Analyse de données | pypi.org |
pillow | — | exécution | Graphisme, image et 3D | pypi.org |
matplotlib | — | exécution | Graphiques | pypi.org |
rich | — | exécution | Ligne de commande | pypi.org |
typer | — | exécution | Ligne de commande | pypi.org |
fastapi | — | exécution | Cadriciel web | pypi.org |
uvicorn | — | exécution | Serveur d’application | pypi.org |
opencv-python-headless | — | exécution | Graphisme, image et 3D | pypi.org |
11. Glossaire
Dépôt
Les fichiers source, la configuration et l’historique versionné d’un projet.
README
Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.
Dépendance
Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.
API
Une interface par laquelle des composants logiciels échangent des requêtes et des résultats. Une API n’utilise pas nécessairement HTTP.
HTTP
Un protocole de requête et réponse utilisé par les navigateurs et services web. Une requête comprend une méthode, un chemin, des en-têtes et parfois un corps.
Volume et montage de dossier
Un volume est un stockage géré par la plateforme de conteneurs ; un montage de dossier expose un chemin de l’hôte dans un conteneur.
Interface en ligne de commande
Une interface textuelle où les commandes et arguments choisissent les opérations. Les codes de retour permettent aux scripts de détecter un succès ou un échec.
GPU
Un processeur conçu pour les calculs parallèles, dont le rendu graphique et de nombreuses opérations numériques.
Maillage
Une surface représentée par des sommets et des éléments reliés, souvent des triangles. Sa géométrie est distincte de son matériau ou de sa texture.
Backend
Une implémentation derrière une interface commune. Selon le contexte, il peut s’agir d’un service côté serveur ou d’une implémentation graphique, d’entrée ou de stockage.
12. Références
- ETSim. (2026, 5 novembre). [Web page] github.com.
- ETSim. (2026, 5 novembre). WearSurfacesDatasets. [Software repository] github.com.
- ETSim. (2026, 5 novembre). README. [Source file or documentation] github.com.
- ETSim. (2026, 5 novembre). data/parquet/sequences.json. [Source file or documentation] github.com.
- ETSim. (2026, 5 novembre). alignment/align.py. [Source file or documentation] github.com.
- ETSim. (2026, 5 novembre). alignment/extrapolate.py. [Source file or documentation] github.com.
- ETSim. (2026, 5 novembre). docs/serve_local.py. [Source file or documentation] github.com.
Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.