deep-tattoo / README.md
jun710's picture
Upload README.md with huggingface_hub
867ceb6 verified
---
license: mit
tags:
- tattoo-segmentation
- image-segmentation
- pytorch
- unet
- edge-detection
---
# Deep Tattoo Segmentation v5/v7
Edge-Aware Attention U-Net for precise tattoo extraction with transparent background.
## Models
- `edge_aware_v3_clahe_best.pth`: **v5 Model** - Best performance (Val Dice: **90.50%**)
- Edge-Aware Attention U-Net architecture
- CLAHE preprocessing for lighting invariance
- Trained on 24 manual labels + 165 auto-generated masks
- Test-Time Augmentation (TTA) support
- `edge_aware_v7_samrefiner_best.pth`: **v7 Model with SAMRefiner** (Val Dice: 74.25%)
- Same architecture as v5
- Trained with 122 SAMRefiner-refined masks + 25 v2 fallback
- SAMRefiner (ICLR 2025) for mask refinement
- Better edge quality but lower validation score (due to v2-only validation set)
- `edge_aware_improved_best.pth`: Base Model (Val Dice: 79.17%)
- Foundation model before hybrid training
## Key Features
- **High Accuracy**: 90.50% Dice coefficient on validation set
- **Edge Detection**: Specialized edge-aware attention mechanism
- **Lighting Invariant**: CLAHE preprocessing handles various lighting conditions
- **Transparent Output**: Extracts tattoos with alpha channel for transparent background
- **Production Ready**: Optimized for inference with TTA
## Usage
```python
import torch
import cv2
import numpy as np
from huggingface_hub import hf_hub_download
# Download v5 model
model_path = hf_hub_download(
repo_id="jun710/deep-tattoo",
filename="edge_aware_v3_clahe_best.pth"
)
# Load model
checkpoint = torch.load(model_path, map_location='cpu')
# Use with EdgeAwareAttentionUNet from the repository
# Preprocess with CLAHE
image = cv2.imread("tattoo.jpg")
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
# ... apply model and extract tattoo
```
## Model Architecture
- **Encoder**: EfficientNet-B3 backbone with edge detection branch
- **Decoder**: Attention-based skip connections
- **Output**: Binary segmentation mask (tattoo vs background)
## Training Details
- Image Size: 256x256
- Batch Size: 8
- Optimizer: Adam (lr=1e-4)
- Loss: Boundary-Aware Loss (Dice + BCE + Edge)
- Augmentation: Strong geometric + color transformations
- Training Data: 189 images (24 manual + 165 auto-generated)
## Performance
- Validation Dice: 90.50%
- Test Coverage: 52 diverse images
- Success Rate: ~97% on typical tattoos
- Limitation: Fine details on very delicate outlines (~3% cases)
## Repository
https://github.com/enjius/deep-tattoo