← Open Source
marcbelmont

cnn-watermark-removal

Fully convolutional deep neural network to remove transparent overlays from images.

Model DevelopmentArchitecturePython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
1.27k
Stars
220
Forks
+0
This week
5
Contributors
Created 2017-09-30 · Updated 2026-09-29 · #10880 today
Top developers
marcbelmontdorukkarincarnglab

marcbelmont/cnn-watermark-removal is ranked 10,880 with 1,272 stars.

Same-category comparison

marcbelmont/cnn-watermark-removal is ranked 10,880 among these 8 peers; luo3300612/Visualizer is ranked 10,879.

Same-category comparison
NameRankMetrics
Linketic/CityGaussian10,876
Language:
Jupyter Notebook
Stars:
1,273
Forks:
111
Description:
[ECCV`24&ICLR`25] CityGaussian Series for High-quality Large-Scale Scene Reconstruction with Gaussians.
google-research/deduplicate-text-datasets10,877
Language:
Rust
Stars:
1,273
Forks:
130
kakaobrain/nerf-factory10,878
Language:
Python
Stars:
1,272
Forks:
103
Description:
An awesome PyTorch NeRF library.
luo3300612/Visualizer10,879
Language:
Jupyter Notebook
Stars:
1,272
Forks:
92
Description:
assistant tools for attention visualization in deep learning.
rosejn/cortex10,881
Language:
Clojure
Stars:
1,272
Forks:
108
Description:
Machine learning in Clojure.
DeepGraphLearning/graphvite10,884
Language:
C++
Stars:
1,270
Forks:
153
Description:
GraphVite: A General and High-performance Graph Embedding System.
kennymckormick/pyskl10,886
Language:
Python
Stars:
1,270
Forks:
236
Description:
A toolbox for skeleton-based action recognition.
NVlabs/alpasim10,893
Language:
Python
Stars:
1,268
Forks:
162
Description:
AlpaSim is an open-source autonomous vehicle simulation platform designed for development and testing of end-to-end AV policies.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryArchitecture
Stars1,272
Forks220
Contributors5
Created date2017-09-30
Updated date2026-09-29
Stars in 1 day0
Stars in 7 days0
Rank10,880
Previous rank10,850
Rank change-30
7-day stars rank12,804
Previous 7-day stars rank12,827
7-day stars rank change23
Total stars rank9,240
Previous total stars rank9,229
Total stars rank change-11
CountryFrance
README summary

** The architecture used in this project **does not generalize well**. You may want to check ** This inpainting technique will likely give you better results. Fully convolutional watermark removal attack Deep learning architecture to remove transparent overlays from images. ***Top:** left is with watermark, middle is reconstruction and right is the mask the algo predicts (the neural net was never trained using text or this image)* ***Bottom:** Pascal dataset image reconstructions. When the watermarked area is saturated, the reconstruction tends to

produce a gray color. * Design choices At train time, I generate a mask. It is a rectangle with randomly generated parameters (height, width, opacity, black/white, rotation). The mask is applied to a picture and the network is trained to find what was added. The loss is abs(prediction, image_perturbations)**1/2. An area around the mask is used to make the problem more tractable. The network architecture does not down-sample the image. The prediction with a down

-sampling network were not accurate enough. To have a large enough receptive field and not blow up the compute, I use dilated convolution. So concretely, I have a densenet style block, a bunch of dilated convolutions and final convolution to output a picture (3 channels). I did not spend much time doing hyper-parameters optimization. There's room to get better results using the current architecture. Limitations: this architectures does not generalize to watermarks that are too different from the one

generated with and it produces decent results only when the overlay is applied in an additive fashion. Install packages with You will need the jpeg library to compile Pillow from source: You will also need to **download the pascal dataset** (used by default) from or CIFAR10 python version from (use flag ). Make sure the extract the pascal dataset under a directory called . The project directory should then have the directory and/or . If you want to use your own images

, place them in . It starts to produce some interesting results after 12000 steps. To use the network for inference, you can run this will create a new image . Pretrained weights Here you can find the weights: put them in /tmp/

Frequently asked questions

How many stars and forks are recorded?

marcbelmont/cnn-watermark-removal has 1,272 stars and 220 forks.

What is the repository rank?

marcbelmont/cnn-watermark-removal is ranked 10,880.

What language and category are recorded?

marcbelmont/cnn-watermark-removal has 1,272 stars, uses Python and belongs to Model Development.

Which repository is closest in rank?

marcbelmont/cnn-watermark-removal is compared with luo3300612/Visualizer, ranked 10,879 with 1,272 stars.

README

Warning! The architecture used in this project does not generalize well. You may want to check https://dmitryulyanov.github.io/deep_image_prior. This inpainting technique will likely give you better results.

Fully convolutional watermark removal attack

Deep learning architecture to remove transparent overlays from images.

Top: left is with watermark, middle is reconstruction and right is the mask the algo predicts (the neural net was never trained using text or this image)

Bottom: Pascal dataset image reconstructions. When the watermarked area is saturated, the reconstruction tends to produce a gray color.

Design choices

At train time, I generate a mask. It is a rectangle with randomly generated parameters (height, width, opacity, black/white, rotation). The mask is applied to a picture and the network is trained to find what was added. The loss is abs(prediction, image_perturbations)**1/2. It is not on the entire picture. An area around the mask is used to make the problem more tractable.

The network architecture does not down-sample the image. The prediction with a down-sampling network were not accurate enough. To have a large enough receptive field and not blow up the compute, I use dilated convolution. So concretely, I have a densenet style block, a bunch of dilated convolutions and final convolution to output a picture (3 channels). I did not spend much time doing hyper-parameters optimization. There's room to get better results using the current architecture.

Limitations: this architectures does not generalize to watermarks that are too different from the one generated with create_mask and it produces decent results only when the overlay is applied in an additive fashion.

Usage

This project uses Tensorflow. Install packages withpip install -r requirements.txt

You will need the jpeg library to compile Pillow from source: sudo apt-get install libjpeg-dev zlib1g-dev

You will also need to download the pascal dataset (used by default) from http://host.robots.ox.ac.uk/pascal/VOC/voc2012/ or CIFAR10 python version from https://www.cs.toronto.edu/~kriz/cifar.html (use flag --dataset=dataset_cifar). Make sure the extract the pascal dataset under a directory called data. The project directory should then have the directory cifar-10-batches-py and/or data/VOCdevkit/VOC2012/JPEGImages. If you want to use your own images, place them in data/VOCdevkit/VOC2012/JPEGImages/.

To train the network python3 watermarks.py --logdir=save/. It starts to produce some interesting results after 12000 steps.

To use the network for inference, you can run python watermarks.py --image assets/cat.png --selection assets/cat-selection.png this will create a new image output.png.

Pretrained weights

Here you can find the weights: https://github.com/marcbelmont/cnn-watermark-removal/files/1594328/data.zip put them in /tmp/

Nearby in the ranking
Similar items