مكتبة بايثون مع الشبكات العصبية للصورة
التقسيم على أساس PyTorch.
الملامح الرئيسية لهذه المكتبة هي:
تفضل بزيارة صفحة قراءة مشروع المستندات أو اقرأ الملف التمهيدي التالي لمعرفة المزيد حول مكتبة Pytorch لنماذج التجزئة (SMP للاختصار)
نموذج التجزئة هو مجرد PyTorch torch.nn.Module
، والذي يمكن إنشاؤه بسهولة مثل:
import segmentation_models_pytorch as smp
model = smp . Unet (
encoder_name = "resnet34" , # choose encoder, e.g. mobilenet_v2 or efficientnet-b7
encoder_weights = "imagenet" , # use `imagenet` pre-trained weights for encoder initialization
in_channels = 1 , # model input channels (1 for gray-scale images, 3 for RGB, etc.)
classes = 3 , # model output channels (number of classes in your dataset)
)
جميع أجهزة التشفير لديها أوزان مدربة مسبقًا. قد يمنحك إعداد بياناتك بنفس الطريقة المستخدمة أثناء التدريب المسبق للأوزان نتائج أفضل (درجة مترية أعلى وتقارب أسرع). ليس من الضروري في حالة قيامك بتدريب النموذج بأكمله، وليس فقط وحدة فك التشفير.
from segmentation_models_pytorch . encoders import get_preprocessing_fn
preprocess_input = get_preprocessing_fn ( 'resnet18' , pretrained = 'imagenet' )
تهانينا! لقد انتهيت! الآن يمكنك تدريب النموذج الخاص بك باستخدام إطار العمل المفضل لديك!
فيما يلي قائمة بأجهزة التشفير المدعومة في SMP. حدد عائلة التشفير المناسبة وانقر لتوسيع الجدول وحدد برنامج تشفير محددًا وأوزانه المدربة مسبقًا (معلمات encoder_name
و encoder_weights
).
التشفير | الأوزان | بارامس، م |
---|---|---|
ريسنيت18 | إيماجينت / ssl / swsl | 11 م |
ريسنيت34 | imagenet | 21 م |
resnet50 | إيماجينت / ssl / swsl | 23 م |
resnet101 | imagenet | 42 م |
ريسنيت152 | imagenet | 58 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
resnext50_32x4d | إيماجينت / ssl / swsl | 22 م |
resnext101_32x4d | سل / سوسل | 42 م |
resnext101_32x8d | إيماجينت / إنستغرام / ssl / swsl | 86 م |
resnext101_32x16d | انستقرام / ssl / swsl | 191 م |
resnext101_32x32d | انستغرام | 466 م |
resnext101_32x48d | انستغرام | 826 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
تيم-resnest14d | imagenet | 8 م |
تيم-resnest26d | imagenet | 15 م |
تيم-resnest50d | imagenet | 25 م |
timm-resnest101e | imagenet | 46 م |
timm-resnest200e | imagenet | 68 م |
timm-resnest269e | imagenet | 108 م |
timm-resnest50d_4s2x40d | imagenet | 28 م |
timm-resnest50d_1s4x24d | imagenet | 23 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
timm-res2net50_26w_4s | imagenet | 23 م |
timm-res2net101_26w_4s | imagenet | 43 م |
timm-res2net50_26w_6s | imagenet | 35 م |
timm-res2net50_26w_8s | imagenet | 46 م |
timm-res2net50_48w_2s | imagenet | 23 م |
timm-res2net50_14w_8s | imagenet | 23 م |
تيم-res2next50 | imagenet | 22 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
timm-regnetx_002 | imagenet | 2 م |
timm-regnetx_004 | imagenet | 4 م |
timm-regnetx_006 | imagenet | 5 م |
timm-regnetx_008 | imagenet | 6 م |
timm-regnetx_016 | imagenet | 8 م |
timm-regnetx_032 | imagenet | 14 م |
timm-regnetx_040 | imagenet | 20 م |
timm-regnetx_064 | imagenet | 24 م |
timm-regnetx_080 | imagenet | 37 م |
timm-regnetx_120 | imagenet | 43 م |
timm-regnetx_160 | imagenet | 52 م |
timm-regnetx_320 | imagenet | 105 م |
timm-regnety_002 | imagenet | 2 م |
timm-regnety_004 | imagenet | 3M |
timm-regnety_006 | imagenet | 5 م |
timm-regnety_008 | imagenet | 5 م |
timm-regnety_016 | imagenet | 10 م |
timm-regnety_032 | imagenet | 17 م |
timm-regnety_040 | imagenet | 19 م |
timm-regnety_064 | imagenet | 29 م |
timm-regnety_080 | imagenet | 37 م |
timm-regnety_120 | imagenet | 49 م |
timm-regnety_160 | imagenet | 80 م |
timm-regnety_320 | imagenet | 141 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
timm-gernet_s | imagenet | 6 م |
timm-gernet_m | imagenet | 18 م |
timm-gernet_l | imagenet | 28 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
senet154 | imagenet | 113 م |
se_resnet50 | imagenet | 26 م |
se_resnet101 | imagenet | 47 م |
se_resnet152 | imagenet | 64 م |
se_resnext50_32x4d | imagenet | 25 م |
se_resnext101_32x4d | imagenet | 46 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
تيم-skresnet18 | imagenet | 11 م |
تيم-skresnet34 | imagenet | 21 م |
تيم-skresnext50_32x4d | imagenet | 25 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
كثيفة121 | imagenet | 6 م |
كثيفة169 | imagenet | 12 م |
كثيفة201 | imagenet | 18 م |
كثيفة161 | imagenet | 26 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
inceptionresnetv2 | إيماجينت / إيماجينيت + الخلفية | 54 م |
inceptionv4 | إيماجينت / إيماجينيت + الخلفية | 41 م |
xception | imagenet | 22 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
efficiencynet-b0 | imagenet | 4 م |
كفاءة نت-b1 | imagenet | 6 م |
كفاءة نت-b2 | imagenet | 7 م |
كفاءة نت-b3 | imagenet | 10 م |
كفاءة نت-b4 | imagenet | 17 م |
كفاءة نت-b5 | imagenet | 28 م |
كفاءة نت-b6 | imagenet | 40 م |
كفاءة نت-b7 | imagenet | 63 م |
تيم-كفاءة-b0 | imagenet / advprop / noisy-student | 4 م |
تيم-كفاءة-b1 | imagenet / advprop / noisy-student | 6 م |
تيم-كفاءة-b2 | imagenet / advprop / noisy-student | 7 م |
تيم-كفاءة-b3 | imagenet / advprop / noisy-student | 10 م |
تيم-كفاءة-b4 | imagenet / advprop / noisy-student | 17 م |
تيم-كفاءة-b5 | imagenet / advprop / noisy-student | 28 م |
تيم-كفاءة-b6 | imagenet / advprop / noisy-student | 40 م |
تيم-كفاءة-b7 | imagenet / advprop / noisy-student | 63 م |
تيم-كفاءة-b8 | إيماج نت / advprop | 84 م |
تيم-كفاءة-l2 | طالب صاخبة | 474 م |
timm-efficiencynet-lite0 | imagenet | 4 م |
timm-efficiencynet-lite1 | imagenet | 5 م |
timm-efficiencynet-lite2 | imagenet | 6 م |
timm-efficiencynet-lite3 | imagenet | 8 م |
timm-efficiencynet-lite4 | imagenet | 13 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
mobilenet_v2 | imagenet | 2 م |
timm-mobilenetv3_large_075 | imagenet | 1.78 م |
timm-mobilenetv3_large_100 | imagenet | 2.97 م |
timm-mobilenetv3_large_minimal_100 | imagenet | 1.41 م |
timm-mobilenetv3_small_075 | imagenet | 0.57 م |
timm-mobilenetv3_small_100 | imagenet | 0.93 م |
timm-mobilenetv3_small_minimal_100 | imagenet | 0.43 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
dpn68 | imagenet | 11 م |
dpn68b | إيماج نت+5ك | 11 م |
dpn92 | إيماج نت+5ك | 34 م |
dpn98 | imagenet | 58 م |
dpn107 | إيماج نت+5ك | 84 م |
dpn131 | imagenet | 76 م |
التشفير | الأوزان | بارامس، م |
---|---|---|
vgg11 | imagenet | 9 م |
vgg11_bn | imagenet | 9 م |
vgg13 | imagenet | 9 م |
vgg13_bn | imagenet | 9 م |
vgg16 | imagenet | 14 م |
vgg16_bn | imagenet | 14 م |
vgg19 | imagenet | 20 م |
vgg19_bn | imagenet | 20 م |
العمود الفقري من SegFormer تم تدريبه مسبقًا على Imagenet! يمكن استخدامه مع أجهزة فك التشفير الأخرى من العبوة، يمكنك الجمع بين Mix Vision Transformer وUnet وFPN وغيرها!
القيود:
التشفير | الأوزان | بارامس، م |
---|---|---|
mit_b0 | imagenet | 3M |
mit_b1 | imagenet | 13 م |
mit_b2 | imagenet | 24 م |
mit_b3 | imagenet | 44 م |
mit_b4 | imagenet | 60 م |
mit_b5 | imagenet | 81 م |
تم تدريب العمود الفقري "sub-one-ms" الخاص بشركة Apple مسبقًا على Imagenet! يمكن استخدامها مع جميع أجهزة فك التشفير.
ملحوظة: في github repo الرسمي، يحتوي متغير s0 على num_conv_branches إضافية، مما يؤدي إلى عدد أكبر من المعلمات مقارنة بـ s1.
التشفير | الأوزان | بارامس، م |
---|---|---|
mobileone_s0 | imagenet | 4.6 م |
mobileone_s1 | imagenet | 4.0 م |
mobileone_s2 | imagenet | 6.5 م |
mobileone_s3 | imagenet | 8.8 م |
mobileone_s4 | imagenet | 13.6 م |
* ssl
، swsl
- التعلم شبه الخاضع للإشراف وضعيف الإشراف على ImageNet (الريبو).
مستندات
تحتوي Pytorch Image Models (المعروفة أيضًا باسم timm) على الكثير من النماذج والواجهة المُدربة مسبقًا والتي تسمح باستخدام هذه النماذج كأجهزة تشفير في smp، ومع ذلك، لا يتم دعم جميع النماذج
features_only
مطبقة مطلوبة لجهاز التشفيرإجمالي عدد أجهزة التشفير المدعومة: 549
model.encoder
- العمود الفقري المدرب مسبقًا لاستخراج ميزات الدقة المكانية المختلفةmodel.decoder
- يعتمد على بنية النماذج ( Unet
/ Linknet
/ PSPNet
/ FPN
)model.segmentation_head
- الكتلة الأخيرة لإنتاج العدد المطلوب من قنوات القناع (بما في ذلك التنشيط والاختزال الاختياري)model.classification_head
- كتلة اختيارية تنشئ رأس التصنيف أعلى جهاز التشفيرmodel.forward(x)
- تمرير x
بشكل تسلسلي عبر جهاز التشفير ووحدة فك التشفير ورأس التجزئة (ورأس التصنيف إذا كان محددًا) تسمح لك معلمة قنوات الإدخال بإنشاء نماذج تعالج الموترات بعدد عشوائي من القنوات. إذا كنت تستخدم أوزانًا مُدربة مسبقًا من imagenet - فسيتم إعادة استخدام أوزان الالتواء الأولى. بالنسبة لحالة قناة واحدة، سيكون مجموع أوزان طبقة الالتواء الأولى، وإلا فسيتم ملء القنوات بأوزان مثل new_weight[:, i] = pretrained_weight[:, i % 3]
ومن المقياس بـ new_weight * 3 / new_in_channels
.
model = smp . FPN ( 'resnet34' , in_channels = 1 )
mask = model ( torch . ones ([ 1 , 1 , 64 , 64 ]))
تدعم جميع النماذج معلمات aux_params
، والتي تم تعيينها افتراضيًا على None
. إذا كان aux_params = None
، فلن يتم إنشاء مخرجات مساعدة للتصنيف، وإلا فلن ينتج النموذج mask
فحسب، بل سينتج أيضًا label
الإخراج بالشكل NC
. يتكون رأس التصنيف من GlobalPooling->Dropout(اختياري)->Linear->Activation(اختياري)، والتي يمكن تكوينها بواسطة aux_params
على النحو التالي:
aux_params = dict (
pooling = 'avg' , # one of 'avg', 'max'
dropout = 0.5 , # dropout ratio, default is None
activation = 'sigmoid' , # activation function, default is None
classes = 4 , # define number of output labels
)
model = smp . Unet ( 'resnet34' , classes = 4 , aux_params = aux_params )
mask , label = model ( x )
تحدد معلمة العمق عددًا من عمليات الاختزال في برنامج التشفير، بحيث يمكنك جعل طرازك أخف وزنًا إذا حددت depth
أصغر.
model = smp . Unet ( 'resnet34' , encoder_depth = 4 )
نسخة باي بي:
$ pip install segmentation-models-pytorch
الإصدار الأخير من المصدر:
$ pip install git+https://github.com/qubvel/segmentation_models.pytorch
تُستخدم حزمة Segmentation Models
على نطاق واسع في مسابقات تجزئة الصور. هنا يمكنك العثور على المسابقات وأسماء الفائزين وروابط لحلولهم.
make install_dev # create .venv, install SMP in dev mode
make fixup # Ruff for formatting and lint checks
make table # generate a table with encoders and print to stdout
@misc{Iakubovskii:2019,
Author = {Pavel Iakubovskii},
Title = {Segmentation Models Pytorch},
Year = {2019},
Publisher = {GitHub},
Journal = {GitHub repository},
Howpublished = {url{https://github.com/qubvel/segmentation_models.pytorch}}
}
يتم توزيع المشروع بموجب ترخيص MIT