/MagicQuill

Official Implementations for Paper - MagicQuill: An Intelligent Interactive Image Editing System

Primary LanguagePythonOtherNOASSERTION

🪶 MagicQuill: An Intelligent Interactive Image Editing System

demo480p.mp4

There is an HD video on Youtube.

Zichen Liu*,1,2, Yue Yu*,1,2, Hao Ouyang2, Qiuyu Wang2, Ka Leong Cheng1,2, Wen Wang3,2, Zhiheng Liu4, Qifeng Chen†,1, Yujun Shen†,2
1HKUST 2Ant Group 3ZJU 4HKU *equal contribution corresponding author

TLDR: MagicQuill is an intelligent and interactive system achieving precise image editing.

Key Features: 😎 User-friendly interface / 🤖 AI-powered suggestions / 🎨 Precise local editing

TODO List

  • Release the paper and demo page. Visit magicquill.art 🪩
  • Release the code and checkpoints.
  • Release gradio demo.
  • Release ComfyUI MagicQuill custom node.

Hardware Requirements

  • GPU is required to run MagicQuill
  • Instant prompt guessing ("Draw&Guess") requires ~5GB VRAM
  • Image editing operations require ~15GB VRAM

For users with limited GPU resources, please try our Huggingface Demo or Web Demo (Alipay Cloud).

Setup

If you are a Linux user, follow the following guide to set up the environment. If you are a Windows user, you may find this helpful.

  1. git clone repo

    git clone --recursive https://github.com/magic-quill/MagicQuill.git
    cd MagicQuill
    
  2. download and unzip checkpoints

    wget -O models.zip "https://hkustconnect-my.sharepoint.com/:u:/g/personal/zliucz_connect_ust_hk/EWlGF0WfawJIrJ1Hn85_-3gB0MtwImAnYeWXuleVQcukMg?e=Gcjugg&download=1"
    unzip models.zip
    

    If the .zip file is not accessible, download it via browser. All checkpoints are about 25 GB in total. It may take some time to download. Alternatively, check our checkpoints at huggingface.

  3. create environment

    conda create -n MagicQuill python=3.10 -y
    conda activate MagicQuill
    
  4. install the interface

    pip install gradio_magicquill-0.0.1-py3-none-any.whl
    
  5. install llava environment

    cp -f pyproject.toml MagicQuill/LLaVA/
    pip install -e MagicQuill/LLaVA/
    
  6. install the remaining environment

    pip install -r requirements.txt
    
  7. run magicquill

    CUDA_VISIBLE_DEVICES=0 python gradio_run.py
    

    If you are mainland user, you may try export HF_ENDPOINT=https://hf-mirror.com to use huggingface mirror to facilitate the download of some necessary checkpoints to run our system.

Tutorial

Please read before you try!

I. Three type of magic quills

SVG image

Use the add brush to add details and elements guided by prompts - express your ideas with your own lively strokes!

gif description
"With just a few strokes, a vivid little deer comes to life"

gif description
"Adorn the beautiful lady with a necklace"

SVG image

The subtract brush can remove excess details or redraw areas based on prompts. If there's anything you're not satisfied with, just subtract it away!

gif description
"A dolphin with two tail fins? Let's give it a quick 'treatment'!"

gif description
"Let's take off Mr. Skeleton's hat and help him cool down."


add brush&minus brush

Combine the add and subtract brushes to create amazing combo effects!

gif description
"Let's give Mona Lisa a pet cat~"

gif description
"Let's give this handsome fellow a new tie!"

SVG image

The color brush can precisely color the image, matching the color of your brush~

gif description
"Precise color highlighting - paint exactly where you want to color"

gif description
"Don't you think the blue flowers look more dreamy than the pink ones?"

*Please note the color brush and add&subtract brush are mutually exclusive - you can only use one at a time!


II. Draw and Guess

SVG image
Our brush is super smart! Look at the examples above - as soon as you finish drawing, it quickly guesses what you want to create and fills in the prompts for you~ Sometimes it might guess wrong though, so feel free to tell it what you actually want to draw~

gif description
"Oops! I don't want to draw a vine, I want to create a path!"


III. Super useful canvas tools!


SVG image
Click this button to upload the photo you want to edit~

SVG image
Made a mistake with the brush? Just erase it with the rubber tool!

SVG image
Drag, rotate, and resize your strokes with the cursor - just like when you're working in PowerPoint!

add brush&minus brush
Left is ctrl+z, right is ctrl+y - you know what that means! 😊
And for Mac users, left is command+z, right is command+shift+z! 😝

SVG image
Oops! That doesn't look right 😵 - click this trash bin to delete the stroke

SVG image
The brush strokes are in my way, how can I see the image😡?! Try clicking this button to temporarily hide your strokes

add brush&minus brush
These two icons will appear after the image is generated...
I love this generated image 😍, I want to keep editing! ➡️ Click ✅ to continue editing
What is this thing 😡, I don't want to see it! ➡️ Click ❎ to discard the result


IV. Notes


SVG image
When you see the spinning icon in the bottom left corner, it means the magicquill is still charging up 💪 Wait for it to disappear before clicking the Run button!

SVG image
When the magic wand is flashing, our brush is working hard to guess what you're trying to draw 🤔 Please be patient! 🙏


V. Parameters

If you've made it here, you must really love our work! 😍
If you want to learn how to better control the generation results, don't miss this section! 😘
Next to the Run button, you can select parameters to modify advanced settings 🧐

  • Base Model Name: Users can adjust this to select appropriate base models for different editing styles
  • Negative Prompt: Users can input content they want the model to avoid generating. Whatever you don't want to generate, put it here.
  • Fine Edge: Users can enable this option to activate fine edge control.
  • Grow Size: Adjust this parameter to set the pixel range affected around brush strokes when editing images, to expand/reduce the brush stroke influence area.
  • Edge Strength: Parameter for adjusting the add/subtract brush control strength. Simply put, if you're confident in your drawing skills, you can increase strength. If you're a bad drawer like us 🤦, please keep the parameter as is, or reduce the strength a bit.
  • Color Strength: Parameter for adjusting the color brush control strength, can adjust the image's coloring effects.
  • The remaining parameters are just some common parameters for diffusion models! You basically don't need to manage these, but if you're in the industry/AI art expert, feel free to try adjusting them~

Citation

Don't forget to cite this source if it proves useful in your research!

@article{liu2024magicquill, 
	title={MagicQuill: An Intelligent Interactive Image Editing System}, 
	author={Zichen Liu and Yue Yu and Hao Ouyang and Qiuyu Wang and Ka Leong Cheng and Wen Wang and Zhiheng Liu and Qifeng Chen and Yujun Shen}, 
	year={2024}, 
	eprint={2411.09703}, 
	archivePrefix={arXiv}, 
	primaryClass={cs.CV}}

Acknowledgement

Our implementation is based on

Thanks for their remarkable contribution and released code!

Note

Note: This repo is governed by the license of CC BY-NC 4.0 We strongly advise users not to knowingly generate or allow others to knowingly generate harmful content, including hate speech, violence, pornography, deception, etc.

(注:本仓库受CC BY-NC的许可协议限制。我们强烈建议,用户不应传播及不应允许他人传播以下内容,包括但不限于仇恨言论、暴力、色情、欺诈相关的有害信息。)