Digital Image-Based Benchmark for Lithic Evaluation
End-to-end 3D lithic analysis β from photos to classified artefact, fully offline.
Status: Beta β An open-source research tool in active development. Named for Harold Dibble (1951β2018), pioneering lithic technologist and open-source advocate.
Dibble transforms 3D scans of stone tools into standardised morphometric measurements, typological classifications, and publication-ready figures β all on your own machine, no GPU required, no data sent to the cloud.
A single command takes you from mesh to analysis:
# Batch process a folder of 3D scans
lithicore batch ./excavation_meshes/ --output classified.csv
# Launch the desktop GUI
lithicope| Capability | What it does |
|---|---|
| π 3D processing | Import PLY/OBJ/STL β auto-orient β extract 22 morphometric measurements β detect flake scars β compute platform angles |
| π§ AI classification | Predict typology (Basic/Bordes/Technological) with 86.1% CV accuracy on European Upper Palaeolithic assemblages. Explainable predictions with per-feature breakdowns. |
| π· Photogrammetry | 9-stage COLMAP pipeline: raw photos β cleaned 3D mesh β PLY output. Three-tier interface from one-click to full expert control. |
| π Publication figures | Standardised three-view technical drawings (plan, profile, section) with scale bars and measurement callouts. Exported as SVG via VTK GL2PS. |
| π· 3D annotation | Pin notes, measurements, and screenshots to any point on the mesh surface. Export/import for collaboration. |
| π¬ AI Assistant | Query your collection in natural language via a local LLM. Fully offline β no data ever leaves your machine. |
| π§ͺ Training pipeline | Retrain classifiers on your own data. Add new typologies. Export to ONNX for deployment. |
Dibble is a research tool (v0.4.0-beta), not a commercial product. Please read these before using the classifier in published research.
~70% of training data comes from Italian Aurignacian sites (Fumane, Castelcivita, Cala, Bombrini). The combined model achieves 86.1% 5-fold CV on this data but performs significantly worse on non-European assemblages. We now provide tradition-specific models (OAP, COADS, Levantine, Experimental) β select the appropriate tradition from the GUI dropdown to get honest, per-tradition accuracy.
Dataset contributions from the archaeological community are warmly welcomed. If you have 3D scans of lithic assemblages from under-represented regions or time periods, please open an issue or pull request β every new tradition improves the classifier's ability to serve the whole field, not just one corner of it.
| Class | Samples | Reliability |
|---|---|---|
| Biface | 1,018 | Good |
| Blade | 993 | Good |
| Core | 751 | Good |
| Flake | 262 | Moderate |
| Experimental Core | 254 | Moderate |
| Retouched Flake | 57 | Low β verify |
| Unmodified Flake | 50 | Low β verify |
| Unmodified Cobble | 30 | Low β verify |
- Retrain on your own assemblage before relying on predictions
- Use tradition-specific models via the GUI dropdown for non-OAP assemblages
- Treat low-confidence predictions (<0.6) as suggestions requiring expert verification
- Run
lithicore benchmarkafter retraining to assess real performance - Review the feature breakdown panel to understand each decision
- Import formats: PLY, OBJ, STL (single file or batch directory)
- Auto-orientation: PCA-based alignment with platform detection + manual fallback
- Mesh validation: Detects non-manifold geometry, inverted normals, degenerate faces, isolated components β with auto-repair
- Measurement suite: Length, width, thickness, surface area, volume, elongation, flatness, compactness; platform angles (EPA/IPA); edge angle statistics (mean, std, skewness, kurtosis); curvature index; cross-section profile; symmetry score; dorsal ridge count; surface roughness
- Edge detection: Configurable dihedral angle thresholding for retouched edges and ridges
- Batch processing: Entire directories β CSV/JSON export
- Interactive 3D viewer β PyVista/VTK with rotate, zoom, pan, and four display modes (solid, wireframe, translucent, points)
- Diagnostic overlays β Viewer highlights dorsal ridges (blue), platform (green), and retouched edges (red)
- Publication figures β Three-view drawings (plan, profile, section) with scale bar and measurements. SVG via VTK GL2PS.
- Mesh comparison β Overlay two meshes with adjustable opacity, compare 9 difference metrics
- 3D landmarks β Click-to-place anatomical landmarks (13-point flake, 16-point biface). Export to MorphoJ format.
- Flake scar detection β Automated segmentation via Shape Index curvature + watershed algorithm
Dibble's classifier extracts a 47-dimensional feature vector from every mesh (22 core morphometrics + 10 interaction features + 15 topological PH features):
| Feature group | Examples |
|---|---|
| Size & shape | Length, width, thickness, area, volume, elongation, flatness, compactness |
| Angles | Platform angle (EPA/IPA), edge angle statistics (mean, std, skewness, kurtosis) |
| Surface | Scar count, curvature index, cross-section profile, symmetry, dorsal ridge count, roughness |
| Topological (PH) | Multi-scale surface texture via Alpha complex persistent homology (15 PCA components) |
Three pre-trained typologies:
| Typology | Classes | CV Accuracy |
|---|---|---|
| Basic | 8 | 86.1% |
| Bordes | 8 | 86.1% |
| Technological | 8 | 75.3% |
Tradition-aware classification: Select from OAP (Europe), COADS (Ohio), Levantine, or Experimental in the GUI β the model dispatches to a tradition-specific classifier that only predicts classes present in that tradition.
Explainable predictions: Every prediction comes with a per-feature breakdown β which measurements drove the decision, their values, and whether each falls in the expected range for the predicted type.
Active learning: Correct a prediction β the sample queues for retraining. After 10 corrections, the model retrains automatically on baseline data plus your corrections.
Custom typologies: Define your own classification system, train on your labelled meshes, save the model to share with colleagues.
- 9-stage COLMAP pipeline: Feature extraction β matching β sparse reconstruction β dense MVS β fusion β cleaning β meshing β decimation β output
- Three-tier interface: Default (one-click), Guided (quality/speed settings), Expert (full COLMAP control)
- Photo pre-processing: Blur detection (Laplacian variance), CLAHE exposure normalisation, auto-resize
- Scale detection: ArUco markers (Β±0.1%), ruler/scale bar (Β±1%), or manual
- Batch queue: Process multiple artefacts sequentially with progress tracking
- Pin notes, measurements, and screenshots to any mesh surface point
- Three display modes: Pin+Label, Pin Only, Numbered with legend
- Export/import for collaboration (intelligent merge by 3D position)
- Ask questions in plain English: "Show me crested blades with platform angles over 75Β°"
- Local Qwen3-4B LLM via llama.cpp β fully offline, no data ever leaves your machine
- Translates questions to SQL β queries in-memory DuckDB β explains results
- Self-correcting (up to 3 retries on SQL failure)
- Optional:
pip install llama-cpp-python(~2.5 GB model downloads on first use)
# 1. Install from source
git clone https://github.com/mabo-du/dibble.git
cd dibble
pip install -e lithicore # Core library
pip install -e lithicope # GUI (optional)
# 2. Verify
lithicore --help
lithicore benchmark # Validation report β browser
# 3. Process meshes
lithicore batch ./meshes/ --output results.csv
lithicore figure artefact.ply --output figure.svg --label "FLK-145"
# 4. Launch GUI
lithicopelithicore/ # Core library (pure Python, no GUI)
βββ src/lithicore/
β βββ _models.py # All shared data types
β βββ _classification.py # 47-dim feature extraction + classifier
β βββ _ph_features.py # Persistent Homology (Alpha complex)
β βββ _validation.py # Mesh validation + repair
β βββ _orientation.py # PCA + manual orientation
β βββ _metrics.py # Length, width, thickness, etc.
β βββ _edge_detection.py # Dihedral angle edge detection
β βββ _platform_angle.py # EPA, IPA extraction
β βββ _comparison.py # Mesh comparison metrics
β βββ _landmarks.py # 3D landmark placement
β βββ _scar_detection.py # Shape Index + watershed
β βββ _figure.py # Publication figure generator
β βββ _batch.py # Batch processing
β βββ _cli.py # CLI entry point
β βββ _photogrammetry.py # COLMAP pipeline
β βββ _scale_detection.py # ArUco + ruler detection
β βββ _photo_preprocessing.py # Blur + exposure correction
β βββ _annotations.py # Annotation data model
β βββ _assistant.py # AI Lithic Assistant
βββ data/
β βββ models/ # Pre-trained classifiers (.joblib)
β βββ training/
β β βββ retrain.py # Retrain all classifiers
β β βββ batch_ph.py # Batch PH feature computation
β β βββ processed/ # training_matrix.csv
β βββ run_benchmark.py # CLI benchmark entry point
lithicope/ # Desktop GUI (PyQt6 + PyVista)
βββ src/lithicope/
βββ main.py # Entry point
βββ _main_window.py # Tabbed main window
βββ _viewer_3d.py # 3D viewport (PyVista)
βββ _classification_panel.py # Classification + tradition selector
βββ _annotation_panel.py # Annotation management
βββ _assistant_panel.py # AI Assistant chat interface
βββ _photogrammetry_dialog.py # 3-mode photogrammetry
βββ _results_panel.py # Measurement display
βββ _batch_runner.py # Threaded batch processing
βββ _import_dialog.py # Import configuration
Trained on 3,415 real-world 3D scans from five assemblages across three continents:
| Source | Origin | Artefacts | Scanner | Years represented |
|---|---|---|---|---|
| Open Aurignacian Project | Italy | 2,010 | Artec Space Spider / micro-CT | ~42,000β33,000 BP |
| Levantine Acheulean Handaxes | Israel/Palestine | 526 | Structured light | ~1.4Mβ200,000 BP |
| COADS Projectile Points | Ohio, USA | 492 | Structured light | ~3,000β1,000 BP |
| Lombao Experimental Cores | Spain | 284 | Structured light | Modern (controlled) |
| Morales Experimental Retouch | Spain | 100 | Structured light | Modern (controlled) |
The Open Aurignacian Project datasets (Fumane, Castelcivita, Cala, Bombrini) were generously made available by Armando Falcucci and colleagues at the University of Southampton and the University of TΓΌbingen. These open-access repositories of high-resolution 3D lithic models have been invaluable. If you use Dibble with Aurignacian material, please consider citing their work β full references can be found in the research papers directory.
| Dependency | Version | Purpose |
|---|---|---|
| Python | 3.11+ (3.13 supported) | Runtime |
| PyQt6 | β₯6.5 | GUI framework |
| PyVista / VTK | β₯0.42 | 3D rendering + figure export |
| trimesh | β₯4.0 | Mesh processing |
| NumPy / SciPy | β₯1.24 / β₯1.11 | Numerical computing |
| scikit-learn / joblib | β₯1.3 / β₯1.2 | Classifier training |
| opencv-python | β₯4.7 | Photo pre-processing + ArUco |
| GUDHI | β₯3.12 | Persistent Homology (PH features) |
| umap-learn / hdbscan | optional | Morphospace diagnostics |
| llama-cpp-python | optional | Local LLM (AI Assistant) |
| COLMAP | separate install | Photogrammetry |
- User Guide β Full documentation: installation, GUI, CLI, training pipeline
- Research Papers β Deep Research papers on accuracy enhancement, PH, and typology
- Research Prompts β Prompts used for Deep Research investigations
@software{bouck2026dibble,
author = {Bouck, M.},
title = {Dibble: Digital Image-Based Benchmark for Lithic Evaluation},
year = {2026},
version = {0.4.0-beta},
url = {https://github.com/mabo-du/dibble},
}MIT License. See LICENSE for details.
Built for the archaeological community. Named for Harold Dibble (1951β2018).