--- language: - en license: mit library_name: segmentation-models-pytorch tags: - image-segmentation - watermark-removal - unet - efficientnet - devynlabs - pixelforge - pytorch datasets: - custom metrics: - iou pipeline_tag: image-segmentation model-index: - name: watermark-remover results: - task: type: image-segmentation name: Image Segmentation dataset: name: Banana Watermarks type: custom metrics: - type: iou value: 0.9748 name: IoU - type: accuracy value: 0.95 name: Detection Rate --- # Watermark Remover Modèle de segmentation pour détecter et supprimer les watermarks dans les images. Développé par [DevynLabs](https://devynlabs.com) dans le cadre du projet [PixelForge](https://github.com/christophernavas/pixelforge). ## Description Watermark Remover utilise un pipeline en deux étapes : 1. **Segmentation** : UNet++ avec encodeur EfficientNet-B4 pour détecter les watermarks 2. **Inpainting** : LaMa pour reconstruire les zones masquées ``` Image → UNet++ (EfficientNet-B4) → Masque → LaMa → Image propre ``` ## Performance | Métrique | Score | |----------|-------| | IoU (validation) | **97.48%** | | Taux de détection | **95%** (20/21 images) | ### Détails - Entraîné sur des watermarks Banana (style texte semi-transparent) - 1 faux négatif sur fond très lumineux - Excellent sur watermarks similaires au dataset ## Architecture | Composant | Valeur | |-----------|--------| | Encoder | EfficientNet-B4 (pretrained ImageNet) | | Decoder | UNet++ | | Input size | 512x512 | | Output | Masque binaire (probabilité watermark) | | Inpainting | LaMa (simple-lama-inpainting) | ## Usage ### Installation ```bash pip install segmentation-models-pytorch simple-lama-inpainting torch torchvision pillow ``` ### Détection seule ```python import torch from PIL import Image import segmentation_models_pytorch as smp from torchvision import transforms # Charger le modèle model = smp.UnetPlusPlus( encoder_name="efficientnet-b4", encoder_weights=None, in_channels=3, classes=1, ) # Charger les poids depuis HuggingFace from huggingface_hub import hf_hub_download weights_path = hf_hub_download("christophernavas/watermark-remover", "segmenter.pth") model.load_state_dict(torch.load(weights_path, map_location="cpu")) model.eval() # Préparer l image transform = transforms.Compose([ transforms.Resize((512, 512)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) image = Image.open("image_with_watermark.png").convert("RGB") input_tensor = transform(image).unsqueeze(0) # Prédiction with torch.no_grad(): mask = torch.sigmoid(model(input_tensor)) mask = (mask > 0.5).float() # mask contient le masque binaire des watermarks détectés ``` ### Pipeline complet (détection + suppression) ```python from simple_lama_inpainting import SimpleLama # Après avoir obtenu le masque... lama = SimpleLama() result = lama(image, mask) result.save("image_clean.png") ``` ## Training - **Framework**: PyTorch + segmentation-models-pytorch - **Loss**: BCE + Dice Loss - **Optimizer**: Adam (lr=1e-4) - **Augmentations**: Rotation, flip, color jitter, noise - **Platform**: [Modal](https://modal.com) (GPU T4) - **Epochs**: 50 ### Dataset Images synthétiques générées avec des watermarks Banana : - Variations de position, taille, opacité - Différents fonds (photos, illustrations) ## Cas d usage - Nettoyage d images pour e-commerce - Préparation de datasets ML - Restoration de photos ## Limitations - Optimisé pour watermarks textuels semi-transparents (style Banana) - Peut avoir des difficultés avec : - Watermarks très opaques - Watermarks sur fonds très lumineux/blancs - Logos complexes (non-textuels) - LaMa peut introduire des artefacts sur les textures complexes ## License MIT - Usage commercial autorisé. ## Citation ```bibtex @misc{watermarkremover2024, author = {Christopher Navas}, title = {Watermark Remover: UNet++ Segmentation for Watermark Detection}, year = {2024}, publisher = {HuggingFace}, url = {https://huggingface.co/christophernavas/watermark-remover} } ``` ## Links - [DevynLabs](https://devynlabs.com) - [PixelForge Documentation](https://florinha.com/docs/projets/pixelforge) - [segmentation-models-pytorch](https://github.com/qubvel/segmentation_models.pytorch) - [LaMa Inpainting](https://github.com/advimman/lama)