CoolFace
Datasetpublic

shanexf/2026-24679-fastener-matching

24-679 (Fall 2026): Fastener Matching — Bolt-and-Nut Compatibility shanexf/2026-24679-fastener-matching Photographs of bolt-and-nut pairs for a binary image classifier that predicts whether the two fasteners are compatible. Every photo shows exactly one bolt and one nut side by side. Matching and mismatching pairs were photographed under different orientations, positions, lighting conditions, and viewing angles. Source and task All photographs were taken by the… See the full description on the dataset page: https://huggingface.co/datasets/shanexf/2026-24679-fastener-matching.

sourceHugging Faceupdated 12d agoView on Hugging Face
0likes38downloads
Dataset Card

24-679 (Fall 2026): Fastener Matching — Bolt-and-Nut Compatibility

shanexf/2026-24679-fastener-matching

Photographs of bolt-and-nut pairs for a binary image classifier that predicts whether the two fasteners are compatible. Every photo shows exactly one bolt and one nut side by side. Matching and mismatching pairs were photographed under different orientations, positions, lighting conditions, and viewing angles.

Source and task

All photographs were taken by the dataset author for the 24-679 image-data assignment. The label is encoded by the Google Drive folder each photo was sorted into. The two classes are not equally represented; see the split table for the actual counts. 1 = match (the nut threads onto the bolt); 0 = mismatch (it does not). Compatibility was determined physically by trying the nut on the bolt before photographing the pair.

Course: 24-679, Fall 2026, Carnegie Mellon University.

Fields

FieldMeaning and modeling role
image224 × 224 RGB pixels; the model's image input.
labelClassification target: 1 = match; 0 = mismatch.
label_nameReadable target description; exclude from model inputs.
source_id, parent_idUnique row key and its original source key; provenance only.
augmentation, is_augmentedMethod identifier and synthetic flag; provenance only.

Splits

SplitRowsMismatch (0)Match (1)
original552629
augmented550260290

The original split holds the prepared photographs. The augmented split holds only synthetic rows, each generated from one original by exactly one transformation. Because every synthetic row shares an image with an original, evaluation should split by parent_id so that no parent appears on both sides of a train/test boundary.

Preprocessing and augmentation

Every original was oriented using EXIF metadata, converted to RGB, resized while preserving aspect ratio, and padded with gray (128, 128, 128) to 224 × 224. Camera metadata and original filenames are not stored.

Each original contributed exactly 10 synthetic variants, so the augmented split is 10x the original split and keeps its class proportion. Variants cycle through eight label-preserving methods: horizontal/vertical flip; rotation of 10–45° in either direction; translation of up to 12% of the frame; brightness factors 0.5–0.8 or 1.25–1.7; contrast factors 0.5–0.75 or 1.3–1.9; color saturation factors 0.3–0.7 or 1.3–1.8; Gaussian blur with radius 0.8–2.0 px; and additive Gaussian noise with σ = 6–18 on the 0–255 scale. Transforms are not stacked. Random choices use seed 24679.

Augmentation methodStored rows
brightness55
color_saturation55
contrast55
flip110
gaussian_blur55
gaussian_noise55
rotation110
translation55

Intended use and limitations

Use for teaching image preparation, augmentation, and small-data classification. The collection is small, comes from a single photographer and a limited set of fasteners, and can contain shortcuts such as background, lighting, or the specific bolts and nuts that recur across photos. Thread pitch is a fine detail that may not be resolvable at 224 × 224, so a classifier may rely on diameter and overall appearance instead. Synthetic variants do not add independent photographs. The classes are imbalanced, so report per-class accuracy or balanced accuracy rather than plain accuracy, and use a held-out set of fasteners that never appear in training before claiming generalization.

AI use acknowledgment

The preparation notebook's code, markdown, and this card were drafted with Claude (Anthropic) as a coding assistant and then reviewed, edited, and run by the dataset author. The photographs, the physical compatibility test behind each label, and the folder sorting were done by the author.

Privacy and licensing

The photographs contain only fasteners and a background surface; no people, faces, or identifying text. Original filenames and camera metadata were removed. No license is assigned by this card.

Load

python
from datasets import load_dataset
ds = load_dataset("shanexf/2026-24679-fastener-matching")
originals, synthetic = ds["original"], ds["augmented"]