Diffusers documentation
UNet1DModel
UNet1DModel
تم تقديم نموذج UNet في الأصل بواسطة Ronneberger et al. لتجزئة الصور الطبية الحيوية، لكنه يُستخدم أيضاً بشكل شائع في 🤗 Diffusers لأنه يُخرج صوراً بنفس حجم المدخلات. وهو أحد أهم مكونات نظام الانتشار لأنه ييسّر عملية الانتشار الفعلية. توجد عدة متغيرات لنموذج UNet في 🤗 Diffusers، اعتماداً على عدد أبعاده وعلى ما إذا كان نموذجاً شرطياً أم لا. هذا نموذج UNet أحادي البعد.
ملخص الورقة البحثية هو:
يوجد إجماع واسع على أن التدريب الناجح للشبكات العميقة يتطلب آلاف الأمثلة التدريبية المُعلَّمة. في هذه الورقة، نعرض شبكة واستراتيجية تدريب تعتمدان على الاستخدام القوي لزيادة البيانات لاستخدام الأمثلة المُعلَّمة المتاحة بكفاءة أكبر. تتكون البنية من مسار انكماشي لالتقاط السياق ومسار متوسع متماثل يمكّن من تحديد دقيق للمواقع. نُظهر أن مثل هذه الشبكة يمكن تدريبها من البداية إلى النهاية من عدد قليل جداً من الصور، وتتفوق على أفضل طريقة سابقة (شبكة تلافيفية بنافذة منزلقة) في تحدي ISBI لتجزئة الهياكل العصبية في المكدسات المجهرية الإلكترونية. وباستخدام نفس الشبكة المدرَّبة على صور المجهر الضوئي المنقول (تباين الطور وDIC)، فزنا بتحدي ISBI لتتبع الخلايا 2015 في هذه الفئات بفارق كبير. علاوة على ذلك، الشبكة سريعة. تستغرق تجزئة صورة 512x512 أقل من ثانية على وحدة معالجة رسومية حديثة. تتوفر التنفيذ الكامل (المبني على Caffe) والشبكات المدرَّبة على http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.
UNet1DModel
فئة diffusers.UNet1DModel
< source >( sample_size: int = 65536sample_rate: int | None = Nonein_channels: int = 2out_channels: int = 2extra_in_channels: int = 0time_embedding_type: str = 'fourier'time_embedding_dim: int | None = Noneflip_sin_to_cos: bool = Trueuse_timestep_embedding: bool = Falsefreq_shift: float = 0.0down_block_types: tuple = ('DownBlock1DNoSkip', 'DownBlock1D', 'AttnDownBlock1D')up_block_types: tuple = ('AttnUpBlock1D', 'UpBlock1D', 'UpBlock1DNoSkip')mid_block_type: str = 'UNetMidBlock1D'out_block_type: str = Noneblock_out_channels: tuple = (32, 32, 64)act_fn: str = Nonenorm_num_groups: int = 8layers_per_block: int = 1downsample_each_block: bool = False )
المعاملات
- sample_size (
int، اختياري) — الطول الافتراضي للعينة. يجب أن يكون قابلاً للتكيف أثناء التشغيل. - in_channels (
int، اختياري، القيمة الافتراضية 2) — عدد القنوات في العينة المدخلة. - out_channels (
int، اختياري، القيمة الافتراضية 2) — عدد القنوات في المخرجات. - extra_in_channels (
int، اختياري، القيمة الافتراضية 0) — عدد القنوات الإضافية التي تُضاف إلى مدخل أول كتلة خفض (down block). مفيد في الحالات التي يكون فيها عدد قنوات بيانات الإدخال أكبر مما صُمم النموذج في الأصل لمعالجته. - time_embedding_type (
str، اختياري، الافتراضي"fourier") — نوع تضمين الوقت المستخدم. - freq_shift (
float، اختياري، القيمة الافتراضية 0.0) — إزاحة التردد للتضمين الزمني لـ Fourier. - flip_sin_to_cos (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب عكس sin إلى cos لتضمين الوقت باستخدام تحويل فورييه. - down_block_types (
tuple[str]، اختياري، الافتراضي("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")) — مجموعة من أنواع كتل التقليل (downsample). - up_block_types (
tuple[str]، اختياري، الافتراضي("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")) — مجموعة من أنواع كتل رفع العينة (upsample). - block_out_channels (
tuple[int]، اختياري، الافتراضي(32, 32, 64)) — مجموعة من قنوات مخرجات الكتل. - mid_block_type (
str، اختياري، الافتراضي"UNetMidBlock1D") — نوع الكتلة في منتصف UNet. - out_block_type (
str، اختياري، الافتراضيNone) — كتلة معالجة الإخراج الاختيارية لـ UNet. - act_fn (
str، اختياري، الافتراضيNone) — دالة تفعيل اختيارية في كتل UNet. - norm_num_groups (
int، اختياري، القيمة الافتراضية 8) — عدد المجموعات للتطبيع. - layers_per_block (
int، اختياري، القيمة الافتراضية 1) — عدد الطبقات في كل كتلة. - downsample_each_block (
int، اختياري، القيمة الافتراضيةFalse) — ميزة تجريبية لاستخدام UNet دون إعادة التوسيع.
نموذج UNet أحادي البعد يستقبل عينة ضجيج وخطوة زمنية ويعيد إخراجًا على شكل العينة.
يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).
forward
< source >( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]return_dict: bool = True ) → UNet1DOutput or tuple
المعاملات
- sample (
torch.Tensor) — مصفوفة الإدخال الضوضائية ذات الشكل التالي(batch_size, num_channels, sample_size). - timestep (
torch.Tensorأوfloatأوint) — عدد خطوات الزمن لإزالة الضوضاء من مدخل. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع UNet1DOutput بدلاً من tuple عادي.
يعيد
UNet1DOutput أو tuple
إذا كان return_dict صحيحًا، يُعاد UNet1DOutput، وإلا يُعاد tuple يكون عنصره الأول هو متجه العينة.
طريقة UNet1DModel الأمامية.
UNet1DOutput
فئة diffusers.models.unets.unet_1d.UNet1DOutput
< source >( sample: Tensor )
مخرجات UNet1DModel.