Diffusers documentation

UNet3DConditionModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet3DConditionModel

تم تقديم نموذج UNet في الأصل بواسطة Ronneberger et al. لتجزئة الصور الطبية الحيوية، لكنه يُستخدم أيضاً بشكل شائع في 🤗 Diffusers لأنه يُخرج صوراً بنفس حجم المدخلات. وهو أحد أهم مكونات نظام الانتشار لأنه ييسّر عملية الانتشار الفعلية. توجد عدة متغيرات لنموذج UNet في 🤗 Diffusers، اعتماداً على عدد أبعاده وعلى ما إذا كان نموذجاً شرطياً أم لا. هذا نموذج UNet شرطي ثلاثي الأبعاد.

ملخص الورقة البحثية هو:

يوجد إجماع واسع على أن التدريب الناجح للشبكات العميقة يتطلب آلاف الأمثلة التدريبية المُعلَّمة. في هذه الورقة، نعرض شبكة واستراتيجية تدريب تعتمدان على الاستخدام القوي لزيادة البيانات لاستخدام الأمثلة المُعلَّمة المتاحة بكفاءة أكبر. تتكون البنية من مسار انكماشي لالتقاط السياق ومسار متوسع متماثل يمكّن من تحديد دقيق للمواقع. نُظهر أن مثل هذه الشبكة يمكن تدريبها من البداية إلى النهاية من عدد قليل جداً من الصور، وتتفوق على أفضل طريقة سابقة (شبكة تلافيفية بنافذة منزلقة) في تحدي ISBI لتجزئة الهياكل العصبية في المكدسات المجهرية الإلكترونية. وباستخدام نفس الشبكة المدرَّبة على صور المجهر الضوئي المنقول (تباين الطور وDIC)، فزنا بتحدي ISBI لتتبع الخلايا 2015 في هذه الفئات بفارق كبير. علاوة على ذلك، الشبكة سريعة. تستغرق تجزئة صورة 512x512 أقل من ثانية على وحدة معالجة رسومية حديثة. تتوفر التنفيذ الكامل (المبني على Caffe) والشبكات المدرَّبة على http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.

UNet3DConditionModel

فئة diffusers.UNet3DConditionModel

< >

( sample_size: int | None = Nonein_channels: int = 4out_channels: int = 4down_block_types: tuple = ('CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'DownBlock3D')up_block_types: tuple = ('UpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D')block_out_channels: tuple = (320, 640, 1280, 1280)layers_per_block: int = 2downsample_padding: int = 1mid_block_scale_factor: float = 1act_fn: str = 'silu'norm_num_groups: int | None = 32norm_eps: float = 1e-05cross_attention_dim: int = 1024attention_head_dim: int | tuple[int] = 64num_attention_heads: int | tuple[int] | None = Nonetime_cond_proj_dim: int | None = None )

المعاملات

  • sample_size (int أو tuple[int, int]، اختياري، القيمة الافتراضية None) — الارتفاع والعرض لعينة الإدخال/الإخراج.
  • in_channels (int، اختياري، القيمة الافتراضية 4) — عدد القنوات في العينة المدخلة.
  • out_channels (int، اختياري، القيمة الافتراضية 4) — عدد القنوات في المخرجات.
  • down_block_types (tuple[str]، اختياري، الافتراضي ("CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "DownBlock3D")) — المجموعة المرتبة (tuple) من كتل التصفية (downsample blocks) المستخدمة.
  • up_block_types (tuple[str]، اختياري، القيمة الافتراضية ("UpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D")) — المجموعة المرتبة (tuple) من كتل التوسيع (upsample blocks) التي سيتم استخدامها.
  • block_out_channels (tuple[int]، اختياري، القيمة الافتراضية (320, 640, 1280, 1280)) — مجموعة قنوات الإخراج لكل كتلة.
  • layers_per_block (int، اختياري، القيمة الافتراضية 2) — عدد الطبقات في كل كتلة.
  • downsample_padding (int، اختياري، القيمة الافتراضية 1) — الحشو المستخدم لتحويل الاستيفاء النازل.
  • mid_block_scale_factor (float، اختياري، القيمة الافتراضية 1.0) — معامل المقياس المستخدم للكتلة الوسطى.
  • act_fn (str، اختياري، الافتراضي "silu") — دالة التنشيط المستخدمة.
  • norm_num_groups (int، اختياري، القيمة الافتراضية 32) — عدد المجموعات المستخدمة للتطبيع. إذا كانت None، يتم تجاوز طبقات التطبيع والتفعيل في المعالجة اللاحقة.
  • norm_eps (float، اختياري، القيمة الافتراضية 1e-5) — قيمة الإيبسلون المستخدمة في عملية التطبيع.
  • cross_attention_dim (int، اختياري، القيمة الافتراضية 1024) — بُعد ميزات الانتباه المتقاطع.
  • attention_head_dim (int، اختياري، القيمة الافتراضية 64) — بُعد رؤوس الانتباه.
  • num_attention_heads (int، اختياري) — عدد رؤوس الانتباه.
  • time_cond_proj_dim (int، اختياري، القيمة الافتراضية None) — بعد طبقة cond_proj في تضمين خطوة الزمن.

نموذج UNet ثلاثي الأبعاد مشروط يستقبل عينة ضجيجية، وحالة شرطية، وخطوة زمنية، ويعيد مخرجات على شكل العينة.

يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).

disable_freeu

< >

( )

يعطّل آلية FreeU.

enable_forward_chunking

< >

( chunk_size: int | None = Nonedim: int = 0 )

المعاملات

  • chunk_size (int، اختياري) — حجم الدفعة (chunk size) لطبقات التقدّم الأمامي. إذا لم يُحدَّد، فسيتم تشغيل طبقة التقدّم الأمامي بشكل فردي على كل متجه (tensor) ذي بُعد dim.
  • dim (int، اختياري، القيمة الافتراضية 0) — البُعد الذي يجب تقسيم عملية الحساب الأمامي (feed-forward) عليه. اختر بين dim=0 (الحزمة) أو dim=1 (طول التسلسل).

يحدد معالج الانتباه لاستخدام تقطيع الأمامي.

enable_freeu

< >

( s1s2b1b2 )

المعاملات

  • s1 (float) — معامل التوسيع للمرحلة 1 لتخفيف مساهمات ميزات التخطي. يتم ذلك للتخفيف من “تأثير الإفراط في التنعيم” في عملية إزالة الضوضاء المعززة.
  • s2 (float) — معامل التوسيع للمرحلة 2 لتخفيف مساهمات ميزات التخطي. يتم ذلك للتخفيف من “تأثير الإفراط في التنعيم” في عملية إزالة الضوضاء المعززة.
  • b1 (float) — معامل التوسيع للمرحلة 1 لتضخيم مساهمات ميزات الهيكل الأساسي.
  • b2 (float) — معامل التوسيع للمرحلة 2 لتضخيم مساهمات ميزات الهيكل الأساسي.

يُفعّل آلية FreeU من https://huggingface.co/papers/2309.11497.

تمثل البادئات التي تلي معاملات التوسيع كتل المراحل التي تُطبَّق فيها.

يرجى الرجوع إلى المستودع الرسمي للاطلاع على مجموعات القيم التي يُعرف أنها تعمل بشكل جيد مع خطوط أنابيب مختلفة مثل Stable Diffusion v1 وv2 وStable Diffusion XL.

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]encoder_hidden_states: Tensorclass_labels: typing.Optional[torch.Tensor] = Nonetimestep_cond: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Nonedown_block_additional_residuals: tuple[torch.Tensor] | None = Nonemid_block_additional_residual: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → UNet3DConditionOutput or tuple

المعاملات

  • sample (torch.Tensor) — مصفوفة الإدخال الضوضائية ذات الشكل التالي (batch, num_channels, num_frames, height, width.
  • timestep (torch.Tensor أو float أو int) — عدد خطوات الزمن لإزالة الضوضاء من مدخل.
  • encoder_hidden_states (torch.Tensor) — حالات المُشفِّر المخفية (encoder hidden states) ذات الشكل (batch, sequence_length, feature_dim).
  • class_labels (torch.Tensor، اختياري، القيمة الافتراضية None) — تسميات فئات اختيارية للشروط. سيتم جمع تمثيلاتها مع تمثيلات خطوة الزمن.
  • timestep_cond — (torch.Tensor، اختياري، القيمة الافتراضية None): تضمينات شرطية لخطوة الزمن. إذا تم توفيرها، سيتم جمع التضمينات مع العينات المارة عبر طبقة self.time_embedding للحصول على تضمينات خطوة الزمن.
  • attention_mask (torch.Tensor، اختياري، القيمة الافتراضية None) — يُطبَّق قناع انتباه (attention mask) بأبعاد (batch, key_tokens) على encoder_hidden_states. إذا كانت القيمة 1 يُحفظ القناع، وإلا إذا كانت 0 يُستبعد. يُحوَّل القناع إلى انحياز (bias) يضيف قيمًا سالبة كبيرة إلى درجات الانتباه المقابلة لرموز “الاستبعاد”.
  • cross_attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttentionProcessor كما هو معرَّف تحت self.processor في diffusers.models.attention_processor إذا تمَّ تحديده.
  • down_block_additional_residuals — (tuple من torch.Tensor، اختياري): مجموعة من المصفوفات (tensors) التي إذا تم تحديدها، تُضاف إلى بقايا (residuals) كتل unet السفلية.
  • mid_block_additional_residual — (torch.Tensor, اختياري): متجه يُضاف إلى الباقي (residual) في كتلة unet الوسطى إذا تم تحديده.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع UNet3DConditionOutput بدلاً من tuple عادي.
  • cross_attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttnProcessor إذا تم تحديده.

يعيد

UNet3DConditionOutput أو tuple

إذا كان return_dict هو True، يُعاد UNet3DConditionOutput، وإلا يُعاد tuple يكون عنصره الأول هو تينسور العينة.

طريقة UNet3DConditionModel الأمامية.

fuse_qkv_projections

< >

( )

…

> هذه الواجهة البرمجية 🧪 تجريبية.

set_attention_slice

< >

( slice_size: str | int | list[int] )

المعاملات

  • slice_size (str أو int أو list(int)، اختياري، القيمة الافتراضية "auto") — عندما تكون القيمة "auto"، يتم تقسيم مدخلات رؤوس الانتباه إلى نصفين، بحيث يُحسب الانتباه في خطوتين. أما إذا كانت "max"، فيتم توفير أقصى قدر من الذاكرة من خلال تشغيل شريحة واحدة في كل مرة. وإذا تم تقديم رقم، يتم استخدام عدد من الشرائح يساوي attention_head_dim // slice_size. في هذه الحالة، يجب أن يكون attention_head_dim مضاعفًا لـ slice_size.

تفعيل حساب الانتباه المقطّع.

عند تمكين هذا الخيار، يقسم وحدة الانتباه (attention module) المصفوفة المدخلة إلى شرائح لحساب الانتباه على عدة خطوات. وهذا مفيد لتوفير بعض الذاكرة مقابل انخفاض طفيف في السرعة.

set_default_attn_processor

< >

( )

يعطّل معالجات الانتباه المخصصة ويضبط تطبيق الانتباه الافتراضي.

unfuse_qkv_projections

< >

( )

يعطّل إسقاط QKV المدمج إذا كان مفعّلًا.

> هذه الواجهة البرمجية 🧪 تجريبية.

UNet3DConditionOutput

فئة diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput

< >

( sample: Tensor )

المعاملات

  • sample (torch.Tensor من الشكل (batch_size, num_channels, num_frames, height, width)) — إخراج حالات الخفية المشروطة على مدخل encoder_hidden_states. إخراج الطبقة الأخيرة من النموذج.

مخرجات UNet3DConditionModel.

Update on GitHub