sunkaiwen/sketch2stl-parts-tabular
sketch2stl-parts-tabular A small, hand-measured tabular dataset of 34 desk-scale physical objects, plus 400 label-preserving synthetic rows, built to support a 2D-sketch-to-3D-print system. 1. Purpose This dataset was built for Homework 1 of Designing with AI, in direct support of my Project 1 system: a Gradio application that turns a simple 2D sketch into an editable, 3D-printable STL. The one decision that determines whether that pipeline produces a correct… See the full description on the dataset page: https://huggingface.co/datasets/sunkaiwen/sketch2stl-parts-tabular.
sketch2stl-parts-tabular
A small, hand-measured tabular dataset of 34 desk-scale physical objects, plus 400 label-preserving synthetic rows, built to support a 2D-sketch-to-3D-print system.
1. Purpose
This dataset was built for Homework 1 of Designing with AI, in direct support of my Project 1 system: a Gradio application that turns a simple 2D sketch into an editable, 3D-printable STL.
The one decision that determines whether that pipeline produces a correct model or a silently wrong one is whether a drawn outline can be turned into a solid by straight extrusion alone. This dataset is a geometry-first, tabular view of that decision: features that my pipeline can actually estimate from a sketch plus the GUI sliders, and a binary label saying whether straight extrusion is enough.
Intended use: teaching and prototyping binary classifiers and regressors for extrusion feasibility; practising augmentation and HF Datasets workflows. Out of scope: any engineering, manufacturing, safety or tolerance decision. 34 objects from one student's desk is not a sample of anything.
2. Composition
34 unique physical objects, each measured by hand, split 70 / 15 / 15 before any augmentation, with augmentation applied to the training objects only.
split_source marks every row as measured or synthetic, so the real rows are always recoverable.
Fields (20 columns)
- Identity / provenance:
object_id,object_name,split,split_source,aug_technique,source_object_id - Measured features (7):
length_mm,width_mm,height_mm,n_through_holes,n_straight_edges,silhouette_class,material,wall_thickness_mm - Derived features (4):
aspect_ratio,flatness,footprint_mm2,hole_density - Targets: `extrudable` (ClassLabel:
not_extrudable/extrudable),extrusion_depth_mm(float, mm)
silhouette_class values: circle, rectangle, rounded_rect, polygon, irregular. material values: plastic, metal, paper, wood, ceramic, rubber, silicone, cork.
Class balance across the 34 objects: 20 extrudable / 14 not extrudable (59 % / 41 %). The split is stratified on the target, so all three splits hold roughly that ratio, and augmentation preserves it to within a couple of percent.
3. Collection
- Who / when / where: one person (me), in a single sitting on 2026-09-15, at my own desk and workbench.
- Sampling frame: everything on the desk, in the pencil case, or in the toolbox that fits in a 320 mm box and is safe to handle. Deliberately mixed easy and hard cases so the target is not trivially separable.
- Instruments: 150 mm digital caliper (0.01 mm resolution, values reported to 0.1 mm) for parts < 150 mm; steel rule (1 mm) for the 300 mm ruler and the marker.
- Orientation convention: each object was measured in its most stable resting orientation, because that is the silhouette a user would draw.
length_mm≥width_mmby convention;height_mmis out of plane. - Repeats: each object was measured once. This is the main source of noise in the original split and is precisely what the T1 augmentation models.
No people, faces, locations, or personal information were recorded. Nothing was scraped, purchased, or downloaded; every row is a direct physical measurement.
4. Preprocessing & augmentation
Split first. The 34 objects are split 70 / 15 / 15 (stratified on extrudable) before augmentation, and only the training objects are augmented. See §6.
Preprocessing. Values are rounded to 0.1 mm (dimensions) and 2 dp (derived). Derived features are computed, never entered, and are recomputed after augmentation so they can never disagree with their inputs. Integrity assertions (uniqueness, length >= width, wall <= height, positivity, no NaN, binary target) run before anything is uploaded.
Augmentation (400 rows, four techniques, ~100 rows each):
Never perturbed: n_through_holes, n_straight_edges, silhouette_class, material — changing any of these could flip the label, which would make the augmentation label-destroying.
Guards: dimensions clipped to ≥ 0.2 mm; wall_thickness_mm clipped to height_mm; the length >= width convention re-imposed; exact-duplicate check; distribution-overlap plot against the original split.
5. Labels
extrudable = 1 iff sweeping the top-down silhouette in a straight line along the height axis reproduces the object to within roughly ±1 mm everywhere, adding or removing no material; 0 otherwise.
Labelling was done by hand, by me, in a single pass against the rule above. Three rows were borderline (AA battery, guitar pick, carabiner) and were resolved by re-reading the ±1 mm clause rather than by instinct.
This is individual coursework, so there is no second annotator and no inter-annotator agreement figure. The label is a documented judgement by one person, unchecked by anyone else — see Limitations.
6. Splits
The 34 objects were split 70 / 15 / 15, stratified on `extrudable`, before any augmentation ran, and every synthetic row descends from a training object. The ordering is the point: augmenting first and splitting afterwards would scatter jittered copies of test objects through the training set, and the resulting test score would measure memorisation rather than generalisation. The notebook asserts that no synthetic row descends from a held-out object, and that validation and test contain no synthetic rows at all.
Use these splits as shipped. Do not concatenate and re-split them — that would undo the guarantee. Do not report numbers from train.
The split is over objects, not rows: every physical object lands in exactly one split.
7. Intended use and limitations
Appropriate: coursework; prototyping extrusion-feasibility classifiers; demonstrating augmentation and HF Datasets; a stand-in target while the real sketch model is built.
Limitations
- Tiny and non-random. 34 objects from one person's desk. It over-represents stationery and small hardware and contains no furniture, no textiles, no organic shapes.
- The label is a judgement by a single annotator. A written rule with worked examples, applied by one person with no independent check — not a physical fact, and never validated by a second reader.
- Single measurement per object. No repeatability estimate; T1's σ = 1.5 % is an assumption, not a measured error.
- `validation` and `test` are very small — 5 and 6 objects. A single row is worth roughly 20 percentage points of accuracy, so any metric from them has a very wide confidence interval and comparing two models on them is close to meaningless. They are a smoke test. This is a consequence of a 34-object dataset, not of the splitting scheme, and it is the honest headline number to quote alongside any result.
- Augmented rows are not independent. The 400 synthetic rows in
traincarry only about 23 objects' worth of information, so the effective training set is far smaller than its row count. This does not biasvalidationortest, which contain no synthetic rows — but expect training accuracy to sit well above validation accuracy, and read that gap as normal rather than as a bug. - `object_name` leaks the label to a human and to any text model. It is provenance metadata; exclude it from features.
- Categorical coverage is thin.
ceramic,cork,rubberandsiliconeappear once each.
Not appropriate: engineering or manufacturing decisions, tolerance analysis, safety-relevant use, or any claim about objects in general.
8. Ethical considerations
The dataset contains only measurements of inanimate objects. No people, faces, voices, locations, or personal data; nothing was scraped or taken from a third party; no proprietary CAD or product data is included. The objects are common consumer items and the measurements reveal nothing about their owners beyond the uninteresting fact that I own a stapler.
The realistic harm here is misplaced confidence: a model trained on 34 objects and 400 of their echoes could look accurate and then be wrong about a real user's sketch. That is why the limitations above are stated bluntly and why the augmented split is explicitly flagged as derived rather than independent.
9. License
CC-BY-4.0. Attribution requested. The measurements are my own original work.
10. AI usage disclosure
Generative AI (Claude, Anthropic) was used as a coding and writing assistant for this assignment, in line with the course's vibe-coding module. Specifically it was used to:
- draft and refactor the augmentation functions, the validation checks and the plotting code in the notebook;
- draft the prose of this Model Card and the notebook's explanatory sections.
It was not used to invent data. All 34 rows of the original split are physical measurements taken by me with a caliper and a rule, and all 34 labels were assigned by me by hand. Every AI-drafted cell was executed and checked by me, and the augmentation arguments were reviewed against the geometry before being accepted. I am responsible for all content.
11. Citation
@misc{sketch2stl_parts_tabular_2026,
title = {sketch2stl-parts-tabular: measured geometry of desk-scale objects for extrusion-feasibility prediction},
author = {Serena Sun},
year = {2026},
note = {Homework 1, Designing with AI},
url = {https://huggingface.co/datasets/sunkaiwen/sketch2stl-parts-tabular}
}