Remove Gemini AI watermarks from images using LaMa AI inpainting
Project description
๐ Banana Peel
Remove Gemini AI watermarks from images using LaMa AI inpainting โ seamlessly, locally, and in one command.
"Peel away those watermarks like a banana!"
Features
- AI-powered โ Uses the LaMa inpainting model for seamless watermark removal
- Zero config โ Model auto-downloads on first run (~198 MB, one-time)
- Batch processing โ Process entire directories with parallel execution
- Metadata preservation โ EXIF data is carried over to output files
- Supports PNG, JPG, JPEG, WebP, GIF, BMP, TIFF
Samples
| Original | Watermark Removed |
|---|---|
How It Works
Gemini adds a semi-transparent watermark logo to the bottom-right corner of generated images. Banana Peel:
- Detects the watermark position using known mask patterns
- Inpaints the area with the LaMa neural network, which "hallucinates" realistic content to fill the gap
- Blends the result seamlessly using feathered alpha compositing
The AI model runs 100% locally via ONNX Runtime โ no cloud, no API keys, no data leaves your machine.
Installation
Stable (Recommended)
pip install banana-peel
Development
git clone https://github.com/neocorp/banana-peel.git
cd banana-peel
poetry install
Usage
Single Image
banana-peel image.png
# Output: image_clean.png
# Overwrite original
banana-peel image.png --overwrite
Directory (Batch Processing)
banana-peel ./photos/
# Custom suffix
banana-peel ./photos/ --suffix "_nowm"
First Run
On the first run, Banana Peel will automatically download the AI model (~198 MB). This only happens once โ subsequent runs are instant.
๐ Banana Peel - First Run Setup
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Downloading AI model (198 MB)... this only happens once.
Downloading lama_fp32.onnx โโโโโโโโโโโโโโโโโโโโโ 100% 198.4/198.4 MB
โ Model ready! Processing your image...
Options
banana-peel <PATH> [OPTIONS]
Arguments:
PATH Image file or directory to process
Options:
--overwrite Overwrite original files
--suffix TEXT Custom suffix for output files [default: _clean]
--version Show version and exit
--help Show help message and exit
Detection Rules
Banana Peel automatically detects watermark size based on image dimensions:
| Image Size | Watermark | Margins |
|---|---|---|
| > 1024ร1024 | 96ร96 px | 64 px |
| โค 1024ร1024 | 48ร48 px | 32 px |
The watermark is always positioned at the bottom-right corner.
Development
git clone https://github.com/neocorp/banana-peel.git
cd banana-peel
poetry install
poetry run banana-peel --help
Running Tests
poetry run pytest
Credits
- LaMa Model: Resolution-robust Large Mask Inpainting by Samsung AI
- ONNX Model: Based on the model from dinoBOLT/Gemini-Watermark-Remover
- Watermark Masks: From journey-ad/gemini-watermark-remover and allenk/GeminiWatermarkTool
License
MIT License โ See LICENSE file for details.
Disclaimer
USE AT YOUR OWN RISK
This tool modifies image files. While designed to work reliably, unexpected results may occur. The author assumes no responsibility for any data loss or unintended modifications.
Limitations
- Only removes Gemini visible watermarks (the semi-transparent logo in bottom-right corner)
- Does not remove invisible/steganographic watermarks like SynthID
- Designed for Gemini's current watermark pattern (as of 2026)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file banana_peel-0.1.1.tar.gz.
File metadata
- Download URL: banana_peel-0.1.1.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ed3a0a36923315a90fb727ba96a6e1abd125f9f748fd22b5270b50231c5887d
|
|
| MD5 |
05bb84fc857ba9e3ad40f7c68fc1fc88
|
|
| BLAKE2b-256 |
2331812232e686c7a7ec3e3cc3d73f7086a365e5a68b141563bf7c7c80e54b3e
|
Provenance
The following attestation bundles were made for banana_peel-0.1.1.tar.gz:
Publisher:
publish.yml on neocorp/banana-peel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
banana_peel-0.1.1.tar.gz -
Subject digest:
4ed3a0a36923315a90fb727ba96a6e1abd125f9f748fd22b5270b50231c5887d - Sigstore transparency entry: 953557718
- Sigstore integration time:
-
Permalink:
neocorp/banana-peel@29e5ce39a86a610abd3d21f0330a4031297fee5b -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/neocorp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@29e5ce39a86a610abd3d21f0330a4031297fee5b -
Trigger Event:
release
-
Statement type:
File details
Details for the file banana_peel-0.1.1-py3-none-any.whl.
File metadata
- Download URL: banana_peel-0.1.1-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c681a7c06cfb30dda78ec6174bd897c737dea8f619c948622ddcee85099547f
|
|
| MD5 |
c712db7aa5643121684f4d47385c924d
|
|
| BLAKE2b-256 |
418bcdf5c7c531230cc56c7cdf4fef22574b4816fbcb7c663c500ed2590f1fb6
|
Provenance
The following attestation bundles were made for banana_peel-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on neocorp/banana-peel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
banana_peel-0.1.1-py3-none-any.whl -
Subject digest:
2c681a7c06cfb30dda78ec6174bd897c737dea8f619c948622ddcee85099547f - Sigstore transparency entry: 953557719
- Sigstore integration time:
-
Permalink:
neocorp/banana-peel@29e5ce39a86a610abd3d21f0330a4031297fee5b -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/neocorp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@29e5ce39a86a610abd3d21f0330a4031297fee5b -
Trigger Event:
release
-
Statement type: