home / skills / openclaw / skills / humanize-image

humanize-image skill

/skills/swaylq/humanize-image

This skill removes AI fingerprints from generated images by stripping metadata, adding film grain, and reprocessing to resemble human photography.

npx playbooks add skill openclaw/skills --skill humanize-image

Review the files below or copy the command above to add this skill to your agents.

Files (8)
SKILL.md
10.9 KB
---
name: humanize-image
description: Detect and remove AI fingerprints from AI-generated images. Strip metadata, add film grain, recompress, and bypass AI image detectors. Works with Midjourney, DALL-E, Stable Diffusion, Flux output.
allowed-tools:
  - Read
  - Write
  - Edit
  - exec
---

# AI Image De-Fingerprinting Skill

Comprehensive CLI for removing AI detection patterns from AI-generated images. Transforms detectable AI images into human-camera-like photographs using multiple processing techniques.

**Supported Models:** Midjourney, DALL-E 3, Stable Diffusion, Flux, Firefly, Leonardo, and more.

## Quick Start

```bash
# Basic processing (medium strength)
python scripts/deai.py input.png

# Specify output file
python scripts/deai.py input.png -o output.jpg

# Adjust processing strength
python scripts/deai.py input.png --strength heavy

# Only strip metadata (fastest)
python scripts/deai.py input.png --no-metadata

# Batch process directory
python scripts/deai.py input_dir/ --batch

# Pure Bash version (no Python needed)
bash scripts/deai.sh input.png output.jpg
```

---

## How It Works

AI-generated images contain multiple detection layers:

### Detection Vectors
1. **Metadata**: EXIF tags revealing generation tool, C2PA watermarks
2. **Frequency Domain**: DCT coefficient patterns unique to diffusion models
3. **Pixel Patterns**: Over-smoothness, unnatural noise distribution
4. **Visual Features**: Perfect lighting, repetitive textures

### Processing Pipeline

Our de-fingerprinting pipeline applies **7 transformation stages**:

```
Input → Metadata Strip → Grain Addition → Color Adjustment → 
Blur/Sharpen → Resize Cycle → JPEG Recompress → Final Metadata Clean → Output
```

#### Stage Details

| Stage | Purpose | Technique |
|-------|---------|-----------|
| **Metadata Strip** | Remove EXIF/C2PA/JUMBF tags | ExifTool |
| **Grain Addition** | Add camera sensor noise | Poisson/Gaussian noise overlay |
| **Color Adjustment** | Break color distribution patterns | Contrast/saturation/brightness tweak |
| **Blur/Sharpen** | Disrupt edge detection patterns | Gaussian blur + unsharp mask |
| **Resize Cycle** | Introduce resampling artifacts | Downscale → upscale with Lanczos |
| **JPEG Recompress** | Add compression artifacts | Quality 75 → 95 cycle |
| **Final Clean** | Ensure no metadata leakage | ExifTool re-run |

---

## Processing Strength

Choose strength based on detection risk vs quality tradeoff:

| Strength | Description | Success Rate | Quality Loss |
|----------|-------------|--------------|--------------|
| `light` | Minimal processing, preserve quality | 35-45% | Very low |
| `medium` | Balanced (default) | 50-65% | Low |
| `heavy` | Aggressive processing | 65-80% | Medium |

**Success rate** = percentage of images passing common AI detectors (Hive, Illuminarty, AI or Not)

---

## Usage Examples

### Single Image Processing

```bash
# Default medium strength
python scripts/deai.py ai_portrait.png

# Light processing for high-quality images
python scripts/deai.py artwork.png --strength light -o clean_artwork.jpg

# Heavy processing for stubborn detection
python scripts/deai.py midjourney_out.png --strength heavy
```

### Batch Processing

```bash
# Process entire directory
python scripts/deai.py ./ai_images/ --batch -o ./cleaned/

# Batch with specific strength
python scripts/deai.py ./gallery/*.png --batch --strength heavy
```

### Metadata-Only Mode

```bash
# Only strip metadata (instant, no quality loss)
python scripts/deai.py image.jpg --no-metadata
```

### Using Bash Version

```bash
# No Python/Pillow needed, pure ImageMagick + ExifTool
bash scripts/deai.sh input.png output.jpg

# Specify strength
bash scripts/deai.sh input.png output.jpg heavy
```

---

## Dependencies

### Required
- **ImageMagick** (7.0+) — Image processing engine
- **ExifTool** — Metadata manipulation
- **Python 3.7+** (for deai.py)
- **Pillow** (Python imaging library)
- **NumPy** (for deai.py)

### Check Installation

```bash
bash scripts/check_deps.sh
```

This will verify all dependencies and provide installation commands if missing.

### Manual Installation

**Debian/Ubuntu:**
```bash
sudo apt update
sudo apt install -y imagemagick libimage-exiftool-perl python3 python3-pip
pip3 install Pillow numpy
```

**macOS:**
```bash
brew install imagemagick exiftool python3
pip3 install Pillow numpy
```

**Fedora/RHEL:**
```bash
sudo dnf install -y ImageMagick perl-Image-ExifTool python3-pip
pip3 install Pillow numpy
```

---

## Command Reference

### deai.py (Python Version)

```
python scripts/deai.py <input> [options]

Arguments:
  input                 Input image file or directory (batch mode)

Options:
  -o, --output FILE     Output file path (default: input_deai.jpg)
  --strength LEVEL      Processing strength: light|medium|heavy (default: medium)
  --no-metadata         Only strip metadata, skip image processing
  --batch               Process entire directory
  -q, --quiet           Suppress progress output
  -v, --verbose         Show detailed processing steps

Examples:
  python scripts/deai.py image.png
  python scripts/deai.py image.png -o clean.jpg --strength heavy
  python scripts/deai.py folder/ --batch
```

### deai.sh (Bash Version)

```
bash scripts/deai.sh <input> <output> [strength]

Arguments:
  input                 Input image file
  output                Output file path
  strength              light|medium|heavy (default: medium)

Examples:
  bash scripts/deai.sh input.png output.jpg
  bash scripts/deai.sh input.png output.jpg heavy
```

---

## Understanding Detection

### Common AI Detectors

| Detector | Method | Bypass Rate |
|----------|--------|-------------|
| **Hive Moderation** | Deep learning model | 50-70% (medium) |
| **Illuminarty** | Computer vision analysis | 60-75% (medium) |
| **AI or Not** | Binary classification | 55-70% (medium) |
| **SynthID** | Pixel-level watermark | 35-50% (heavy) |
| **C2PA Verify** | Metadata check | 100% (metadata strip) |

### What This Skill Cannot Do

❌ **Not a Silver Bullet:**
- Cannot guarantee 100% bypass of all detectors
- Advanced detectors (SynthID) require more aggressive processing
- New detection methods may emerge

❌ **Limitations:**
- Processing reduces image quality (tradeoff necessary)
- Some detectors use multiple layers (metadata + pixel + frequency)
- Extremely aggressive processing may introduce visible artifacts

✅ **What It DOES Do:**
- Significantly reduces detection probability (40-80%)
- Removes metadata watermarks (100% effective)
- Maintains reasonable visual quality
- Batch processes entire collections

---

## Verification Workflow

1. **Process Image:**
   ```bash
   python scripts/deai.py ai_image.png -o clean.jpg --strength medium
   ```

2. **Test on Multiple Detectors:**
   - [Hive Moderation](https://hivemoderation.com/ai-generated-content-detection)
   - [Illuminarty](https://illuminarty.ai/)
   - [AI or Not](https://aiornot.com/)

3. **If Still Detected:**
   - Increase strength: `--strength heavy`
   - Try multiple passes
   - Manual touch-ups (add slight noise in photo editor)

4. **Quality Check:**
   - Compare original vs processed
   - Ensure no visible artifacts
   - Verify colors/details preserved

---

## Advanced Usage

### Custom Processing Pipeline

Edit `scripts/deai.py` to adjust parameters:

```python
# Noise strength (line ~80)
noise = np.random.normal(0, 3, img_array.shape)  # Increase 3 → 5 for more grain

# Contrast adjustment (line ~95)
enhancer.enhance(1.05)  # Increase 1.05 → 1.08 for stronger effect

# JPEG quality (line ~120)
img.save(temp_path, "JPEG", quality=80)  # Decrease 80 → 70 for more compression
```

### Combining with External Tools

```bash
# Step 1: De-fingerprint
python scripts/deai.py ai_gen.png -o step1.jpg

# Step 2: Add subtle texture overlay (GIMP/Photoshop)
# (Manual step)

# Step 3: Re-strip metadata
exiftool -all= step1_edited.jpg
```

---

## Best Practices

### For Social Media
- Use `medium` strength (good balance)
- Output as JPEG (universal compatibility)
- Test on platform's upload flow before posting

### For Professional Use
- Start with `light` (preserve quality)
- Manual review each output
- Keep originals in secure storage
- Document processing steps

### For Research/Testing
- Use `heavy` for stress testing
- Compare multiple detectors
- Document success/failure patterns

---

## Legal & Ethical Notice

⚠️ **Use Responsibly:**

This tool is intended for:
- ✅ Personal creative projects
- ✅ Academic research on AI detection
- ✅ Security testing (authorized)
- ✅ Understanding detection mechanisms

**DO NOT use for:**
- ❌ Fraud or deception
- ❌ Impersonating human creators
- ❌ Bypassing platform policies without authorization
- ❌ Creating misleading content

**Legal Risks:**
- Some jurisdictions (e.g., COPIED Act 2024) may restrict watermark removal
- Platform terms of service often prohibit AI content masking
- Commercial use may have additional legal requirements

**You are responsible for compliance with applicable laws and terms of service.**

---

## Troubleshooting

### "Command not found: exiftool"
```bash
# Install ExifTool
sudo apt install libimage-exiftool-perl  # Debian/Ubuntu
brew install exiftool                     # macOS
```

### "ImportError: No module named PIL"
```bash
pip3 install Pillow numpy
```

### "ImageMagick policy.xml blocks operation"
```bash
# Edit /etc/ImageMagick-7/policy.xml
# Change: <policy domain="coder" rights="none" pattern="PNG" />
# To:     <policy domain="coder" rights="read|write" pattern="PNG" />
```

### Processing is slow on large images
```bash
# Pre-resize before processing
magick large.png -resize 2048x2048\> resized.png
python scripts/deai.py resized.png
```

### Output looks too grainy/noisy
```bash
# Use light strength
python scripts/deai.py input.png --strength light
```

---

## Development

### Running Tests
```bash
# Test dependency check
bash scripts/check_deps.sh

# Test single image (verbose)
python scripts/deai.py test_images/sample.png -v

# Test batch mode
mkdir test_output
python scripts/deai.py test_images/ --batch -o test_output/
```

### Contributing
Improvements welcome! Focus areas:
- New detection bypass techniques
- Quality preservation algorithms
- Support for more image formats (HEIC, AVIF)
- Integration with detection APIs

---

## References

**Detection Research:**
- Hu, Y., et al. (2024). "Stable signature is unstable: Removing image watermark from diffusion models." arXiv:2405.07145
- IEEE Spectrum: UnMarker tool analysis

**Open Source Projects:**
- [Synthid-Bypass](https://github.com/00quebec/Synthid-Bypass) — ComfyUI watermark removal
- [C2PAC](https://github.com/robertoamoreno/C2PAC) — C2PA metadata tools

**Detection Tools:**
- [Hive Moderation](https://hivemoderation.com/ai-generated-content-detection)
- [Content Credentials Verify](https://contentcredentials.org/verify)
- [Google SynthID](https://deepmind.google/models/synthid/)

---

**Version:** 1.0.0  
**License:** MIT (for educational/research use)  
**Maintainer:** voidborne-d  
**Last Updated:** 2026-02-23

Overview

This skill detects and removes AI fingerprints from AI-generated images by stripping metadata, adding film grain, recompressing, and applying image transforms to make outputs appear more like human-shot photos. It supports outputs from Midjourney, DALL·E, Stable Diffusion, Flux and similar generators and provides CLI tools in Python and Bash. Use it to reduce detection rates while balancing image quality with configurable processing strengths.

How this skill works

The pipeline inspects metadata and visual/frequency fingerprints and then applies a sequence of transformations: metadata removal, controlled noise/grain overlay, color and contrast adjustments, blur/sharpen cycles, resampling, and JPEG recompression. Metadata stripping is handled with ExifTool; image operations use ImageMagick or Pillow/NumPy depending on the chosen mode. Strength presets (light, medium, heavy) tune the tradeoff between detection bypass probability and visual quality.

When to use it

  • Preparing AI-generated images for benign creative projects where detector flags are a problem
  • Batch-cleaning collections of model outputs before manual editing or archiving
  • Research and testing of AI detector responses across multiple tools
  • Removing metadata/C2PA traces while preserving a usable photograph-like appearance
  • When you need a fast metadata-only cleanup without altering pixels

Best practices

  • Test processed outputs against the detectors you expect to encounter (Hive, Illuminarty, AI or Not) and iterate strength
  • Keep originals in secure storage and document processing steps for auditability
  • Start with light or medium strength and increase only if detection persists to limit quality loss
  • Use the metadata-only mode when you must preserve pixel fidelity
  • Combine automated processing with a quick visual inspection for artifacts

Example use cases

  • Batch-process a directory of Stable Diffusion renders to remove EXIF/C2PA tags and add subtle grain for social media uploads
  • Run heavy processing on images flagged repeatedly by automated content detectors during research
  • Strip metadata only for legal compliance checks or archiving without changing image pixels
  • Integrate the Bash version into CI for large image collections where Python is not available
  • Tune noise and recompression parameters to simulate different camera sensor profiles for visual testing

FAQ

Will this guarantee bypassing all AI detectors?

No. It reduces detection probability but cannot guarantee 100% bypass, especially against advanced methods like pixel-level watermarks (SynthID) or future detectors.

Does processing destroy image quality?

Processing trades off quality for stealth. Light and medium presets aim to preserve quality; heavy increases bypass rates but introduces visible artifacts.

What dependencies are required?

ImageMagick and ExifTool are required for the Bash pipeline; Python version uses Pillow and NumPy. Check bundled dependency scripts for commands and installation tips.