Skip to content

Commit 58ada07

Browse files
committed
add support FluxFill inpainting pipeline
1 parent 014a840 commit 58ada07

File tree

3 files changed

+53
-16
lines changed

3 files changed

+53
-16
lines changed

optimum/exporters/openvino/convert.py

+26-13
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
_torch_version,
4444
_transformers_version,
4545
compare_versions,
46+
is_diffusers_version,
4647
is_openvino_tokenizers_version,
4748
is_tokenizers_version,
4849
is_transformers_version,
@@ -988,24 +989,36 @@ def _get_submodels_and_export_configs(
988989
def get_diffusion_models_for_export_ext(
989990
pipeline: "DiffusionPipeline", int_dtype: str = "int64", float_dtype: str = "fp32", exporter: str = "openvino"
990991
):
991-
try:
992-
from diffusers import (
993-
StableDiffusion3Img2ImgPipeline,
994-
StableDiffusion3InpaintPipeline,
995-
StableDiffusion3Pipeline,
996-
)
992+
if is_diffusers_version(">=", "0.29.0"):
993+
from diffusers import StableDiffusion3Img2ImgPipeline, StableDiffusion3Pipeline
997994

998-
is_sd3 = isinstance(
999-
pipeline, (StableDiffusion3Pipeline, StableDiffusion3InpaintPipeline, StableDiffusion3Img2ImgPipeline)
1000-
)
1001-
except ImportError:
995+
sd3_pipes = [StableDiffusion3Pipeline, StableDiffusion3Img2ImgPipeline]
996+
if is_diffusers_version(">=", "0.30.0"):
997+
from diffusers import StableDiffusion3InpaintPipeline
998+
999+
sd3_pipes.append(StableDiffusion3InpaintPipeline)
1000+
1001+
is_sd3 = isinstance(pipeline, tuple(sd3_pipes))
1002+
else:
10021003
is_sd3 = False
10031004

1004-
try:
1005+
if is_diffusers_version(">=", "0.30.0"):
10051006
from diffusers import FluxPipeline
10061007

1007-
is_flux = isinstance(pipeline, FluxPipeline)
1008-
except ImportError:
1008+
flux_pipes = [FluxPipeline]
1009+
1010+
if is_diffusers_version(">=", "0.31.0"):
1011+
from diffusers import FluxImg2ImgPipeline, FluxInpaintPipeline
1012+
1013+
flux_pipes.extend([FluxPipeline, FluxImg2ImgPipeline, FluxInpaintPipeline])
1014+
1015+
if is_diffusers_version(">=", "0.32.0"):
1016+
from diffusers import FluxFillPipeline
1017+
1018+
flux_pipes.append(FluxFillPipeline)
1019+
1020+
is_flux = isinstance(pipeline, tuple(flux_pipes))
1021+
else:
10091022
is_flux = False
10101023

10111024
if not is_sd3 and not is_flux:

optimum/exporters/openvino/model_configs.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,12 @@
5555
)
5656
from optimum.utils.normalized_config import NormalizedConfig, NormalizedTextConfig, NormalizedVisionConfig
5757

58-
from ...intel.utils.import_utils import _transformers_version, is_diffusers_version, is_transformers_version
58+
from ...intel.utils.import_utils import (
59+
_transformers_version,
60+
is_diffusers_available,
61+
is_diffusers_version,
62+
is_transformers_version,
63+
)
5964
from .model_patcher import (
6065
AquilaModelPatcher,
6166
ArcticModelPatcher,
@@ -116,6 +121,10 @@ def init_model_configs():
116121
"image-text-to-text"
117122
] = TasksManager._TRANSFORMERS_TASKS_TO_MODEL_LOADERS["text-generation"]
118123

124+
if is_diffusers_available():
125+
TasksManager._DIFFUSERS_TASKS_TO_MODEL_LOADERS["fill"] = "FluxFillPipeline"
126+
TasksManager._DIFFUSERS_TASKS_TO_MODEL_MAPPINGS["fill"] = {"flux": "FluxFillPipeline"}
127+
119128
supported_model_types = [
120129
"_SUPPORTED_MODEL_TYPE",
121130
"_DIFFUSERS_SUPPORTED_MODEL_TYPE",

optimum/intel/openvino/modeling_diffusion.py

+17-2
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@
101101
FluxImg2ImgPipeline = object
102102
FluxInpaintPipeline = object
103103

104+
if is_diffusers_version(">=", "0.32.0"):
105+
from diffusers import FluxFillPipeline
106+
else:
107+
FluxFillPipeline = object
108+
104109

105110
DIFFUSION_MODEL_TRANSFORMER_SUBFOLDER = "transformer"
106111
DIFFUSION_MODEL_TEXT_ENCODER_3_SUBFOLDER = "text_encoder_3"
@@ -1452,17 +1457,23 @@ class OVFluxPipeline(OVDiffusionPipeline, OVTextualInversionLoaderMixin, FluxPip
14521457

14531458

14541459
class OVFluxImg2ImgPipeline(OVDiffusionPipeline, OVTextualInversionLoaderMixin, FluxImg2ImgPipeline):
1455-
main_input_name = "prompt"
1460+
main_input_name = "image"
14561461
export_feature = "image-to-image"
14571462
auto_model_class = FluxImg2ImgPipeline
14581463

14591464

14601465
class OVFluxInpaintPipeline(OVDiffusionPipeline, OVTextualInversionLoaderMixin, FluxInpaintPipeline):
1461-
main_input_name = "prompt"
1466+
main_input_name = "image"
14621467
export_feature = "inpainting"
14631468
auto_model_class = FluxInpaintPipeline
14641469

14651470

1471+
class OVFluxFillPipeline(OVDiffusionPipeline, OVTextualInversionLoaderMixin, FluxFillPipeline):
1472+
main_input_name = "image"
1473+
export_feature = "inpainting"
1474+
auto_model_class = FluxFillPipeline
1475+
1476+
14661477
SUPPORTED_OV_PIPELINES = [
14671478
OVStableDiffusionPipeline,
14681479
OVStableDiffusionImg2ImgPipeline,
@@ -1531,6 +1542,10 @@ def _get_ov_class(pipeline_class_name: str, throw_error_if_not_exist: bool = Tru
15311542
OV_INPAINT_PIPELINES_MAPPING["flux"] = OVFluxInpaintPipeline
15321543
OV_IMAGE2IMAGE_PIPELINES_MAPPING["flux"] = OVFluxImg2ImgPipeline
15331544

1545+
if is_diffusers_version(">=", "0.32.0"):
1546+
OV_INPAINT_PIPELINES_MAPPING["flux-fill"] = OVFluxFillPipeline
1547+
SUPPORTED_OV_PIPELINES.append(OVFluxFillPipeline)
1548+
15341549
SUPPORTED_OV_PIPELINES_MAPPINGS = [
15351550
OV_TEXT2IMAGE_PIPELINES_MAPPING,
15361551
OV_IMAGE2IMAGE_PIPELINES_MAPPING,

0 commit comments

Comments
 (0)