2024-01-21 16:25:50 +01:00
< h1 align = "center" > IOPaint< / h1 >
< p align = "center" > A free and open-source inpainting & outpainting tool powered by SOTA AI model.< / p >
2022-07-22 17:20:12 +02:00
< p align = "center" >
2024-01-21 16:25:50 +01:00
< a href = "https://github.com/Sanster/IOPaint" >
< img alt = "total download" src = "https://pepy.tech/badge/iopaint" / >
2022-07-22 17:20:12 +02:00
< / a >
2024-01-21 16:25:50 +01:00
< a href = "https://pypi.org/project/iopaint" >
< img alt = "version" src = "https://img.shields.io/pypi/v/iopaint" / >
2022-11-16 14:18:51 +01:00
< / a >
2022-12-11 15:50:37 +01:00
< a href = "" >
2024-01-21 16:25:50 +01:00
< img alt = "python version" src = "https://img.shields.io/pypi/pyversions/iopaint" / >
2022-10-08 06:55:51 +02:00
< / a >
2024-02-05 04:04:48 +01:00
< a href = "https://huggingface.co/spaces/Sanster/iopaint-lama" >
< img alt = "HuggingFace Spaces" src = "https://img.shields.io/badge/%F0%9F%A4%97%20HuggingFace-Spaces-blue" / >
< / a >
2024-02-21 06:30:16 +01:00
< a href = "https://colab.research.google.com/drive/1TKVlDZiE3MIZnAUMpv2t_S4hLr6TUY1d?usp=sharing" >
2024-02-05 04:04:48 +01:00
< img alt = "Open in Colab" src = "https://colab.research.google.com/assets/colab-badge.svg" / >
< / a >
2022-07-22 17:20:12 +02:00
< / p >
2024-02-09 08:03:50 +01:00
|Erase([LaMa](https://www.iopaint.com/models/erase/lama))|Replace Object([PowerPaint](https://www.iopaint.com/models/diffusion/powerpaint))|
2024-02-03 14:54:20 +01:00
|-----|----|
|< video src = "https://github.com/Sanster/IOPaint/assets/3998421/264bc27c-0abd-4d8b-bb1e-0078ab264c4a" > | < video src = "https://github.com/Sanster/IOPaint/assets/3998421/1de5c288-e0e1-4f32-926d-796df0655846" > |
2024-02-09 08:03:50 +01:00
|Draw Text([AnyText](https://www.iopaint.com/models/diffusion/anytext))|Out-painting([PowerPaint](https://www.iopaint.com/models/diffusion/powerpaint))|
2024-02-03 14:54:20 +01:00
|---------|-----------|
|< video src = "https://github.com/Sanster/IOPaint/assets/3998421/ffd4eda4-f7d4-4693-93d8-d2cd5aa7c6d6" > |< video src = "https://github.com/Sanster/IOPaint/assets/3998421/c4af8aef-8c29-49e0-96eb-0aae2f768da2" > |
2021-12-12 07:54:37 +01:00
2024-02-09 08:30:00 +01:00
## Features
- Completely free and open-source, fully self-hosted, support CPU & GPU & Apple Silicon
- [Windows 1-Click Installer ](https://www.iopaint.com/install/windows_1click_installer )
2024-08-16 11:05:37 +02:00
- [OptiClean ](https://apps.apple.com/ca/app/opticlean/id6452387177 ): macOS & iOS App for object erase
2024-02-09 08:30:00 +01:00
- Supports various AI [models ](https://www.iopaint.com/models ) to perform erase, inpainting or outpainting task.
2024-08-16 11:05:37 +02:00
- [Erase models ](https://www.iopaint.com/models#erase-models ): These models can be used to remove unwanted object, defect, watermarks, people from image.
2024-02-09 08:30:00 +01:00
- Diffusion models: These models can be used to replace objects or perform outpainting. Some popular used models include:
- [runwayml/stable-diffusion-inpainting ](https://huggingface.co/runwayml/stable-diffusion-inpainting )
- [diffusers/stable-diffusion-xl-1.0-inpainting-0.1 ](https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1 )
- [andregn/Realistic_Vision_V3.0-inpainting ](https://huggingface.co/andregn/Realistic_Vision_V3.0-inpainting )
- [Lykon/dreamshaper-8-inpainting ](https://huggingface.co/Lykon/dreamshaper-8-inpainting )
- [Sanster/anything-4.0-inpainting ](https://huggingface.co/Sanster/anything-4.0-inpainting )
2024-05-19 09:02:58 +02:00
- [BrushNet ](https://www.iopaint.com/models/diffusion/brushnet )
- [PowerPaintV2 ](https://www.iopaint.com/models/diffusion/powerpaint_v2 )
2024-02-09 08:30:00 +01:00
- [Sanster/AnyText ](https://huggingface.co/Sanster/AnyText )
- [Fantasy-Studio/Paint-by-Example ](https://huggingface.co/Fantasy-Studio/Paint-by-Example )
2024-05-19 09:02:58 +02:00
2024-02-09 08:30:00 +01:00
- [Plugins ](https://www.iopaint.com/plugins ):
- [Segment Anything ](https://iopaint.com/plugins/interactive_seg ): Accurate and fast Interactive Object Segmentation
- [RemoveBG ](https://iopaint.com/plugins/rembg ): Remove image background or generate masks for foreground objects
- [Anime Segmentation ](https://iopaint.com/plugins/anime_seg ): Similar to RemoveBG, the model is specifically trained for anime images.
- [RealESRGAN ](https://iopaint.com/plugins/RealESRGAN ): Super Resolution
- [GFPGAN ](https://iopaint.com/plugins/GFPGAN ): Face Restoration
- [RestoreFormer ](https://iopaint.com/plugins/RestoreFormer ): Face Restoration
- [FileManager ](https://iopaint.com/file_manager ): Browse your pictures conveniently and save them directly to the output directory.
2022-07-22 17:20:12 +02:00
## Quick Start
2021-11-15 08:22:34 +01:00
2024-01-24 15:21:47 +01:00
### Start webui
2024-02-03 14:31:08 +01:00
IOPaint provides a convenient webui for using the latest AI models to edit your images.
2024-01-24 15:21:47 +01:00
You can install and start IOPaint easily by running following command:
2022-10-05 17:15:09 +02:00
2022-04-18 16:40:23 +02:00
```bash
2024-01-21 16:25:50 +01:00
# In order to use GPU, install cuda version of pytorch first.
# pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu118
2024-01-24 15:21:47 +01:00
# AMD GPU users, please utilize the following command, only works on linux, as pytorch is not yet supported on Windows with ROCm.
# pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/rocm5.6
2024-01-21 16:25:50 +01:00
pip3 install iopaint
2024-08-16 15:50:59 +02:00
iopaint start --model=lama --device=cpu --host 0.0.0.0 --port=8080
2022-04-18 16:40:23 +02:00
```
2024-03-07 04:56:00 +01:00
That's it, you can start using IOPaint by visiting http://localhost:8080 in your web browser.
2022-11-21 07:02:44 +01:00
2024-03-07 04:56:00 +01:00
All models will be downloaded automatically at startup. If you want to change the download directory, you can add `--model-dir` . More documentation can be found [here ](https://www.iopaint.com/install/download_model )
You can see other supported models at [here ](https://www.iopaint.com/models ) and how to use local sd ckpt/safetensors file at [here ](https://www.iopaint.com/models#load-ckptsafetensors ).
2024-02-09 08:30:00 +01:00
### Plugins
2024-03-07 04:56:00 +01:00
You can specify which plugins to use when starting the service, and you can view the commands to enable plugins by using `iopaint start --help` .
More demonstrations of the Plugin can be seen [here ](https://www.iopaint.com/plugins )
2024-02-09 08:30:00 +01:00
```bash
iopaint start --enable-interactive-seg --interactive-seg-device=cuda
```
2024-01-24 15:21:47 +01:00
### Batch processing
2022-07-25 04:16:01 +02:00
2024-02-03 14:31:08 +01:00
You can also use IOPaint in the command line to batch process images:
2021-11-15 08:22:34 +01:00
2024-01-21 16:25:50 +01:00
```bash
iopaint run --model=lama --device=cpu \
2024-02-29 00:12:56 +01:00
--image=/path/to/image_folder \
2024-01-21 16:25:50 +01:00
--mask=/path/to/mask_folder \
--output=output_dir
```
2022-02-05 12:58:25 +01:00
2024-02-29 00:12:56 +01:00
`--image` is the folder containing input images, `--mask` is the folder containing corresponding mask images.
2024-02-03 14:31:08 +01:00
When `--mask` is a path to a mask file, all images will be processed using this mask.
2021-11-15 08:22:34 +01:00
2024-01-24 15:00:01 +01:00
You can see more information about the available models and plugins supported by IOPaint below.
2024-03-04 02:28:23 +01:00
## Development
2024-05-31 03:15:13 +02:00
Install [nodejs ](https://nodejs.org/en ), then install the frontend dependencies.
2024-03-04 02:28:23 +01:00
```bash
git clone https://github.com/Sanster/IOPaint.git
cd IOPaint/web_app
npm install
2024-05-31 03:15:13 +02:00
npm run build
cp -r dist/ ../iopaint/web_app
2024-03-04 02:28:23 +01:00
```
2024-04-01 03:27:50 +02:00
Create a `.env.local` file in `web_app` and fill in the backend IP and port.
```
VITE_BACKEND=http://127.0.0.1:8080
```
2024-03-04 02:28:23 +01:00
Start front-end development environment
```bash
npm run dev
```
2024-05-31 03:15:13 +02:00
Install back-end requirements and start backend service
2024-03-04 02:28:23 +01:00
```bash
2024-03-04 02:29:47 +01:00
pip install -r requirements.txt
2024-08-20 19:50:40 +02:00
pip3 install opencv-python-headless
2024-05-03 21:32:35 +02:00
python3 main.py start --model lama --port 8080
2024-03-04 02:28:23 +01:00
```
2024-05-31 03:15:13 +02:00
Then you can visit `http://localhost:5173/` for development.
The frontend code will automatically update after being modified,
but the backend needs to restart the service after modifying the python code.