diff --git a/README.md b/README.md index 371329ab2a2d1e65c92a128ad686ff05da533ec0..b1042cfd676c5a04c12c6ffa15d063ad72038cd8 100755 --- a/README.md +++ b/README.md @@ -4,87 +4,130 @@ # DeepMosaics + **English | [中文](./README_CN.md)**
You can use it to automatically remove the mosaics in images and videos, or add mosaics to them.
This project is based on "semantic segmentation" and "Image-to-Image Translation".
Try it at this [website](http://118.89.27.46:5000/)!
### Examples + ![image](./imgs/hand.gif) -origin | auto add mosaic | auto clean mosaic -:-:|:-:|:-: -![image](./imgs/example/lena.jpg) | ![image](./imgs/example/lena_add.jpg) | ![image](./imgs/example/lena_clean.jpg) -![image](./imgs/example/youknow.png) | ![image](./imgs/example/youknow_add.png) | ![image](./imgs/example/youknow_clean.png) +| origin | auto add mosaic | auto clean mosaic | +| :----------------------------------: | :--------------------------------------: | :----------------------------------------: | +| ![image](./imgs/example/lena.jpg) | ![image](./imgs/example/lena_add.jpg) | ![image](./imgs/example/lena_clean.jpg) | +| ![image](./imgs/example/youknow.png) | ![image](./imgs/example/youknow_add.png) | ![image](./imgs/example/youknow_clean.png) | -* Compared with [DeepCreamPy](https://github.com/deeppomf/DeepCreamPy) +- Compared with [DeepCreamPy](https://github.com/deeppomf/DeepCreamPy) -mosaic image | DeepCreamPy | ours -:-:|:-:|:-: -![image](./imgs/example/face_a_mosaic.jpg) | ![image](./imgs/example/a_dcp.png) | ![image](./imgs/example/face_a_clean.jpg) -![image](./imgs/example/face_b_mosaic.jpg) | ![image](./imgs/example/b_dcp.png) | ![image](./imgs/example/face_b_clean.jpg) +| mosaic image | DeepCreamPy | ours | +| :----------------------------------------: | :--------------------------------: | :---------------------------------------: | +| ![image](./imgs/example/face_a_mosaic.jpg) | ![image](./imgs/example/a_dcp.png) | ![image](./imgs/example/face_a_clean.jpg) | +| ![image](./imgs/example/face_b_mosaic.jpg) | ![image](./imgs/example/b_dcp.png) | ![image](./imgs/example/face_b_clean.jpg) | -* Style Transfer +- Style Transfer -origin | to Van Gogh | to winter -:-:|:-:|:-: -![image](./imgs/example/SZU.jpg) | ![image](./imgs/example/SZU_vangogh.jpg) | ![image](./imgs/example/SZU_summer2winter.jpg) +| origin | to Van Gogh | to winter | +| :------------------------------: | :--------------------------------------: | :--------------------------------------------: | +| ![image](./imgs/example/SZU.jpg) | ![image](./imgs/example/SZU_vangogh.jpg) | ![image](./imgs/example/SZU_summer2winter.jpg) | An interesting example:[Ricardo Milos to cat](https://www.bilibili.com/video/BV1Q7411W7n6) ## Run DeepMosaics + You can either run DeepMosaics via a pre-built binary package, or from source.
### Try it on web + You can simply try to remove the mosaic on the **face** at this [website](http://118.89.27.46:5000/).
+ ### Pre-built binary package + For Windows, we bulid a GUI version for easy testing.
-Download this version, and a pre-trained model via [[Google Drive]](https://drive.google.com/open?id=1LTERcN33McoiztYEwBxMuRjjgxh4DEPs) [[百度云,提取码1x0a]](https://pan.baidu.com/s/10rN3U3zd5TmfGpO_PEShqQ)
+Download this version, and a pre-trained model via [[Google Drive]](https://drive.google.com/open?id=1LTERcN33McoiztYEwBxMuRjjgxh4DEPs) [[百度云,提取码1x0a]](https://pan.baidu.com/s/10rN3U3zd5TmfGpO_PEShqQ)
-* [[Help document]](./docs/exe_help.md)
-* Video tutorial => [[youtube]](https://www.youtube.com/watch?v=1kEmYawJ_vk) [[bilibili]](https://www.bilibili.com/video/BV1QK4y1a7Av) +- [[Help document]](./docs/exe_help.md)
+- Video tutorial => [[youtube]](https://www.youtube.com/watch?v=1kEmYawJ_vk) [[bilibili]](https://www.bilibili.com/video/BV1QK4y1a7Av) ![image](./imgs/GUI.png)
Attentions:
- - Requires Windows_x86_64, Windows10 is better.
- - Different pre-trained models are suitable for different effects.[[Introduction to pre-trained models]](./docs/pre-trained_models_introduction.md)
- - Run time depends on computers performance (GPU version has better performance but requires CUDA to be installed).
- - If output video cannot be played, you can try with [potplayer](https://daumpotplayer.com/download/).
- - GUI version updates slower than source.
+- Requires Windows_x86_64, Windows10 is better.
+- Different pre-trained models are suitable for different effects.[[Introduction to pre-trained models]](./docs/pre-trained_models_introduction.md)
+- Run time depends on computers performance (GPU version has better performance but requires CUDA to be installed).
+- If output video cannot be played, you can try with [potplayer](https://daumpotplayer.com/download/).
+- GUI version updates slower than source.
### Run From Source + #### Prerequisites - - Linux, Mac OS, Windows - - Python 3.6+ - - [ffmpeg 3.4.6](http://ffmpeg.org/) - - [Pytorch 1.0+](https://pytorch.org/) - - CPU or NVIDIA GPU + CUDA CuDNN
+ +- Linux, Mac OS, Windows +- Python 3.6+ +- [ffmpeg 3.4.6](http://ffmpeg.org/) +- [Pytorch 1.0+](https://pytorch.org/) +- CPU or NVIDIA GPU + CUDA CuDNN
+ #### Dependencies + This code depends on opencv-python, torchvision available via pip install. + #### Clone this repo + ```bash git clone https://github.com/HypoX64/DeepMosaics.git cd DeepMosaics ``` + #### Get Pre-Trained Models + You can download pre_trained models and put them into './pretrained_models'.
-[[Google Drive]](https://drive.google.com/open?id=1LTERcN33McoiztYEwBxMuRjjgxh4DEPs) [[百度云,提取码1x0a]](https://pan.baidu.com/s/10rN3U3zd5TmfGpO_PEShqQ)
+[[Google Drive]](https://drive.google.com/open?id=1LTERcN33McoiztYEwBxMuRjjgxh4DEPs) [[百度云,提取码1x0a]](https://pan.baidu.com/s/10rN3U3zd5TmfGpO_PEShqQ)
[[Introduction to pre-trained models]](./docs/pre-trained_models_introduction.md)
+In order to add/remove mosaic, there must be a model file at `./pretrained_models/mosaic/mosaic_position.pth` + +#### Install dependencies + +(Optional) Create a virtual environment + +```bash +virtualenv mosaic +source mosaic/bin.activate +``` + +Then install the dependencies + +```bash +pip install -r requirements.txt +``` + +If you can not build `scikit-image`, running `export CFLAGS='-Wno-implicit-function-declaration` then try to rebuild. + #### Simple Example -* Add Mosaic (output media will save in './result')
+ +- Add Mosaic (output media will save in './result')
+ ```bash python deepmosaic.py --media_path ./imgs/ruoruo.jpg --model_path ./pretrained_models/mosaic/add_face.pth --gpu_id 0 ``` -* Clean Mosaic (output media will save in './result')
+ +- Clean Mosaic (output media will save in './result')
+ ```bash python deepmosaic.py --media_path ./result/ruoruo_add.jpg --model_path ./pretrained_models/mosaic/clean_face_HD.pth --gpu_id 0 ``` + +If seeing the error `Please check mosaic_position_model_path!`, make sure the there is a model file at `./pretrained_models/mosaic/mosaic_position.pth` + #### More Parameters + If you want to test other images or videos, please refer to this file.
[[options_introduction.md]](./docs/options_introduction.md)
## Training With Your Own Dataset + If you want to train with your own dataset, please refer to [training_with_your_own_dataset.md](./docs/training_with_your_own_dataset.md) ## Acknowledgements + This code borrows heavily from [[pytorch-CycleGAN-and-pix2pix]](https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix) [[Pytorch-UNet]](https://github.com/milesial/Pytorch-UNet) [[pix2pixHD]](https://github.com/NVIDIA/pix2pixHD) [[BiSeNet]](https://github.com/ooooverflow/BiSeNet) [[DFDNet]](https://github.com/csxmli2016/DFDNet) [[GFRNet_pytorch_new]](https://github.com/sonack/GFRNet_pytorch_new). diff --git a/requirements.txt b/requirements.txt index 23c0f2ca769487d22a9f70225922ce45d5b4eadf..a295b233ece48fb0111b47895a22a079e908a6d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ opencv_python==4.5.1.48 -numpy==1.19.2 +numpy==1.19.3 torchvision==0.8.2 torch==1.7.1 matplotlib==3.3.2