Part of the AI4Manufacturing FORGE corpus (Category C, task T-C1), and the corpus's first arc-welding dataset.
Dataset Card
By AI4Manufacturing, published under cc-by-4.0, revision 0bec94dc1f05.
ASIMOW — heat input against the process window (reasoning track)
Part of the AI4Manufacturing FORGE corpus (Category C, task T-C1), and the corpus's first arc-welding dataset. Each record is one labelled stretch of a pulsed gas-metal arc weld, drawn as the heat input of every current pulse along that stretch with the heat-input window laid over it: a thin grey trace through the individual pulses, a rolling-median line, and a shaded band with dashed limits. The only thing to read off it is how much of the trace leaves the band.
That is not the usual Category-C picture, and it is not an oversight. Every other signal dataset here asks which fault line is present; welding has none. A welder judges a stretch of weld by how much heat went into it and whether that heat stayed inside the range the procedure qualifies — too much and it burns through, too little and it does not fuse. Structurally this is a power curve: draw what it should be, then put the measurement on top.
Records: 204 (splits {'train': 156, 'test': 24, 'validation': 24}); labels {'out_of_spec': 101, 'in_spec': 103}; evidence_tier {'weak': 52, 'confirmed': 145, 'absent': 7} — not used as a filter, see the caveats.
from datasets import load_dataset
ds = load_dataset("AI4Manufacturing/ASIMOW")
Rig
Pulsed gas-metal arc welding (GMAW). One current pulse melts one droplet of wire off the electrode and carries it into the pool, so the process has its own natural unit — the pulse — and the machine can only measure two things: welding current and welding voltage. Both are sampled synchronously at 100 kHz with a maximum permissible error of 0.5 %. 68 weld runs were recorded across 3 experiment campaigns, and 204 stretches — exactly three per weld — carry a quality verdict saying whether that stretch was welded with its parameters inside the qualified range. The archive attributes those verdicts to destructively examined cross sections; it documents neither the base material nor the process parameters, and this build asserts neither.
What the number behind the picture is
weld_iv_stability integrates V·I over each pulse's own duration to get its heat input in joules; render_heat_window draws those joules along the weld against the window. Every pulse's metrics are computed, and the per-record aggregates — both window edges scored separately, the excursions, the margins, the quantiles, the arc metrics — are carried in metadata so a chain-of-thought can cite numbers instead of inventing them.
| criterion | AUC | shuffled ceiling |
|---|---|---|
| out-of-window fraction (what the image draws) | 0.701 | 0.633 |
| median heat per pulse | 0.809 | 0.637 |
| heat coefficient of variation | 0.669 | 0.583 |
The second row is the stronger number, and it is deliberately not what the image draws: a single median compresses the whole trace into one scalar, whereas the picture keeps where along the weld the heat left the band and by how much. The image is for a model that reads a line, not for a threshold.
Schema (7-field unified record)
| field | meaning |
|---|---|
query |
the classification instruction (one of 30 deterministic paraphrases) |
image |
the rendered heat-input/process-window image (bytes embedded) |
annot |
gold class: in_spec / out_of_spec |
reasoning |
chain-of-thought — empty here; an ASIMOW-annotated sibling would fill it |
cate / task |
C / T-C1 (signal classification) |
metadata |
JSON string carrying every number the verdict rests on: the two window edges and the counts/excursions/margins at each of them separately, the full energy quantile set, the pulse-to-pulse scatter, a 32-point rolling-median profile, the out-of-window fraction per tenth of the section, all three pre-registered criteria with their own train-calibrated cut, direction and margin, the per-pulse arc metrics (peak/base current, peak time, pulse duration and rate), short-circuit counts, the window's provenance and pool size, computed_verdict, evidence_tier, ids, split and image_sha256 |
Splits
train / validation / test = the dataset README's own held-out (experiment, welding_run) pairs — 8 validation welds, 8 test welds, the remaining 52 train. group_id is the weld, so all three of a weld's cross-sections stay on one side.
Provenance & how the criterion was calibrated
Generated deterministically by forge_agent/examples/asimow_welding/convert.py (4c4873f9c7) → forge_model/ASIMOW/convert_asimow.py (9448e33334). Re-running the producer reproduces every PNG and the manifest byte for byte. See provenance.json for the full record.
The heat is measured on the raw 100 kHz recording, not on the archive's preprocessed copy. The archive ships both raw_data.csv (147,109,663 samples) and processed_asimow.csv (209,185 pulses, each resampled to a fixed 200 points). Their pulse segmentation agrees exactly — same 209,185 pulses, same counts inside every weld — but the resampling erases pulse duration: measured on the raw file a pulse lasts 6.85 ms at the median, i.e. 146 Hz, while the preprocessed copy read at its nominal step says 500 Hz — a 3.4× artefact. Since ∫V·I dt needs the true duration, every number here comes from the raw file. The preprocessed file is used for one thing only: the extent of each label.
The process window is substituted, and that is the weakest link. A real window comes from a procedure qualification record; this archive has none. So the band is the 10th–90th percentile of per-pulse heat over good-labelled material in the TRAIN welds, recomputed for every record with that record's own weld held out, because a window fitted to the weld it judges puts every weld inside its own window by construction. It lands at about 27.9–31.9 J. Read the band as what sound welds elsewhere did, not as what the procedure permits.
The criterion is real and weak, and both halves are stated. Out-of-window fraction separates the two classes at AUC 0.701 against a label-shuffled ceiling of 0.633 (sections shuffled by weld, 400 draws) — it crosses, so it is not noise. But the best single cut on it, searched on the training welds only, is worth just 69 % balanced accuracy. The direction (higher = out of spec) was measured on the training split, not assumed, and applied blind.
Two further pre-registered criteria are carried per record with their own train-calibrated cuts: median heat per pulse (AUC 0.809) and the heat coefficient of variation (AUC 0.669). They were written down before the run and neither replaced the criterion the image draws.
Caveats
- 204 answers, not 209,185. The archive records 209,185 welding pulses but carries only 204 verdicts, one per examined stretch. Both of its CSVs write those 204 verdicts onto tens of thousands of rows; counting rows as samples inflates the set several hundredfold. One record here = one examined stretch = one image, so this release is deliberately 204 rows from 68 welds and not more. A per-weld image was the other candidate and was rejected: 11 of the 68 welds carry more than one verdict, and on the other 57 most of the trace would be material nobody examined.
- The label is a parameter setting, not a defect. The archive's column is "good / bad weld quality", but per-pulse heat alone separates the two classes at AUC 0.809 — that is what a machine set to a different level looks like, not what an unpredictable flaw looks like. The answer space is therefore
in_spec/out_of_specand every query asks whether the parameters were inside the qualified window. Do not present this as defect detection. - The window is a stand-in. It comes from sound material in other welds, not from a procedure qualification record (there is none in the archive). A model trained here learns "unlike the sound welds in this campaign", which is narrower than "outside the WPS".
- No evidence gate; every record ships. Other signal releases in this corpus keep only records whose blind computation lands on the gold label. Not here: at AUC 0.701 that filter would delete the sections where the window rule and the destructive test disagree — which is the honest content of this dataset — and would manufacture a separability it does not have.
evidence_tieris carried per record (confirmed/weak/absent) andevidence_is_gateis False on every row, so a downstream pass can filter deliberately rather than inherit a hidden one. - The tier is measured on the SIGNAL, not on the image. The computation reads the per-pulse energies and never opens the PNG, so a
weaktier means this signal does not support the label, not this image fails to show it. Image-side readability has never been measured, here or anywhere in this corpus. - The two source files disagree about how far a label reaches. Both mark the same 204 cross-sections and agree on all 204 verdicts, but
raw_data.csvlabels a 16–55 pulse core (median 32, ~0.22 s of welding) whileprocessed_asimow.csvlabels a 165–847 pulse stretch around it (median 486, ~3.3 s). Every raw core is nested inside its preprocessed stretch. The wider extent is used — a cross section is a snapshot of a setting held for that whole stretch, and 32 pulses is too short to show a trend at all — and the narrow core is carried per record asraw_core_*so the disagreement is visible rather than taken on trust. - The preprocessed copy's pulse rate is an artefact. Read at its nominal 10 µs step it says 500 Hz; the raw recording measures 146 Hz. Anything computed from pulse shape or duration must go back to the raw file. Nothing in this release is computed from the preprocessed samples.
- Two leak channels were measured and closed on the image. Section length alone reaches AUC 0.625 against its own shuffled ceiling of 0.627 — it does not cross, so it is not a shortcut by itself, but it sits close enough to the taught criterion that the abscissa is relative (0–100 % of the section) on a fixed canvas and the per-pulse layer is drawn as a line, whose appearance does not encode the count the way scatter density would. And the y-axis is one fixed range (20–36 J) for the whole release, computed once on the training split, so the band lands in the same place in every image and only the trace moves. Nothing measured is printed on any image — no percentage, no class, no weld id.
- Short circuits are counted, never removed. A pulse whose voltage collapses below 5 V is the wire tip dipping into the pool — a different metal-transfer mode, not a defect. Those pulses stay in the trace (the heat is real) but their counts are carried separately (
short_circuit_pulse_frac,n_short_circuit_pulses, and a short-free median) so they are not silently mixed into the pulse statistics. - Split: the archive's own held-out weld runs, and the group is the weld. All three of a weld's cross-sections stay on one side, so adjacent and nearly identical pulses cannot straddle it. It is still one welding programme on one installation — it says nothing about transfer to another shop.
- This release is reasoning-track only. The four generic renders (spectrogram, scalogram, waveform, reshaped) all run on this signal and none of them is empty — it is the one welding source the whole toolkit can eat unchanged — but they are not published, by decision, and the producer does not render them.
reasoningis empty. Filling it is a separate, later pass.
Source & license
Source: ASIMOW predictive-quality arc-welding dataset, Zenodo record 10017718 (doi:10.5281/zenodo.10017718), Hahn et al., Institute for Technologies and Management of Digital Transformation (TMDT), University of Wuppertal, with FEF GmbH Aachen. License: CC BY 4.0 — redistribution requires attribution, which is why this mirror is gated. Please cite the Zenodo record. Equipment, wire, shielding gas, material and process-parameter descriptions are taken from the archive's own documentation and have not been independently verified here.
Details
- Repository
- AI4Manufacturing/ASIMOW
- Publisher
- AI4Manufacturing
- Task category
- Image classification
- Tags
- welding, gmaw, arc-welding
- Size category
- Not stated by the source
- Languages
- arc-welding
- Revision
- 0bec94dc1f05d538264cc939e51ff8ea10955d18
- Last updated
- 2026-09-18
Files
6 files, 12.7 MB in total.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| data/test-00000-of-00001.parquet | Data | 1.7 MB | — |
| data/train-00000-of-00001.parquet | Data | 9.6 MB | — |
| data/validation-00000-of-00001.parquet | Data | 1.3 MB | — |
| provenance.json | Data | 9.4 KB | — |
| README.md | Documentation | 12.5 KB | — |
| .gitattributes | Repository | 2.5 KB | — |
License and Download
- License
- cc-by-4.0
- Access
- Access requested at publisher
AI4Manufacturing grants access through its official repository on Hugging Face. Read the license.