Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures.
Go to file
2022-06-14 15:03:03 +08:00
.github Create FUNDING.yml 2022-06-10 17:01:33 +08:00
assets update README 2022-06-12 22:06:29 +08:00
lama_cleaner add gradually inpainting mode 2022-06-14 15:03:03 +08:00
.gitignore update 2022-04-18 22:18:48 +08:00
Dockerfile Added Dockerfile 2021-11-15 20:11:46 +01:00
LICENSE init 2021-11-15 22:21:01 +08:00
main.py add setup.py 2022-04-18 15:15:51 +08:00
publish.sh update 2022-04-18 22:18:48 +08:00
README.md update README 2022-06-12 22:07:58 +08:00
requirements-dev.txt add setup.py 2022-04-18 15:15:51 +08:00
requirements.txt use flask1, flask2 require python3.7 2022-04-18 22:54:34 +08:00
setup.py 0.13.0 2022-06-12 22:13:41 +08:00

Lama-cleaner: Image inpainting tool powered by SOTA AI model

downloads version Open in Colab

https://user-images.githubusercontent.com/3998421/153323093-b664bb68-2928-480b-b59b-7c1ee24a4507.mp4

  • Support multiple model architectures
    1. LaMa
    2. LDM
  • Support CPU & GPU
  • High resolution support
  • Run as a desktop APP
  • Multi stroke support. Press and hold the cmd/ctrl key to enable multi stroke mode.
  • Zoom & Pan

Install

pip install lama-cleaner

lama-cleaner --device=cpu --port=8080

Available commands:

Name Description Default
--model lama or ldm. See details in Model Comparison lama
--device cuda or cpu cuda
--gui Launch lama-cleaner as a desktop application
--gui_size Set the window size for the application 1200 900
--input Path to image you want to load by default None
--port Port for flask web server 8080
--debug Enable debug mode for flask web server

Settings

You can change the configs of inpainting process in the settings interface of the web page.

Inpainting Model

Select the inpainting model to use, and set the configs corresponding to the model.

LaMa model has no configs that can be specified at runtime.

LDM model has two configs to control the quality of final result:

  1. Steps: You can get better result with large steps, but it will be more time-consuming
  2. Sampler: ddim or plms. In general plms can get better results with fewer steps

High Resolution Strategy

There are three strategies for handling high-resolution images.

  • Original: Use the original resolution of the picture, suitable for picture size below 2K.
  • Resize: Resize the longer side of the image to a specific size(keep ratio), then do inpainting on the resized image. The inpainting result will be pasted back on the original image to make sure other part of image not loss quality.
  • Crop: Crop masking area from the original image to do inpainting, and paste the result back. Mainly for performance and memory reasons on high resolution image. This strategy may give better results for ldm model.

Model Comparison

Model Pron Corn
LaMa - Perform will on high resolution image(~2k)
- Faster than diffusion model
LDM - It's possible to get better and more detail result, see example below
- The balance of time and quality can be achieved by steps
- Slower than GAN model
- Need more GPU memory
- Not good for high resolution images
Original Image LaMa LDM
photo-1583445095369-9c651e7e5d34 photo-1583445095369-9c651e7e5d34_cleanup_lama photo-1583445095369-9c651e7e5d34_cleanup_ldm

Blogs about diffusion models:

Development

Only needed if you plan to modify the frontend and recompile yourself.

Frontend

Frontend code are modified from cleanup.pictures, You can experience their great online services here.

  • Install dependencies:cd lama_cleaner/app/ && yarn
  • Start development server: yarn start
  • Build: yarn build

Docker

Run within a Docker container. Set the CACHE_DIR to models location path. Optionally add a -d option to the docker run command below to run as a daemon.

Build Docker image

docker build -f Dockerfile -t lamacleaner .

Run Docker (cpu)

docker run -p 8080:8080 -e CACHE_DIR=/app/models -v  $(pwd)/models:/app/models -v $(pwd):/app --rm lamacleaner python3 main.py --device=cpu --port=8080

Run Docker (gpu)

docker run --gpus all -p 8080:8080 -e CACHE_DIR=/app/models -v $(pwd)/models:/app/models -v $(pwd):/app --rm lamacleaner python3 main.py --device=cuda --port=8080

Then open http://localhost:8080

Like My Work?

Sanster