{ "model": "RitualCNN", "seed": 42, "input_shape": [ 1, 1, 128, 128 ], "labels": [ "Acervus", "Avarus", "Flosculus", "Mutus", "Not", "Pudor", "Regium" ], "dataset": { "source_image_files": 163, "class_counts": { "Acervus": { "train": 22, "validation": 5 }, "Avarus": { "train": 12, "validation": 3 }, "Flosculus": { "train": 20, "validation": 5 }, "Mutus": { "train": 18, "validation": 5 }, "Not": { "train": 19, "validation": 5 }, "Pudor": { "train": 13, "validation": 3 }, "Regium": { "train": 26, "validation": 7 } }, "integrity_audit": { "source_files": 163, "train_validation_overlap": 0, "byte_identical_duplicate_groups": 0, "identical_preprocessed_input_groups": 0, "dataset_fingerprint_sha256": "7aef6ce783ea2e6839bfc28aa147ae794907a9d1b1784ede1bd0059978e460bc" } }, "split": { "strategy": "Stratified random split by class at source-file level, before augmentation.", "seed": 42, "training_images": 130, "validation_images": 33, "training_files": [ "ritualcnn/data/acervus/Canvas_20251014_122917.png", "ritualcnn/data/acervus/Canvas_20251014_122943.png", "ritualcnn/data/acervus/Canvas_20251014_123009.png", "ritualcnn/data/acervus/Canvas_20251014_123245.png", "ritualcnn/data/acervus/Canvas_20251014_123643.png", "ritualcnn/data/acervus/Canvas_20251014_123729.png", "ritualcnn/data/acervus/Canvas_20251014_123754.png", "ritualcnn/data/acervus/Canvas_20251014_130341.png", "ritualcnn/data/acervus/Canvas_20251014_130359.png", "ritualcnn/data/acervus/Canvas_20251014_130415.png", "ritualcnn/data/acervus/Canvas_20251014_130427.png", "ritualcnn/data/acervus/Canvas_20251014_130447.png", "ritualcnn/data/acervus/Canvas_20251014_130502.png", "ritualcnn/data/acervus/acervus-ritual.png", "ritualcnn/data/acervus/acervus-ritual2.png", "ritualcnn/data/acervus/acervus-ritual3.png", "ritualcnn/data/acervus/acervus-ritual4.png", "ritualcnn/data/acervus/acervus-ritual5.png", "ritualcnn/data/acervus/acervus-ritual6.png", "ritualcnn/data/acervus/acervus-ritual7.png", "ritualcnn/data/acervus/acervus-ritual8.png", "ritualcnn/data/acervus/acervus-ritual9.png", "ritualcnn/data/avarus/avarus-ritual.png", "ritualcnn/data/avarus/avarus-ritual10.png", "ritualcnn/data/avarus/avarus-ritual11.png", "ritualcnn/data/avarus/avarus-ritual12.png", "ritualcnn/data/avarus/avarus-ritual13.png", "ritualcnn/data/avarus/avarus-ritual14.png", "ritualcnn/data/avarus/avarus-ritual15.png", "ritualcnn/data/avarus/avarus-ritual2.png", "ritualcnn/data/avarus/avarus-ritual5.png", "ritualcnn/data/avarus/avarus-ritual6.png", "ritualcnn/data/avarus/avarus-ritual8.png", "ritualcnn/data/avarus/avarus-ritual9.png", "ritualcnn/data/flosculus/flosculus-ritual.png", "ritualcnn/data/flosculus/flosculus-ritual10.png", "ritualcnn/data/flosculus/flosculus-ritual11.png", "ritualcnn/data/flosculus/flosculus-ritual12.png", "ritualcnn/data/flosculus/flosculus-ritual13.png", "ritualcnn/data/flosculus/flosculus-ritual14.png", "ritualcnn/data/flosculus/flosculus-ritual15.png", "ritualcnn/data/flosculus/flosculus-ritual16.png", "ritualcnn/data/flosculus/flosculus-ritual17.png", "ritualcnn/data/flosculus/flosculus-ritual18.png", "ritualcnn/data/flosculus/flosculus-ritual20.png", "ritualcnn/data/flosculus/flosculus-ritual21.png", "ritualcnn/data/flosculus/flosculus-ritual22.png", "ritualcnn/data/flosculus/flosculus-ritual24.png", "ritualcnn/data/flosculus/flosculus-ritual25.png", "ritualcnn/data/flosculus/flosculus-ritual3.png", "ritualcnn/data/flosculus/flosculus-ritual6.png", "ritualcnn/data/flosculus/flosculus-ritual7.png", "ritualcnn/data/flosculus/flosculus-ritual8.png", "ritualcnn/data/flosculus/flosculus-ritual9.png", "ritualcnn/data/mutus/Canvas_20251014_123308.png", "ritualcnn/data/mutus/Canvas_20251014_152157.png", "ritualcnn/data/mutus/Canvas_20251014_152211.png", "ritualcnn/data/mutus/Canvas_20251014_152235.png", "ritualcnn/data/mutus/Canvas_20251014_152310.png", "ritualcnn/data/mutus/Canvas_20251014_152433.png", "ritualcnn/data/mutus/Canvas_20251014_152445.png", "ritualcnn/data/mutus/Canvas_20251014_152453.png", "ritualcnn/data/mutus/mutus-ritual.png", "ritualcnn/data/mutus/mutus-ritual10.png", "ritualcnn/data/mutus/mutus-ritual11.png", "ritualcnn/data/mutus/mutus-ritual12.png", "ritualcnn/data/mutus/mutus-ritual2.png", "ritualcnn/data/mutus/mutus-ritual3.png", "ritualcnn/data/mutus/mutus-ritual6.png", "ritualcnn/data/mutus/mutus-ritual7.png", "ritualcnn/data/mutus/mutus-ritual8.png", "ritualcnn/data/mutus/mutus-ritual9.png", "ritualcnn/data/not_a/Canvas_20251014_130619.png", "ritualcnn/data/not_a/Canvas_20251014_130626.png", "ritualcnn/data/not_a/Canvas_20251014_130635.png", "ritualcnn/data/not_a/Canvas_20251014_130745.png", "ritualcnn/data/not_a/Canvas_20251014_130755.png", "ritualcnn/data/not_a/Canvas_20251014_130810.png", "ritualcnn/data/not_a/Canvas_20251014_130823.png", "ritualcnn/data/not_a/not_a_ritual.png", "ritualcnn/data/not_a/not_a_ritual11.png", "ritualcnn/data/not_a/not_a_ritual13.png", "ritualcnn/data/not_a/not_a_ritual14.png", "ritualcnn/data/not_a/not_a_ritual2.png", "ritualcnn/data/not_a/not_a_ritual3.png", "ritualcnn/data/not_a/not_a_ritual4.png", "ritualcnn/data/not_a/not_a_ritual5.png", "ritualcnn/data/not_a/not_a_ritual6.png", "ritualcnn/data/not_a/not_a_ritual7.png", "ritualcnn/data/not_a/not_a_ritual8.png", "ritualcnn/data/not_a/not_a_ritual9.png", "ritualcnn/data/pudor/Canvas_20251014_123443.png", "ritualcnn/data/pudor/Canvas_20251014_123455.png", "ritualcnn/data/pudor/Canvas_20251014_123538.png", "ritualcnn/data/pudor/Canvas_20251014_123542.png", "ritualcnn/data/pudor/Canvas_20251014_123554.png", "ritualcnn/data/pudor/pudor-ritual.png", "ritualcnn/data/pudor/pudor-ritual10.png", "ritualcnn/data/pudor/pudor-ritual2.png", "ritualcnn/data/pudor/pudor-ritual3.png", "ritualcnn/data/pudor/pudor-ritual5.png", "ritualcnn/data/pudor/pudor-ritual6.png", "ritualcnn/data/pudor/pudor-ritual7.png", "ritualcnn/data/pudor/pudor-ritual9.png", "ritualcnn/data/regium/regium-ritual.png", "ritualcnn/data/regium/regium-ritual10.png", "ritualcnn/data/regium/regium-ritual11.png", "ritualcnn/data/regium/regium-ritual12.png", "ritualcnn/data/regium/regium-ritual13.png", "ritualcnn/data/regium/regium-ritual14.png", "ritualcnn/data/regium/regium-ritual15.png", "ritualcnn/data/regium/regium-ritual16.png", "ritualcnn/data/regium/regium-ritual17.png", "ritualcnn/data/regium/regium-ritual18.png", "ritualcnn/data/regium/regium-ritual2.png", "ritualcnn/data/regium/regium-ritual21.png", "ritualcnn/data/regium/regium-ritual22.png", "ritualcnn/data/regium/regium-ritual23.png", "ritualcnn/data/regium/regium-ritual24.png", "ritualcnn/data/regium/regium-ritual25.png", "ritualcnn/data/regium/regium-ritual27.png", "ritualcnn/data/regium/regium-ritual28.png", "ritualcnn/data/regium/regium-ritual3.png", "ritualcnn/data/regium/regium-ritual31.png", "ritualcnn/data/regium/regium-ritual32.png", "ritualcnn/data/regium/regium-ritual33.png", "ritualcnn/data/regium/regium-ritual5.png", "ritualcnn/data/regium/regium-ritual6.png", "ritualcnn/data/regium/regium-ritual7.png", "ritualcnn/data/regium/regium-ritual9.png" ], "validation_files": [ "ritualcnn/data/acervus/Canvas_20251014_122828.png", "ritualcnn/data/acervus/Canvas_20251014_122955.png", "ritualcnn/data/acervus/Canvas_20251014_123700.png", "ritualcnn/data/acervus/Canvas_20251014_123809.png", "ritualcnn/data/acervus/Canvas_20251014_130518.png", "ritualcnn/data/avarus/avarus-ritual3.png", "ritualcnn/data/avarus/avarus-ritual4.png", "ritualcnn/data/avarus/avarus-ritual7.png", "ritualcnn/data/flosculus/flosculus-ritual19.png", "ritualcnn/data/flosculus/flosculus-ritual2.png", "ritualcnn/data/flosculus/flosculus-ritual23.png", "ritualcnn/data/flosculus/flosculus-ritual4.png", "ritualcnn/data/flosculus/flosculus-ritual5.png", "ritualcnn/data/mutus/Canvas_20251014_152223.png", "ritualcnn/data/mutus/Canvas_20251014_152246.png", "ritualcnn/data/mutus/Canvas_20251014_152258.png", "ritualcnn/data/mutus/mutus-ritual4.png", "ritualcnn/data/mutus/mutus-ritual5.png", "ritualcnn/data/not_a/Canvas_20251014_130643.png", "ritualcnn/data/not_a/Canvas_20251014_130805.png", "ritualcnn/data/not_a/Canvas_20251014_130815.png", "ritualcnn/data/not_a/not_a_ritual10.png", "ritualcnn/data/not_a/not_a_ritual12.png", "ritualcnn/data/pudor/Canvas_20251014_123525.png", "ritualcnn/data/pudor/pudor-ritual4.png", "ritualcnn/data/pudor/pudor-ritual8.png", "ritualcnn/data/regium/regium-ritual19.png", "ritualcnn/data/regium/regium-ritual20.png", "ritualcnn/data/regium/regium-ritual26.png", "ritualcnn/data/regium/regium-ritual29.png", "ritualcnn/data/regium/regium-ritual30.png", "ritualcnn/data/regium/regium-ritual4.png", "ritualcnn/data/regium/regium-ritual8.png" ] }, "training": { "epochs_requested": 60, "best_epoch": 47, "early_stopping_patience": 10, "batch_size": 16, "deterministic_algorithms": true, "shuffle_seed": 42, "optimizer": "Adam", "learning_rate": 0.001, "weight_decay": 0.0001, "loss": "class-weighted cross-entropy", "augmentation": "On-the-fly, training split only: random rotation up to 15 degrees and translation up to 12 pixels, independently with 50% probability.", "seconds": 70.76, "pytorch_version": "2.8.0+cpu" }, "validation_loss": 1.158913, "validation": { "accuracy": 0.6364, "macro_f1": 0.5978, "classes_present": [ "Acervus", "Avarus", "Flosculus", "Mutus", "Not", "Pudor", "Regium" ], "per_class": { "Acervus": { "support": 5, "precision": 1.0, "recall": 0.4, "f1": 0.5714 }, "Avarus": { "support": 3, "precision": 0.75, "recall": 1.0, "f1": 0.8571 }, "Flosculus": { "support": 5, "precision": 0.5556, "recall": 1.0, "f1": 0.7143 }, "Mutus": { "support": 5, "precision": 0.0, "recall": 0.0, "f1": 0.0 }, "Not": { "support": 5, "precision": 1.0, "recall": 0.6, "f1": 0.75 }, "Pudor": { "support": 3, "precision": 0.5, "recall": 1.0, "f1": 0.6667 }, "Regium": { "support": 7, "precision": 0.5556, "recall": 0.7143, "f1": 0.625 } }, "confusion_matrix": [ [ 2, 0, 3, 0, 0, 0, 0 ], [ 0, 3, 0, 0, 0, 0, 0 ], [ 0, 0, 5, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 4 ], [ 0, 1, 1, 0, 3, 0, 0 ], [ 0, 0, 0, 0, 0, 3, 0 ], [ 0, 0, 0, 0, 0, 2, 5 ] ] }, "supplementary_test": { "unique_images": 4, "files_found": 6, "excluded_duplicates": { "byte_identical_to_source": 2, "identical_preprocessed_input_to_source": 0 }, "results": { "accuracy": 0.75, "macro_f1": 0.6, "classes_present": [ "Flosculus", "Pudor", "Regium" ], "per_class": { "Acervus": { "support": 0, "precision": 0.0, "recall": 0.0, "f1": 0.0 }, "Avarus": { "support": 0, "precision": 0.0, "recall": 0.0, "f1": 0.0 }, "Flosculus": { "support": 1, "precision": 1.0, "recall": 1.0, "f1": 1.0 }, "Mutus": { "support": 0, "precision": 0.0, "recall": 0.0, "f1": 0.0 }, "Not": { "support": 0, "precision": 0.0, "recall": 0.0, "f1": 0.0 }, "Pudor": { "support": 1, "precision": 0.0, "recall": 0.0, "f1": 0.0 }, "Regium": { "support": 2, "precision": 0.6667, "recall": 1.0, "f1": 0.8 } }, "confusion_matrix": [ [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 1 ], [ 0, 0, 0, 0, 0, 0, 2 ] ] }, "interpretation": "A very small supplementary set; excluded from model selection." }, "onnx": { "opset": 11, "max_abs_error_vs_pytorch": 1.1920928955078125e-06, "sha256": "985c6780057b8f016cae3db9be06c80752f23cd5837dfec9f4f6779e00574da8", "bytes": 409063 }, "limitations": "The dataset contains only 163 labeled source files. The validation set has 3-7 files per class. No creator or session metadata is available for a grouped split, so similarly shaped drawings may appear in both splits. Validation does not establish real-world accuracy." }