Scratch
Intermittent contact creates an irregular bright trace with changing width, density, and texture.
Embedded Machine Learning Laboratory · UT Dallas
Defects by design.
Labels by construction.
A synthetic image dataset of defective integrated circuit markings generated by physics-informed guidelines.
University of Texas at Dallas
Adapted from Robert.Baruch · CC BY-SA 4.0
The motivation
Start with a defect-free IC image. Model what causes a defect. Keep the rendering parameters and generated labels together.
The physics-informed guidelines distinguish damage to the package surface from changes to the marking itself. Scratch, contamination, missing text, smeared text, and their combinations are generated with labels taken directly from the renderer.
Read the evidence and its limitsPhysics-informed guidelines
Follow the decisions that connect the source image, physical cause, rendered appearance, and annotation.
Source & regions
Identify the package face, marking strokes, and protected structures. This separates where surface defects may appear from where text defects may alter the marking.
Paper §3.2. The image is a clean release rendering of the source, not a raw source photograph.
Adapted from Robert.Baruch · CC BY-SA 4.0
Intermittent contact creates an irregular bright trace with changing width, density, and texture.
Deposited and partly wiped residue forms textured patches, fragments, and satellite droplets.
Insufficient marking energy removes portions of existing character strokes.
Defocus, melting, or ink spread widens and redistributes the photographed marking.
These are cause-derived image-formation approximations, not first-principles material or optical simulations.
Look closer
A traceable sample of 600 release images, 100 per class. Inspect the clean counterpart and annotations without downloading an archive.
Adapted from Raimond Spekking · CC BY-SA 4.0
Adapted from Raimond Spekking · CC BY-SA 4.0
Adapted from Raimond Spekking · CC BY-SA 4.0
Adapted from Raimond Spekking · CC BY-SA 4.0
Adapted from Raimond Spekking · CC BY-SA 4.0
Adapted from Raimond Spekking · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
A dataset you can trace
Images in a capture group share the same defect-free rendering. This keeps the comparison controlled and the annotations tied to the changes.
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
Adapted from Robert.Baruch · CC BY-SA 4.0
| Image class | Images | Instances |
|---|---|---|
| Defect-free | 1,000 | 0 |
| Scratch | 1,000 | 1,000 |
| Contamination | 1,000 | 1,400 |
| Missing text | 1,000 | 1,000 |
| Smeared text | 1,000 | 1,000 |
| Combined | 1,000 | 2,357 |
“Combined” is an image-level class. Its component defects retain their own types, masks, polygons, and boxes.
A source image belongs to only one subset. This is the stricter check of generalization across the source collection.
Keep each capture group within one subset. Both protocols concern the openly licensed sources, not the real evaluation data.
1,018 capture groups connect the balanced collection. A separate 467-image cosmetic supplement is not part of the 6,000 images. The archive includes 18 auxiliary clean counterparts recovered from the original captures. The viewer always uses the matching stored counterpart, not an approximate regeneration.
Evidence, with its boundaries
Distribution similarity, recognition by a rule-based inspector, and transfer to the real IC marking dataset of [1] answer different questions.
Scratch results are mixed across measures. Contamination has lower point estimates than patch blending on most measures.
Small reference populations and calibration overlap limit the conclusion. Sensitivity ranges do not establish equivalence.
Paper §5.1 · Table 7On the synthetic test split, with thresholds fitted on synthetic validation images. Published thresholds yield 88.6% in the manuscript.
Recognition of synthetic images is not the same as prospective factory performance.
Paper §5.2Mean over training seeds, full release, product-matched protocol, at the reported false-alarm-constrained operating point.
That operating point and the training-protocol choice used the real evaluation images.
Paper §4.5 · Table 8Explore the reported results
Existing manuscript results only. No model runs in the browser.
Found / 14 · higher is better · scale 0–14
Bars show means; whiskers show ± sample SD, clipped to the valid scale. These are not confidence intervals or significance tests. Select a method to see its detection and false-alarm results together.
Values are extracted from the manuscript table. The fixed-confidence columns are shown alongside the retrospectively selected operating point; false alarms must be read with detection counts.
| Training images | Real defect pixels | Found / 14 | Scratch / 6 | Contamination / 8 | FB | Correct-class recall | Found / 14 at 0.25 | FB at 0.25 |
|---|---|---|---|---|---|---|---|---|
| Guidelines, full release, product-matched | no | 11.3 ± 0.6 | 5.0 ± 0.0 | 6.3 ± 0.6 | 0.31 ± 0.15 | 0.60 ± 0.04 | 11.3 ± 0.6 | 0.85 ± 0.42 |
| Guidelines, full release, source-disjoint | no | 11.0 ± 0.0 | 5.0 ± 0.0 | 6.0 ± 0.0 | 0.17 ± 0.22 | 0.60 ± 0.04 | 11.3 ± 0.6 | 1.29 ± 0.44 |
| Guidelines, matched 5,000, product-matched | no | 11.3 ± 1.2 | 5.0 ± 0.0 | 6.3 ± 1.2 | 0.19 ± 0.20 | 0.48 ± 0.04 | 11.7 ± 0.6 | 0.44 ± 0.15 |
| Guidelines, matched 5,000, source-disjoint | no | 11.0 ± 1.0 | 5.0 ± 0.0 | 6.0 ± 1.0 | 0.27 ± 0.11 | 0.55 ± 0.04 | 10.7 ± 1.2 | 0.61 ± 0.33 |
| Patch blending [1] | yes | 10.0 ± 2.0 | 4.7 ± 0.6 | 5.3 ± 1.5 | 0.29 ± 0.26 | 0.69 ± 0.15 | 8.0 ± 1.7 | 0.08 ± 0.06 |
| Stable Diffusion Inpainting [38] | no | 2.7 ± 1.2 | 0.7 ± 0.6 | 2.0 ± 1.0 | 0.43 ± 0.05 | 0.14 ± 0.07 | 7.3 ± 0.6 | 0.80 ± 0.02 |
| NSA [10] | no | 3.0 ± 2.0 | 1.7 ± 1.5 | 1.3 ± 0.6 | 0.19 ± 0.17 | 0.00 | 1.7 ± 0.6 | 0.36 ± 0.39 |
| CutPaste-style [8] | no | 2.3 ± 0.6 | 1.0 ± 0.0 | 1.3 ± 0.6 | 0.34 ± 0.11 | 0.00 | 2.0 ± 1.0 | 0.60 ± 0.12 |
| DRAEM-style [9] | no | 2.0 ± 1.0 | 1.7 ± 0.6 | 0.3 ± 0.6 | 0.34 ± 0.19 | 0.00 | 2.3 ± 0.6 | 0.51 ± 0.47 |
| Line primitive | no | 1.3 ± 1.5 | 0.7 ± 0.6 | 0.7 ± 1.2 | 0.06 ± 0.06 | 0.00 | 2.3 ± 0.6 | 0.67 ± 0.13 |
The evidence concerns one IC package and one imaging setup. Missing-text, smeared-text, and combined classes have only indirect or synthetic checks. These results are not a claim of production-line readiness.
Understand the files
The identifier links the image, defect masks, bounding boxes, polygons, capture group, and generation record.
0 0.560937 0.479687 0.756250 0.259375
YOLO detection: class ID, normalized center x, center y, width, height. One row represents one visible instance.
These paths use the uploaded archive layout. Standard image and box-label discovery has been checked for both image views and split protocols.
docs/Annotation format definitions and preserved validation results. 2 files
examples/Executed browsing and statistics notebooks, plus loading, training, and face-crop scripts. 5 files
face_crop/The same images cropped to the package face, with transformed labels and their own dataset definitions. 18,003 files
images/Full grayscale images in source-disjoint train, validation, and test folders. 6,000 files
labels/YOLO bounding boxes, arranged for the standard detector loader. 6,000 files
labels_coco/Pixel-space boxes and polygons in COCO format. 3 files
labels_polygons/Normalized instance polygons for segmentation. 6,000 files
masks/Union and component renderer-support masks. These are not exhaustive maps of every changed pixel. 8,103 files
provenance/Per-image generation records, source attribution, and auxiliary defect-free counterparts. 21 files
splits/CSV source membership and capture-group-safe product-matched image lists. 2 files
supplement_cosmetic/Separate cosmetic hard negatives and their labels and face crops, outside the balanced main collection. 935 files
Top-level orientation, attribution, license, checksum, dataset-definition, and metadata files accompany these folders. The following documentation is read directly from the verified archive.
# ICMarkingSynthetic 1.0 Synthetic images of IC package markings support defect detection and automatic labeling. The balanced collection contains 6,000 images from 40 openly licensed source photographs, with defect-free counterparts and construction-derived labels. It includes good, scratch, contamination, missing text, smeared text and combined images; it is not evidence of factory readiness. ## Start here 1. Open `examples/01_browse.ipynb` to inspect images and labels. 2. Open `examples/02_statistics.ipynb` to reproduce the composition counts. 3. Run `python examples/03_train_yolo.py --help` for the two training protocols. 4. Run `python examples/04_face_crop.py --help` to verify or recreate face crops. Install `numpy==1.26.4 pillow pandas==2.2.3 matplotlib jupyter`; training additionally needs `ultralytics`. Notebooks have saved outputs. Run scripts from this folder. | Folder or file | Contents | |---|---| | images/, masks/ | Full images and renderer support masks, by split | | labels/, labels_polygons/, labels_coco/ | YOLO boxes, YOLO polygons, COCO JSON for COCO tools | | face_crop/ | Matching cropped images, boxes, polygons and training YAML | | image_classes.csv | One class and split row per balanced image | | splits/ | Source-disjoint and product-matched membership CSVs | | provenance/ | Complete JSONL read by examples/load.py; flat CSV; auxiliary clean counterparts | | supplement_cosmetic/ | Separate cosmetic examples and their CSV | | examples/ | Executed notebooks, loading, training and crop scripts | | docs/ | FORMATS.md and preserved validation results | | dataset*.yaml | Full-image Ultralytics configurations | | SOURCES.csv | Source authors, licenses and modifications | | DATASET_CARD.md | Scope, composition and limitations | | croissant.json | Machine-readable catalog for Croissant tools | | CHECKSUMS.sha256 | File-integrity hashes | | LICENSE-IMAGES.txt, LICENSE-ANNOTATIONS.txt | Image and annotation license texts | Images: CC BY-SA 4.0. Annotations and provenance: CC BY 4.0. Preserve source attribution. Masks are renderer support, not guaranteed exhaustive changed-pixel masks. Citation: Md Sami Ul Hoque and Nasser Kehtarnavaz, ICMarkingSynthetic, 2026. Reserved DOI: 10.5281/zenodo.23600809. Copyright (c) 2026 Md Sami Ul Hoque and Nasser Kehtarnavaz
# Files and annotation formats
Images are 8-bit grayscale PNGs. The source-disjoint train/val/test folders contain 6,000 balanced images. A capture group shares one clean capture; keep every member together when splitting.
YOLO box rows: `class center_x center_y width height`, normalized by full image width and height. Class IDs 0, 1, 2, 3 mean scratch, contamination, missing text and smeared text. Good images have empty labels; combined images have separate defect boxes, not a fifth box class.
YOLO polygon rows: `class x1 y1 x2 y2 ...`, also normalized. External contours can omit holes and smaller disconnected regions. COCO files use pixel-space boxes and polygons and are read by COCO tools.
`provenance/records.jsonl` stores the complete nested record for each balanced image; `examples/load.py` and generator regeneration read it. `provenance/counterparts/records.jsonl` resolves the 18 clean counterparts outside the balanced set. `provenance/records.csv` projects both sets into Excel-friendly columns; filter `in_balanced_6000 == yes` before counting. Component types, severities and mechanisms are ordered semicolon lists. Seeds are 64-bit integers: use string or uint64 columns, not floating point.
`face_x1`, `face_y1`, `face_x2`, `face_y2` are the recorded crop corners, identical to `roi_xyxy`. They already include the six-pixel margin and frame clipping. Do not add padding again. The raw face boundary cannot always be recovered by subtracting padding, because clipping loses information. `examples/04_face_crop.py` uses the exact recorded crop and shifts/clips annotations.
`splits/source_disjoint.csv` maps source IDs to splits. `splits/product_matched.csv` maps image IDs to splits while keeping capture groups together. `image_classes.csv` combines both protocols. Ultralytics does not read split CSV directly: its product-matched YAML contains image paths generated from these same rows. Run training from the relevant full-image or face_crop folder.
`SOURCES.csv` retains all fields from the source attribution records. `supplement_cosmetic/manifest.csv` retains nested fields as JSON strings in CSV cells. Its 467 images are not part of the balanced 6,000. `croissant.json` is the standard catalog consumed by Croissant tools. No other JSON document is merely a second human-readable description.
The provenance `sha256` field is a 16-character prefix of a decoded-pixel hash. `CHECKSUMS.sha256` stores full hashes of encoded files. These are different checks. Renderer masks are not exhaustive changed-pixel support; this limitation is retained rather than repaired silently.
## One complete record
```json
{
"image_id": "TVIC02_C000_scratch",
"split": "train",
"pm_split": "train",
"source_id": "TVIC02",
"capture_group": "TVIC02_C000",
"capture": {
"profile": "aoi",
"angle_deg": 1.98,
"scale": 1.006,
"tx": 3.4,
"ty": -0.6,
"gain": 1.062,
"gamma": 1.064,
"bias": 3.9,
"blur": 0.39,
"noise": 3.6
},
"roi_xyxy": [
173,
48,
473,
265
],
"marking_technology": "laser",
"label": "scratch",
"cosmetic": null,
"is_combined_fault": false,
"component_classes": [
"scratch"
],
"components": [
{
"class": "scratch",
"mechanism": "abrasion_double_track",
"severity_label": "low",
"severity_value": 0.25,
"mask_px": 2636,
"parameters": {
"length_fraction": 0.631,
"reject_floor_retry_index": 0,
"envelope_width_px": 11.14,
"grooves": 6,
"gate_duty": 0.69,
"marking_overlap_fraction": 0.057,
"scratch_p50": 171.82546997070312,
"marking_p50": 255.0,
"psf_sigma": 0.75
}
}
],
"instances": [
{
"class": "scratch",
"component": 0,
"instance": 0,
"bbox_xyxy": [
225,
62,
446,
115
],
"area": 2525,
"contrast": 73.6,
"visible": true,
"polygon": [
225.0,
78.0,
226.0,
79.0,
231.0,
79.0,
232.0,
78.0,
245.0,
79.0,
247.0,
77.0,
250.0,
77.0,
253.0,
79.0,
259.0,
79.0,
260.0,
78.0,
262.0,
80.0,
266.0,
79.0,
273.0,
80.0,
278.0,
79.0,
280.0,
77.0,
284.0,
77.0,
287.0,
80.0,
290.0,
77.0,
294.0,
77.0,
295.0,
80.0,
299.0,
80.0,
304.0,
78.0,
306.0,
83.0,
307.0,
81.0,
319.0,
82.0,
320.0,
83.0,
322.0,
82.0,
327.0,
83.0,
330.0,
81.0,
333.0,
83.0,
347.0,
80.0,
353.0,
81.0,
355.0,
79.0,
353.0,
77.0,
354.0,
76.0,
362.0,
76.0,
364.0,
74.0,
368.0,
77.0,
367.0,
78.0,
362.0,
78.0,
361.0,
79.0,
363.0,
81.0,
365.0,
80.0,
369.0,
81.0,
371.0,
79.0,
372.0,
80.0,
374.0,
79.0,
376.0,
81.0,
382.0,
81.0,
383.0,
80.0,
388.0,
81.0,
391.0,
77.0,
393.0,
77.0,
396.0,
80.0,
399.0,
79.0,
401.0,
80.0,
416.0,
76.0,
422.0,
76.0,
426.0,
73.0,
432.0,
74.0,
434.0,
72.0,
443.0,
74.0,
445.0,
72.0,
445.0,
70.0,
443.0,
68.0,
429.0,
68.0,
428.0,
69.0,
421.0,
69.0,
416.0,
71.0,
412.0,
71.0,
411.0,
74.0,
409.0,
73.0,
402.0,
76.0,
396.0,
76.0,
393.0,
73.0,
383.0,
73.0,
382.0,
72.0,
379.0,
73.0,
376.0,
71.0,
351.0,
72.0,
341.0,
69.0,
339.0,
71.0,
330.0,
71.0,
329.0,
72.0,
328.0,
68.0,
315.0,
68.0,
312.0,
70.0,
309.0,
69.0,
307.0,
71.0,
305.0,
70.0,
298.0,
72.0,
295.0,
71.0,
293.0,
72.0,
292.0,
71.0,
284.0,
71.0,
278.0,
73.0,
271.0,
73.0,
270.0,
72.0,
263.0,
72.0,
262.0,
73.0,
257.0,
72.0,
256.0,
73.0,
254.0,
72.0,
251.0,
75.0,
248.0,
72.0,
232.0,
72.0,
231.0,
73.0,
226.0,
73.0
]
}
],
"clean_counterpart": "TVIC02_C000_good",
"image": "images/train/TVIC02_C000_scratch.png",
"mask": "masks/train/TVIC02_C000_scratch.png",
"changed_px": 4007,
"changed_outside_face_px": 0,
"seed": 1902019745343097344,
"generator_version": "icmarkingsynthetic-generator-1.0",
"sha256": "0c6a51c7e3313d74"
}
```
# ICMarkingSynthetic
Authors: Md Sami Ul Hoque and Nasser Kehtarnavaz, Embedded Machine Learning Laboratory, University of Texas at Dallas.
Purpose: research on synthetic marking defects, detection and automatic labeling. Defects are cause-derived image-formation approximations, not first-principles material simulations. This archive contains synthetic images from openly licensed source photographs, not real evaluation frames. Missing and smeared text lack real-image evaluation in the reported study. Results are not evidence of factory readiness.
Composition:
```json
{
"by_class": {
"good": 1000,
"scratch": 1000,
"contamination": 1000,
"missing_text": 1000,
"smeared_text": 1000,
"combined": 1000
},
"source_disjoint": {
"train": 3605,
"val": 1204,
"test": 1191
},
"product_matched": {
"train": 4569,
"val": 716,
"test": 715
}
}
```
Saved masks represent renderer support. They are not guaranteed to contain every changed pixel. In the recovered counterpart subset, 18 of 38 pairs contain all changes of at least two gray levels within a one-pixel dilation of the saved mask; all 38 changed-pixel counts match provenance. Masks were preserved, not repaired. Polygons describe external contours and may omit holes or smaller disconnected regions. The sha256 provenance field is a 16-character prefix of the decoded pixel hash, not a PNG-file hash; use CHECKSUMS.sha256 for file integrity.
See SOURCES.csv for source licenses and modifications; no source photograph is asserted to be public domain merely because it is openly accessible.
Copyright (c) 2026 Md Sami Ul Hoque and Nasser Kehtarnavaz
Research access · Restricted archives
The dataset and companion generator are deposited in a published Zenodo record. The record is public; both archives remain restricted and are available on approved request.
10.5281/zenodo.23600809View the Zenodo record. Contact the authors below to request access; approval and file delivery are handled separately.
Request access by emailOpens your email app. Nothing is submitted automatically.
Full images and face crops, renderer masks, box and polygon labels, split definitions, source attribution, and clean counterparts.
ICMarkingSynthetic-v1.0.zip
1.29 GB · Uploaded · RestrictedPrepared sources, generation modules, frozen parameters, validation tools, and examples. MIT-licensed code; image licenses remain separate.
icmarkingsynthetic-generator-v1.0.zip
6.34 MB · Uploaded · RestrictedThese SHA-256 values identify the uploaded copies.
How to request access
Requests are reviewed by the authors. Access is not automatic. The license and attribution requirements for each component are stated in its archive.
Institutional contact: mdsamiul.hoque@utdallas.edu. Corresponding author: kehtar@utdallas.edu.
# ICMarkingSynthetic generator Install from the extracted folder: `python -m pip install .` (Python 3.12). 1. **Regenerate one image:** `python scripts/regenerate_image.py --dataset ../ICMarkingSynthetic-v1.0 --id TVIC29_C000_scratch --output out --require-exact` verifies decoded-pixel identity, failing on a mismatch. 2. **Rebuild the dataset:** `python scripts/build_release.py --output rebuilt` renders the selected plan; add `--limit 50` for a short trial. 3. **Render on your prepared image:** `python examples/quickstart.py --image my_image.png --face my_face.png --marking my_marking.png` writes fresh examples using your grayscale image and binary masks. Open `examples/quickstart.ipynb` for the executed visual walkthrough. Run commands from this folder. NumPy and OpenCV are pinned because scalar precision and interpolation changes affect exact pixels; do not upgrade them for reproduction. Notebook users can install `jupyter pandas==2.2.3` after installing this package. | Folder or file | Purpose | |---|---| | icmarkingsynthetic/ | Capture, defect, label and validation implementations | | profiles/ | Three live JSON profiles, read by load_profile() | | sources/ | Prepared images and masks; generation_plan.json read by build_release.py, plus a human-readable CSV | | SOURCES.csv | Full attribution and metadata for the 40 prepared sources | | scripts/ | Prepare, calibrate, regenerate, rebuild and validate commands | | examples/ | Executed notebook, matching Python example and new-defect template | | tests/ | Determinism, surface confinement and profile-change tests | | .github/workflows/ | Isolated installation and reproduction checks | | CHECKSUMS.sha256 | File-integrity hashes | The three profile files hold tunable defect profile parameters. `calibrate_profile.py` compares descriptor tables to evaluate their settings; it does not automatically infer every physical parameter. Mathematical constants and fixed implementation choices remain in the code. Run a fresh Python process after editing profiles. `ICMARKINGSYNTHETIC_PROFILES` may point to a temporary profile directory for an isolated experiment. Code: MIT. Source images: CC BY-SA 4.0; annotations: CC BY 4.0. Keep SOURCES.csv and the separate license texts. Source attribution is not replaced by the code copyright. Platform test status is recorded in TESTED_PLATFORMS.md. No unexecuted platform is claimed as passing. For your own Python or notebook session, import `icmarkingsynthetic` before NumPy, OpenCV or Matplotlib. The package selects the release-compatible NumPy CPU path automatically; the supplied scripts already use this order. If NumPy was imported first on an AVX-512 machine, restart the session and import the generator first. Copyright (c) 2026 Md Sami Ul Hoque and Nasser Kehtarnavaz
# Isolated installation tests Tests completed on 2026-10-24 (UTC), corresponding to 23 October in US Central time. | Platform | Isolated input | Result | |---|---|---| | Windows desktop, Python 3.12 | Both complete distribution ZIPs, new virtual environment | PASS | | Windows laptop, Python 3.12 | Both complete distribution ZIPs, new virtual environment | PASS | | Ubuntu GitHub Actions, Python 3.12 | Code ZIP and the documented 60-image dataset fallback, new virtual environment | PASS | Each test installs without access to another project directory, verifies `TVIC29_C000_scratch` with `--require-exact`, runs the quickstart (16 images and 16 masks, covering four severities), builds exactly 50 balanced images against frozen expected pixel hashes, and passes five unit tests. The Ubuntu sample includes the named regeneration example and 59 initial plan rows; it retains their original seeds and expected digests. A separate four-run Ubuntu matrix checks the numerical compatibility setting. The complete Windows reconstruction matched all 6,000 balanced image digests. The distributed full-image, face-crop, mask, supplement and counterpart PNGs were also compared by file SHA-256, not merely visual similarity. Exact reproduction is checked under Python 3.12, NumPy 1.26.4, OpenCV 4.11.0.86, Pillow 12.3.0 and Matplotlib 3.11.2. NumPy 2 changes scalar promotion; newer OpenCV kernels and NumPy's AVX-512 power implementation can alter pixels. The package disables NumPy AVX512F before NumPy initializes. Import `icmarkingsynthetic` first in a custom notebook, before NumPy, OpenCV or Matplotlib; otherwise restart the session when the package asks you to do so. This is numerical compatibility, not a change to the defect profiles or seeds. macOS, ARM, other Python versions, and full-dataset reconstruction on Linux have not been verified. An Ubuntu small-sample pass is not a claim of full-release Linux checksum equivalence. The code refuses to report exact reproduction when a recorded pixel digest differs.
Renderer masks are not guaranteed to contain every changed pixel. Exact reproduction depends on the documented software versions and numerical compatibility settings. Windows full-release checks and an Ubuntu small-sample check are documented in the generator archive; other platforms remain unverified. Read both archive READMEs and the tested-platforms document. This release is not evidence of factory readiness.
Reference this work
Manuscript under review at Electronics (MDPI).
The manuscript citation is provisional. The published dataset DOI appears in the access section and is not a published-paper DOI.
@unpublished{hoque2026icmarkingsynthetic,
title = {Physics-Informed Guidelines for Generating a Synthetic Image Dataset of Defective Integrated Circuit Markings},
author = {Hoque, Md Sami Ul and Kehtarnavaz, Nasser},
year = {2026},
note = {Manuscript under review}
}Per-image attribution links every synthetic example to its openly licensed source.
Labels and generation records are documented separately from source-image rights.
The generator code is MIT-licensed. Prepared source images retain their own image-license and attribution requirements.
| Source | Author | Original license | Modifications |
|---|---|---|---|
| TVIC02 | Mister rf | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC08 | Robert.Baruch | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC12 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC13 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC15 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC16 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC18 | viagallery.com | CC BY 2.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC19 | viagallery.com | CC BY 2.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC22 | Robert.Baruch | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC23 | Robert.Baruch | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC14 | Mister rf | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC29 | Robert.Baruch | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC30 | Robert.Baruch | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC31 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC33 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC35 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC36 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC37 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC39 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC40 | Raimond Spekking | CC BY-SA 4.0 | Line-local coherent photographed character strokes lifted toward white; no glyph or logo redrawing. Synthetic capture and defects applied for this collection. |
| TVIC41 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC42 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC43 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC44 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC45 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC46 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC47 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC48 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC49 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC50 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Clean overhead open-license source replacing the visibly scratched Siemens photograph; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC51 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC52 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Clean overhead open-license source replacing the occluded CAND022 photograph; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC53 | <a href="//commons.wikimedia.org/wiki/User:Markus_Kuhn" title="User:Markus Kuhn">Markus Kuhn</a> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC54 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC55 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC56 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC57 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC58 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC59 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |
| TVIC60 | <bdi><a href="https://www.wikidata.org/wiki/Q108103612" class="extiw" title="d:Q108103612"><span title="Wikipedian and OpenStreetMap mapper from Cologne, Open Data activist">Raimond Spekking</span></a></bdi> | CC BY-SA 4.0 | Strict top-view open-license source; tight package-and-leads crop; grayscale tone normalization; package-face-restricted marking brightness and positive-only edge sharpening; isolated dust-sized highlights removed outside protected marking; no inpainting, text redrawing, logo redrawing, or inserted fault. Synthetic capture and defects applied for this collection. |