• Stars
    star
    470
  • Rank 91,350 (Top 2 %)
  • Language Vue
  • License
    MIT License
  • Created about 1 year ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Openpose editor for ControlNet. Full hand/face support.

Openpose Editor for ControlNet in Stable Diffusion WebUI

This extension is specifically build to be integrated into Stable Diffusion WebUI's ControlNet extension.

editor_in_modal

Translations of README.md

Prerequisite

ControlNet 1.1.216+

Installation

installation_guide restart_ui_guide

On UI restart, the extension will try to download the compiled Vue app from Github. Check whether stable-diffusion-webui\extensions\sd-webui-openpose-editor\dist exists and has content in it.

Some users in China have reported having issue downloading dist with the autoupdate script. In such situtations, the user has 2 following options to get dist manually:

Option1: Build the application

Make sure you have nodeJS environment ready and follow Development section. Run npm run build to compile the application.

Option2: Download the compiled application

You can download the compiled application(dist.zip) from the release page. Unzip the package in the repository root and make sure hte unziped directory is named dist.

Usage

The openpose editor core is build with Vue3. The gradio extension script is a thin wrapper that mounts the Vue3 Application on /openpose_editor_index.

The user can directly access the editor at localhost:7860/openpose_editor_index or https://huchenlei.github.io/sd-webui-openpose-editor/ if desired, but the main entry point is invoking the editor in the ControlNet extension. In ControlNet extension, select any openpose preprocessor, and hit the run preprocessor button. A preprocessor result preview will be genereated. Click Edit button at the bottom right corner of the generated image will bring up the openpose editor in a modal. After the edit, clicking the Send pose to ControlNet button will send back the pose to ControlNet.

Following demo shows the basic workflow:

Basic Workflow

Features

  1. Support for face/hand used in controlnet.
    • The extension recognizes the face/hand objects in the controlnet preprocess results.
    • The user can add face/hand if the preprocessor result misses them. It can be done by either
      • Add Default hand (Face is not supported as face has too many keypoints (70 keypoints), which makes adjust them manually really hard.)
      • Add the object by uploading a pose JSON. The corresponding object of the first person will be used.
  2. Visibility toggle
    • If a keypoint is not recognized by ControlNet preprocessor, it will have (-1, -1) as coordinates. Such invalid keypoints will be set as invisible in the editor.
    • If the user sets a keypoint as invisible and send the pose back to controlnet, the limb segments that the keypoint connects will not be rendered. Effectively this is how you remove a limb segment in the editor.
  3. Group toggle
    • If you don't want to accidentally select and modify the keypoint of an canvas object (hand/face/body). You can group them. The grouped object will act like it is a single object. You can scale, rotate, skew the group.

Development

Recommended IDE Setup

VSCode + Volar (and disable Vetur) + TypeScript Vue Plugin (Volar).

Type Support for .vue Imports in TS

TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need TypeScript Vue Plugin (Volar) to make the TypeScript language service aware of .vue types.

If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a Take Over Mode that is more performant. You can enable it by the following steps:

  1. Disable the built-in TypeScript Extension
    1. Run Extensions: Show Built-in Extensions from VSCode's command palette
    2. Find TypeScript and JavaScript Language Features, right click and select Disable (Workspace)
  2. Reload the VSCode window by running Developer: Reload Window from the command palette.

Customize configuration

See Vite Configuration Reference.

Project Setup

npm install

Compile and Hot-Reload for Development

npm run dev

Type-Check, Compile and Minify for Production

npm run build

Run Unit Tests with Vitest

npm run test:unit

Lint with ESLint

npm run lint

More Repositories

1

sd-webui-api-payload-display

Display the corresponding API payload after each generation on WebUI
JavaScript
68
star
2

stable-diffusion-ps-pea

Use Stable Diffusion in Photopea!
Vue
42
star
3

acorn-api-js

API for user actions on Acorn (University of Toronto student system) in TypeScript
TypeScript
15
star
4

timetable

The project is dedicated on providing a better course scheduling experience for students at University of Toronto.
TypeScript
5
star
5

assline

Lua
3
star
6

course-arrange

Arrange(Schedule) courses with given constraints
TypeScript
3
star
7

ECE361

University of Toronto ECE361 Computer Networks
C
2
star
8

HandRefinerPortable

Portable version of HandRefiner
Python
2
star
9

sd-webui-controlnet-evaclip

EVA-CLIP preprocessor for sd-webui-controlnet
Python
2
star
10

NeoMagellan

Improved version of Magellan Course Management System for ECEs at University of Toronto
Python
2
star
11

ECE419

ECE419S 2018 Distributed System (Cloud Database)
Java
2
star
12

ECE521

ECE521S 2018 Introduction to Machine Learning
Python
2
star
13

VSCode_ComfyUI

VSCode extension that embeds ComfyUI (WIP)
2
star
14

ComfyUI-layerdiffusion

Layered Diffusion custom nodes
Python
1
star
15

vscode-chromium-test

Vscode support to run chromium test(web tests, browser tests, cpp unit tests).
TypeScript
1
star
16

ComfyUI-openpose-editor

Port of https://github.com/huchenlei/sd-webui-openpose-editor in ComfyUI
1
star
17

sd-webui-user-metrics

Let's record some histograms!
1
star
18

CSC467

CSC467 Compiler course at University of Toronto
C
1
star
19

ComfyUI_GlyphByT5

GlyphByT5 ComfyUI custom nodes. (WIP)
1
star
20

ComfyUI-IC-Light

1
star
21

ComfyUI_webtests

Selenium-based browser tests for ComfyUI interactions
1
star