Release 0.12.0 (#282)
This commit is contained in:
parent
c2c860f4de
commit
2e28a987c7
28
CHANGELOG.md
28
CHANGELOG.md
@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.12.0] - 2025-11-27
|
||||
|
||||
# MFLUX v.0.12.0 Release Notes
|
||||
|
||||
### 🎨 New Model Support
|
||||
|
||||
- **Bria FIBO Support**: Added support for [FIBO](https://huggingface.co/briaai/FIBO), the first open-source JSON-native text-to-image model from [Bria.ai](https://bria.ai)
|
||||
- **Three operation modes**: Generate (text-to-image with VLM expansion), Refine (structured prompt editing), and Inspire (image-to-prompt extraction)
|
||||
- **New commands**:
|
||||
- `mflux-generate-fibo` - Generate images from text prompts with VLM-guided JSON expansion
|
||||
- `mflux-refine-fibo` - Refine images using structured JSON prompts for targeted attribute editing
|
||||
- `mflux-inspire-fibo` - Extract structured prompts from reference images for style transfer and remixing
|
||||
- **VLM-guided JSON prompting**: Automatically expands short text prompts into 1,000+ word structured schemas using a fine-tuned Qwen3-VL model
|
||||
|
||||
### 🔧 Restructure and 🔄 Breaking Changes
|
||||
|
||||
- **Common module reorganization**: Moved shared functionality to `models/common/` for better code reuse
|
||||
- Unified latent creators across model families
|
||||
- Centralized scheduler implementations
|
||||
- Common quantization utilities
|
||||
- Shared model saving functionality
|
||||
|
||||
### 👩💻 Contributors
|
||||
|
||||
- **Filip Strand (@filipstrand)**: FIBO model implementation, architecture, core development
|
||||
|
||||
---
|
||||
|
||||
## [0.11.1] - 2025-11-13
|
||||
|
||||
# MFLUX v.0.11.1 Release Notes
|
||||
|
||||
@ -17,7 +17,7 @@ source-exclude = [
|
||||
|
||||
[project]
|
||||
name = "mflux"
|
||||
version = "0.12.0.dev0"
|
||||
version = "0.12.0"
|
||||
description = "A MLX port of FLUX based on the Huggingface Diffusers implementation."
|
||||
readme = "README.md"
|
||||
keywords = ["diffusers", "flux", "mlx"]
|
||||
@ -30,7 +30,7 @@ dependencies = [
|
||||
"filelock>=3.18.0",
|
||||
"huggingface-hub>=0.24.5,<1.0",
|
||||
"matplotlib>=3.9.2,<4.0",
|
||||
"mlx>=0.27.0,<0.30.0",
|
||||
"mlx>=0.27.0,<0.31.0",
|
||||
"numpy>=2.0.1,<3.0",
|
||||
"opencv-python>=4.10.0,<5.0",
|
||||
"piexif>=1.1.3,<2.0",
|
||||
|
||||
@ -88,18 +88,18 @@ class FIBO(nn.Module):
|
||||
for t in time_steps:
|
||||
try:
|
||||
# 3.t Predict the noise
|
||||
noise_pred = self.transformer(
|
||||
noise = self.transformer(
|
||||
t=t,
|
||||
config=runtime_config,
|
||||
hidden_states=latents,
|
||||
encoder_hidden_states=encoder_hidden_states,
|
||||
text_encoder_layers=text_encoder_layers,
|
||||
)
|
||||
noise_pred = FIBO._apply_classifier_free_guidance(noise_pred, runtime_config.guidance)
|
||||
noise = FIBO._apply_classifier_free_guidance(noise, runtime_config.guidance)
|
||||
|
||||
# 4.t Take one denoise step
|
||||
latents = runtime_config.scheduler.step(
|
||||
model_output=noise_pred,
|
||||
model_output=noise,
|
||||
timestep=t,
|
||||
sample=latents,
|
||||
)
|
||||
@ -155,10 +155,10 @@ class FIBO(nn.Module):
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def _apply_classifier_free_guidance(noise_pred: mx.array, guidance: float) -> mx.array:
|
||||
half = noise_pred.shape[0] // 2
|
||||
noise_uncond = noise_pred[:half]
|
||||
noise_text = noise_pred[half:]
|
||||
def _apply_classifier_free_guidance(noise: mx.array, guidance: float) -> mx.array:
|
||||
half = noise.shape[0] // 2
|
||||
noise_uncond = noise[:half]
|
||||
noise_text = noise[half:]
|
||||
return noise_uncond + guidance * (noise_text - noise_uncond)
|
||||
|
||||
@staticmethod
|
||||
|
||||
Loading…
Reference in New Issue
Block a user