|
--- |
|
license: other |
|
license_name: bria-legal-lobby |
|
license_link: https://bria.ai/legal-lobby |
|
--- |
|
|
|
|
|
# BRIA-3.2 ControlNet Union Model Card |
|
|
|
BRIA-3.2 ControlNet-Union, trained on the foundation of [BRIA-3.2 Text-to-Image](https://huggingface.co/briaai/BRIA-3.2), supports 6 control modes, including depth (0), canny (1), colorgrid (2), recolor (3), tile (4), pose (5). This model can be jointly used with other ControlNets. |
|
|
|
Built with a strong commitment to legal compliance and responsible AI practices, this model ensures safe and scalable generative image capabilities for commercial use. |
|
|
|
|
|
[CLICK HERE FOR A DEMO](https://huggingface.co/spaces/briaai/BRIA-3.2-ControlNet-Union) |
|
|
|
For more information, please visit our [website](https://bria.ai/). |
|
|
|
Join our [Discord community](https://discord.gg/Nxe9YW9zHS) for more information, tutorials, tools, and to connect with other users! |
|
|
|
### Get Access |
|
BRIA-3.2-ControlNet-Union requires access to BRIA-3.2 Text-to-Image. For more information, [click here](https://huggingface.co/briaai/BRIA-3.2). |
|
|
|
### Model Description |
|
- **Developed by:** BRIA AI |
|
- **Model type:** Latent Flow-Matching Text-to-Image Model |
|
- **License:** [Commercial licensing terms & conditions.](https://bria.ai/customer-general-terms-and-conditions) |
|
- Purchase is required to license and access the model. |
|
- **Model Description:** ControlNet Union for BRIA-3.2 Text-to-Image model. The model generates images guided by text and a conditioned image. |
|
- **Resources for more information:** [BRIA AI](https://bria.ai/) |
|
|
|
|
|
## Control Mode |
|
| Control Mode | Description | |
|
|:------------:|:-----------:| |
|
|0|depth |
|
|1|canny |
|
|2|colorgrid |
|
|3|recolor |
|
|4|tlie |
|
|5|pose |
|
|
|
|
|
```python |
|
|
|
``` |
|
|
|
### Installations |
|
```bash |
|
pip install -qr https://huggingface.co/briaai/BRIA-3.2/resolve/main/requirements.txt |
|
pip install diffusers==0.30.2, hf_hub_download |
|
``` |
|
|
|
```python |
|
from huggingface_hub import hf_hub_download |
|
import os |
|
try: |
|
local_dir = os.path.dirname(__file__) |
|
except: |
|
local_dir = '.' |
|
|
|
hf_hub_download(repo_id="briaai/BRIA-3.2", filename='pipeline_bria.py', local_dir=local_dir) |
|
hf_hub_download(repo_id="briaai/BRIA-3.2", filename='transformer_bria.py', local_dir=local_dir) |
|
hf_hub_download(repo_id="briaai/BRIA-3.2", filename='bria_utils.py', local_dir=local_dir) |
|
hf_hub_download(repo_id="briaai/BRIA-3.2-ControlNet-Union", filename='pipeline_bria_controlnet.py', local_dir=local_dir) |
|
hf_hub_download(repo_id="briaai/BRIA-3.2-ControlNet-Union", filename='controlnet_bria.py', local_dir=local_dir) |
|
``` |
|
|
|
# Inference |
|
```python |
|
import torch |
|
from diffusers.utils import load_image |
|
from controlnet_bria import BriaControlNetModel |
|
from pipeline_bria_controlnet import BriaControlNetPipeline |
|
import PIL.Image as Image |
|
|
|
RATIO_CONFIGS_1024 = { |
|
0.6666666666666666: {"width": 832, "height": 1248}, |
|
0.7432432432432432: {"width": 880, "height": 1184}, |
|
0.8028169014084507: {"width": 912, "height": 1136}, |
|
1.0: {"width": 1024, "height": 1024}, |
|
1.2456140350877194: {"width": 1136, "height": 912}, |
|
1.3454545454545455: {"width": 1184, "height": 880}, |
|
1.4339622641509433: {"width": 1216, "height": 848}, |
|
1.5: {"width": 1248, "height": 832}, |
|
1.5490196078431373: {"width": 1264, "height": 816}, |
|
1.62: {"width": 1296, "height": 800}, |
|
1.7708333333333333: {"width": 1360, "height": 768}, |
|
} |
|
|
|
def resize_img(control_image): |
|
image_ratio = control_image.width / control_image.height |
|
ratio = min(RATIO_CONFIGS_1024.keys(), key=lambda k: abs(k - image_ratio)) |
|
to_height = RATIO_CONFIGS_1024[ratio]["height"] |
|
to_width = RATIO_CONFIGS_1024[ratio]["width"] |
|
resized_image = control_image.resize((to_width, to_height), resample=Image.Resampling.LANCZOS) |
|
return resized_image |
|
|
|
|
|
base_model = 'briaai/BRIA-3.2' |
|
controlnet_model = 'briaai/BRIA-3.2-ControlNet-Union' |
|
controlnet = BriaControlNetModel.from_pretrained(controlnet_model, torch_dtype=torch.bfloat16) |
|
pipeline = BriaControlNetPipeline.from_pretrained(base_model, controlnet=controlnet, trust_remote_code=True) |
|
pipeline = pipeline.to(device="cuda", dtype=torch.bfloat16) |
|
|
|
control_image_canny = load_image("https://huggingface.co/briaai/BRIA-3.2-ControlNet-Union/resolve/main/images/canny.jpg") |
|
controlnet_conditioning_scale = 1.0 |
|
control_mode = 1 |
|
control_image_canny = resize_img(control_image_canny) |
|
width, height = control_image_canny.size |
|
|
|
prompt = 'In a serene living room, someone rests on a sapphire blue couch, diligently drawing in a rose-tinted notebook, with a sleek black coffee table, a muted green wall, an elegant geometric lamp, and a lush potted palm enhancing the peaceful ambiance.' |
|
|
|
generator = torch.Generator(device="cuda").manual_seed(555) |
|
image = pipeline( |
|
prompt, |
|
control_image=control_image_canny, |
|
control_mode=control_mode, |
|
width=width, |
|
height=height, |
|
controlnet_conditioning_scale=controlnet_conditioning_scale, |
|
num_inference_steps=50, |
|
max_sequence_length=128, |
|
guidance_scale=5, |
|
generator=generator, |
|
negative_prompt="Ugly,Morbid,Extra fingers,Poorly drawn hands,Mutation,Blurry,Extra limbs,Gross proportions,Missing arms,Mutated hands,Long neck,Duplicate" |
|
).images[0] |
|
print(image) |
|
``` |
|
|
|
# Multi-Controls Inference |
|
```python |
|
import torch |
|
from diffusers.utils import load_image |
|
from controlnet_bria import BriaControlNetModel, BriaMultiControlNetModel |
|
from pipeline_bria_controlnet import BriaControlNetPipeline |
|
import PIL.Image as Image |
|
|
|
base_model = 'briaai/BRIA-3.2' |
|
controlnet_model = 'briaai/BRIA-3.2-ControlNet-Union' |
|
|
|
controlnet = BriaControlNetModel.from_pretrained(controlnet_model, torch_dtype=torch.bfloat16) |
|
controlnet = BriaMultiControlNetModel([controlnet]) |
|
|
|
pipe = BriaControlNetPipeline.from_pretrained(base_model, controlnet=controlnet, torch_dtype=torch.bfloat16, trust_remote_code=True) |
|
pipe.to("cuda") |
|
|
|
control_image_colorgrid = load_image("https://huggingface.co/briaai/BRIA-3.2-ControlNet-Union/resolve/main/images/colorgrid.jpg") |
|
control_image_pose = load_image("https://huggingface.co/briaai/BRIA-3.2-ControlNet-Union/resolve/main/images/pose.jpg") |
|
|
|
control_image = [control_image_colorgrid, control_image_pose] |
|
controlnet_conditioning_scale = [0.5, 0.5] |
|
control_mode = [2, 5] |
|
|
|
width, height = control_image[0].size |
|
|
|
prompt = 'Two kids in jackets play near a tent in a forest.' |
|
|
|
generator = torch.Generator(device="cuda").manual_seed(555) |
|
image = pipe( |
|
prompt, |
|
control_image=control_image, |
|
control_mode=control_mode, |
|
width=width, |
|
height=height, |
|
controlnet_conditioning_scale=controlnet_conditioning_scale, |
|
num_inference_steps=50, |
|
max_sequence_length=128, |
|
guidance_scale=5, |
|
generator=generator, |
|
negative_prompt="Ugly,Morbid,Extra fingers,Poorly drawn hands,Mutation,Blurry,Extra limbs,Gross proportions,Missing arms,Mutated hands,Long neck,Duplicate" |
|
).images[0] |
|
``` |
|
|