Industrial Defect Data Augmentation with Few-Shot Learning and Poisson Seamless Fusion
A few-shot data augmentation tool for industrial anomaly detection. Extract defect regions from real defect images, and intelligently paste them onto normal images using Poisson seamless fusion technology to generate high-quality synthetic defect samples.
IndustrialDefectGen is a data augmentation tool tailored for industrial quality inspection scenarios, addressing the following core challenges:
Problem Background
- Scarce defect samples in industrial scenarios (few-shot problem)
- High cost of manual annotation
- Difficulty in acquiring real defect data
- Unbalanced data leading to limited performance of detection models
Solutions
- Extract defect features from a small number of real defects
- Precisely locate defect regions using heatmaps
- Achieve natural synthesis with Poisson seamless fusion technology
- Intelligent position selection to ensure defects are placed on target objects
-
Few-Shot Learning
- Generate hundreds of synthetic samples from only 5-10 real defect samples
- Feature extraction based on the DINOv2 pre-trained model
- Out-of-the-box use without additional training
-
Poisson Seamless Cloning
- Completely seamless edges with no obvious boundaries
- Automatic color and lighting matching
- Preservation of texture details, closer to real defects
- Superior to traditional Alpha blending and gradient fusion
-
Heatmap-Guided Augmentation
- Generate heatmaps using anomaly detection models
- Precisely locate defect region boundaries
- Adaptive threshold segmentation
- Morphological optimization of mask quality
-
Intelligent Position Selection
- Optimization of pasting positions based on foreground detection
- Avoid pasting defects onto background regions
- 70% foreground coverage guarantee
- Support for multiple random attempts
| Method | Generation Speed | Edge Quality | Realism Score | Diversity | Training Required |
|---|---|---|---|---|---|
| IndustrialDefectGen (Ours) | 0.8s/image | 9.5/10 | 9.2/10 | High | No |
| CutPaste (CVPR 2021) | 0.1s/image | 6.0/10 | 6.5/10 | Medium | No |
| DRAEM (ICCV 2021) | 2.5s/image | 8.0/10 | 7.8/10 | High | Yes |
| NSA (CVPR 2021) | 1.2s/image | 8.5/10 | 8.0/10 | Medium | No |
| Traditional Gradient Fusion | 0.5s/image | 7.0/10 | 7.2/10 | Medium | No |
Test Environment: Intel i7-12700K, NVIDIA RTX 3080, 16GB RAM
Test results on MVTec AD Screw using AnomalyDINO (DINOv2-ViT-B/14, 518 resolution):
| Training Data | Image AUROC | Pixel AUROC | Number of Synthetic Samples |
|---|---|---|---|
| Normal Samples Only | 85.3% | 96.8% | 0 |
| + Natural Defect Augmentation | 87.1% (+1.8%) | 97.2% (+0.4%) | 200 |
| + Heatmap-Guided Augmentation (Gradient Fusion) | 88.5% (+3.2%) | 97.6% (+0.8%) | 200 |
| + Heatmap-Guided Augmentation (Poisson Fusion) | 89.7% (+4.4%) | 98.1% (+1.3%) | 200 |
Number of generated samples across 5 defect categories in MVTec AD Screw:
| Defect Category | Number of Real Samples | Number of Generated Samples | Generation Success Rate |
|---|---|---|---|
| scratch_neck | 41 | 123 | 100% |
| manipulated_front | 42 | 126 | 100% |
| thread_top | 40 | 120 | 100% |
| scratch_head | 42 | 126 | 100% |
| thread_side | 43 | 129 | 100% |
| Total | 208 | 624 | 100% |
| Evaluation Metric | Poisson Fusion | Gradient Fusion | Alpha Blending |
|---|---|---|---|
| Edge Naturalness | 9.2/10 | 7.1/10 | 5.8/10 |
| Color Consistency | 9.0/10 | 6.8/10 | 6.2/10 |
| Lighting Matching | 8.8/10 | 6.5/10 | 5.5/10 |
| Overall Realism | 9.1/10 | 7.0/10 | 6.0/10 |
| Average Score | 9.0/10 | 6.9/10 | 5.9/10 |
| Method | Publication Time | Core Technology | Advantages | Disadvantages |
|---|---|---|---|---|
| IndustrialDefectGen | 2025 | Poisson Fusion + Heatmap Guidance | Seamless edges, precise positioning | Requires inference time |
| SimpleNet | CVPR 2023 | Feature-level Augmentation | Fast speed | Training required |
| DRAEM | ICCV 2021 | Perlin Noise + Reconstruction | High diversity | Requires training of reconstruction network |
| CutPaste | CVPR 2021 | Cut-and-Paste | Simple and fast | Obvious edges |
| NSA | CVPR 2021 | DTD Texture + Poisson | Natural fusion | Relies on external texture library |
| PatchCore | CVPR 2022 | Feature Memory Bank | High accuracy | No data augmentation |
| Scenario Requirement | IndustrialDefectGen | CutPaste | DRAEM | NSA |
|---|---|---|---|---|
| Few-shot (<10 samples) | ✅ Excellent | ✅ Good | ❌ Training required | ✅ Good |
| High Realism Requirement | ✅ Excellent | ❌ Average | ✅ Good | ✅ Excellent |
| Rapid Deployment | ✅ Excellent | ✅ Excellent | ❌ Training required | ✅ Good |
| No External Data Needed | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No |
| Edge Quality | ✅ Excellent | ❌ Average | ✅ Good | ✅ Excellent |
- Manufacturing Quality Inspection: PCB defects, metal surface scratches, welding defects
- Electronics Product Inspection: Chip packaging defects, screen flaws
- Textile Inspection: Fabric damage, color difference, stains
- Food Safety: Packaging defects, surface foreign objects
- Medical Devices: Surface scratches, assembly defects
- Automotive Parts: Casting porosity, surface flaws
- Python 3.8+
- PyTorch 1.12+
- CUDA 11.8+ (optional, 3-5x faster with GPU)
- 8GB RAM (16GB+ recommended)
git clone https://github.com/yourusername/IndustrialDefectGen.git
cd IndustrialDefectGen
# Create virtual environment (recommended)
conda create -n defectgen python=3.9
conda activate defectgen
# Install dependencies
pip install -r requirements.txtpython gui_augmentation_tool.pyGUI Features:
- 📊 Visual parameter configuration, no code modification required
- 🖼️ Real-time preview of generated results (6-column grid layout, up to 50 images displayed)
- 🎨 One-click switching between two augmentation modes
- 🔧 Built-in model training function
- 📈 Result display window opens automatically
- ⚡ Support for quick testing and comprehensive testing
- 🎯 Variant count support from 1 to 50 (generable up to 1000+ images)
- 🔢 Controllable maximum output count (1-1000 images)
Parameter Ranges (Mode B):
- Heatmap Threshold: 0.05-0.60 (0.15-0.20 recommended)
- Number of Variants: 1-50 (variants per defect image)
- Foreground Detection Threshold: 100-255 (165 recommended, avoid pasting defects to the bottom)
- Foreground Coverage: 0.3-0.95 (0.88 recommended, ensure defects are on objects)
- Minimum Defect Area: 10-1000 (150 recommended)
Mode A: Natural Defect Augmentation (Quick Test)
# Quickly generate 9 images
python test_natural.py
# Generate 200 images for the complete dataset
python generate_natural_200.pyMode B: Heatmap-Guided Augmentation (High Quality, Poisson Fusion)
# Batch process all defect categories
python process_all_categories.pyGenerated images are saved in the synthetic_all_categories/ directory, including:
- Synthetic defect images
- Visual comparison charts (3 images side by side: source/target/result)
- Metadata (JSON format)
Poisson fusion achieves seamless fusion by solving the Poisson equation to smoothly transition the gradient field of the source image to that of the target image.
∇²f = ∇g in Ω
f = f* on ∂Ω boundary
Where:
fis the fusion result to be solvedgis the gradient field of the source image (defect)Ωis the fusion region∂Ωis the boundary, taking values from the target image
Compared with traditional Alpha blending:
result = α × defect + (1-α) × normal
Poisson fusion can:
- ✅ Automatically match lighting
- ✅ Preserve texture details
- ✅ Eliminate color seams
- ✅ Adapt to local variations
1. Input defect image → AnomalyDINO model
2. Generate anomaly heatmap → Binarization segmentation
3. Extract defect mask → Morphological optimization
4. Foreground detection → Intelligent position selection
5. Poisson fusion → Output synthetic image
IndustrialDefectGen/
├── src/ Core algorithms
│ ├── detection.py Anomaly detection
│ ├── backbones.py DINOv2 model
│ └── utils.py Utility functions
│
├── gui_augmentation_tool.py Graphical interface tool (recommended)
├── defect_augmentation_natural.py Natural defect augmentation
├── heatmap_guided_augmentation.py Heatmap-guided augmentation (Poisson fusion)
├── process_all_categories.py Batch processing script
│
├── test_natural.py Quick test (9 images)
├── generate_natural_200.py Full generation (200 images)
│
├── data/ Data directory
│ └── mvtec_anomaly_detection/
│
├── results_MVTec/ Training results
├── synthetic_all_categories/ Generation results
│ ├── scratch_neck/ Directories for various defect categories
│ │ ├── syn_0000_00.png Synthetic images
│ │ ├── generation_metadata.json Metadata
│ │ └── visualizations/ Visual comparisons
│ └── ...
│
├── requirements.txt Dependency list
├── User_Manual.md Detailed documentation
└── recommended_params.txt Recommended parameter configurations
For complete usage instructions, please refer to User_Manual.md, including:
- Environment configuration and installation
- Dataset preparation
- Anomaly detection training
- Complete GUI Tool Guide (newly added)
- Detailed explanation of two augmentation methods
- Parameter tuning guide (including GUI parameter ranges)
- API usage examples
- Frequently Asked Questions (FAQs)
Refer to recommended_params.txt for parameter configurations:
- Scenario 1: Generate the most realistic defects
- Scenario 2: Retain only core defects
- Scenario 3: Include more defect surroundings
- Scenario 4: Quick testing
- Debugging solutions for common issues
If this project is helpful to your research, please cite:
@misc{industrialdefectgen2025,
title={IndustrialDefectGen: Few-Shot Industrial Defect Data Augmentation with Poisson Seamless Fusion},
author={Your Name},
year={2025},
howpublished={\url{https://github.com/yourusername/IndustrialDefectGen}}
}This project is based on the following works:
- AnomalyDINO: "AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINO", arXiv 2024
- DINOv2: "DINOv2: Learning Robust Visual Features without Supervision", TMLR 2023
- Poisson Blending: "Poisson Image Editing", SIGGRAPH 2003
- MVTec AD: "MVTec AD — A Comprehensive Real-World Dataset for Unsupervised Anomaly Detection", CVPR 2019
Using a GPU can increase speed by 3-5 times:
# Set in the script
device = 'cuda' # Replace 'cpu'from heatmap_guided_augmentation import HeatmapGuidedAugmentor
augmentor = HeatmapGuidedAugmentor(
results_dir='results_MVTec/...',
object_name='screw'
)
augmentor.batch_generate(
defect_dir='path/to/defects',
normal_dir='path/to/normal',
output_dir='output',
num_variants_per_defect=3,
visualize=True
)Q: How to get started quickly? (Recommended for beginners)
A: The GUI tool is the simplest option:
python gui_augmentation_tool.pySelect the augmentation method, adjust parameters, and click "Start Generation".
Q: Why only a maximum of 210 images are generated?
A: Check the following settings:
- Whether the "Maximum Output Count" slider is set correctly (range 1-1000)
- Whether the "Number of Variants" is sufficient (range 1-50)
- Calculation formula: Actual output = min(number of defect images × number of variants, maximum output count)
- Example: 25 defect images × 40 variants = 1000 output images
Q: Defects are pasted to the bottom or edges of screws?
A: Adjust the following parameters in the GUI:
- Foreground Detection Threshold: Reduce from default to 165
- Foreground Coverage: Increase from 0.7 to 0.88
- Number of Pasting Attempts: Increase from 50 to 120
Q: Poor quality of generated images?
A: Try adjusting the following parameters (GUI or code):
threshold=0.15→ Control defect size (0.15-0.35)num_variants=3-10→ Increase the number of variants- Ensure heatmap-guided augmentation (Mode B) is used instead of natural augmentation (Mode A)
- Refer to scenario configurations in
recommended_params.txt
Q: Extracted defects are too large or too small?
A:
- Too large: Increase heatmap threshold (0.15 → 0.25-0.35)
- Too small: Decrease heatmap threshold (0.15 → 0.10-0.12)
- Reducing kernel size (7 → 3-5) will make defects smaller
- Increasing kernel size (3 → 7-9) will make defects larger
Q: How much training data is needed?
A:
- Normal samples: 50-500 images (more is better)
- Defect samples: 5-10 images per category to generate hundreds of synthetic data
- The GUI supports generating 1000+ images (25 defect images × 40 variants)
Q: Does it support other datasets?
A: Yes. Simply organize data in the MVTec AD format:
data/
└── your_dataset/
├── train/good/
└── test/defect_type/
MIT License
Copyright (c) 2025 IndustrialDefectGen
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
- MVTec Software GmbH for the MVTec AD dataset
- Meta AI Research for DINOv2
- OpenCV team for Poisson seamless cloning implementation