Pustaka Python dengan Neural Networks untuk Gambar
Segmentasi berdasarkan PyTorch.
Fitur utama perpustakaan ini adalah:
Kunjungi Baca Halaman Proyek Dokumen atau baca README berikut untuk mengetahui lebih lanjut tentang pustaka Model Segmentasi Pytorch (disingkat SMP)
Model segmentasi hanyalah PyTorch torch.nn.Module
, yang dapat dibuat semudah:
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)
)
Semua pembuat enkode memiliki bobot yang telah dilatih sebelumnya. Mempersiapkan data dengan cara yang sama seperti saat pra-pelatihan beban dapat memberikan hasil yang lebih baik (skor metrik lebih tinggi dan konvergensi lebih cepat). Tidak perlu jika Anda melatih seluruh model, tidak hanya dekodernya.
from segmentation_models_pytorch . encoders import get_preprocessing_fn
preprocess_input = get_preprocessing_fn ( 'resnet18' , pretrained = 'imagenet' )
Selamat! Anda sudah selesai! Sekarang Anda dapat melatih model Anda dengan kerangka favorit Anda!
Berikut ini adalah daftar encoder yang didukung di SMP. Pilih kelompok encoder yang sesuai dan klik untuk memperluas tabel dan memilih encoder tertentu serta bobot yang telah dilatih sebelumnya ( parameter encoder_name
dan encoder_weights
).
Pembuat enkode | beban | Param, M |
---|---|---|
resnet18 | imagenet / ssl / swsl | 11M |
resnet34 | jaringan gambar | 21M |
resnet50 | imagenet / ssl / swsl | 23M |
resnet101 | jaringan gambar | 42M |
resnet152 | jaringan gambar | 58M |
Pembuat enkode | beban | Param, M |
---|---|---|
resnext50_32x4d | imagenet / ssl / swsl | 22M |
resnext101_32x4d | sl / swsl | 42M |
resnext101_32x8d | imagenet / instagram / ssl / swsl | 86M |
resnext101_32x16d | instagram / ssl / swsl | 191M |
resnext101_32x32d | 466M | |
resnext101_32x48d | 826M |
Pembuat enkode | beban | Param, M |
---|---|---|
timm-resnest14d | jaringan gambar | 8M |
timm-resnest26d | jaringan gambar | 15M |
timm-resnest50d | jaringan gambar | 25M |
timm-resnest101e | jaringan gambar | 46M |
timm-resnest200e | jaringan gambar | 68M |
timm-resnest269e | jaringan gambar | 108M |
timm-resnest50d_4s2x40d | jaringan gambar | 28M |
timm-resnest50d_1s4x24d | jaringan gambar | 23M |
Pembuat enkode | beban | Param, M |
---|---|---|
timm-res2net50_26w_4s | jaringan gambar | 23M |
timm-res2net101_26w_4s | jaringan gambar | 43M |
timm-res2net50_26w_6s | jaringan gambar | 35M |
timm-res2net50_26w_8s | jaringan gambar | 46M |
timm-res2net50_48w_2s | jaringan gambar | 23M |
timm-res2net50_14w_8s | jaringan gambar | 23M |
timm-res2next50 | jaringan gambar | 22M |
Pembuat enkode | beban | Param, M |
---|---|---|
timm-regnetx_002 | jaringan gambar | 2M |
timm-regnetx_004 | jaringan gambar | 4M |
timm-regnetx_006 | jaringan gambar | 5M |
timm-regnetx_008 | jaringan gambar | 6M |
timm-regnetx_016 | jaringan gambar | 8M |
timm-regnetx_032 | jaringan gambar | 14M |
timm-regnetx_040 | jaringan gambar | 20M |
timm-regnetx_064 | jaringan gambar | 24M |
timm-regnetx_080 | jaringan gambar | 37M |
timm-regnetx_120 | jaringan gambar | 43M |
timm-regnetx_160 | jaringan gambar | 52M |
timm-regnetx_320 | jaringan gambar | 105M |
timm-regnety_002 | jaringan gambar | 2M |
timm-regnety_004 | jaringan gambar | 3M |
timm-regnety_006 | jaringan gambar | 5M |
timm-regnety_008 | jaringan gambar | 5M |
timm-regnety_016 | jaringan gambar | 10M |
timm-regnety_032 | jaringan gambar | 17M |
timm-regnety_040 | jaringan gambar | 19M |
timm-regnety_064 | jaringan gambar | 29M |
timm-regnety_080 | jaringan gambar | 37M |
timm-regnety_120 | jaringan gambar | 49M |
timm-regnety_160 | jaringan gambar | 80M |
timm-regnety_320 | jaringan gambar | 141M |
Pembuat enkode | beban | Param, M |
---|---|---|
timm-gernet_s | jaringan gambar | 6M |
timm-gernet_m | jaringan gambar | 18M |
timm-gernet_l | jaringan gambar | 28M |
Pembuat enkode | beban | Param, M |
---|---|---|
senet154 | jaringan gambar | 113M |
se_resnet50 | jaringan gambar | 26M |
se_resnet101 | jaringan gambar | 47M |
se_resnet152 | jaringan gambar | 64M |
se_resnext50_32x4d | jaringan gambar | 25M |
se_resnext101_32x4d | jaringan gambar | 46M |
Pembuat enkode | beban | Param, M |
---|---|---|
timm-skresnet18 | jaringan gambar | 11M |
timm-skresnet34 | jaringan gambar | 21M |
timm-skresnext50_32x4d | jaringan gambar | 25M |
Pembuat enkode | beban | Param, M |
---|---|---|
padatnet121 | jaringan gambar | 6M |
padatnet169 | jaringan gambar | 12M |
padatnet201 | jaringan gambar | 18M |
padatnet161 | jaringan gambar | 26M |
Pembuat enkode | beban | Param, M |
---|---|---|
awalresnetv2 | imagenet / imagenet+latar belakang | 54M |
permulaanv4 | imagenet / imagenet+latar belakang | 41M |
pengecualian | jaringan gambar | 22M |
Pembuat enkode | beban | Param, M |
---|---|---|
efisiennet-b0 | jaringan gambar | 4M |
efisiennet-b1 | jaringan gambar | 6M |
efisiennet-b2 | jaringan gambar | 7M |
efisiennet-b3 | jaringan gambar | 10M |
efisiennet-b4 | jaringan gambar | 17M |
efisiennet-b5 | jaringan gambar | 28M |
efisiennet-b6 | jaringan gambar | 40M |
efisiennet-b7 | jaringan gambar | 63M |
timm-efisiennet-b0 | imagenet / advprop / noise-student | 4M |
timm-efisiennet-b1 | imagenet / advprop / noise-student | 6M |
timm-efisiennet-b2 | imagenet / advprop / noise-student | 7M |
timm-efisiennet-b3 | imagenet / advprop / noise-student | 10M |
timm-efisiennet-b4 | imagenet / advprop / noise-student | 17M |
timm-efisiennet-b5 | imagenet / advprop / noise-student | 28M |
timm-efisiennet-b6 | imagenet / advprop / noise-student | 40M |
timm-efisiennet-b7 | imagenet / advprop / noise-student | 63M |
timm-efisiennet-b8 | imagenet / advprop | 84M |
timm-efisiennet-l2 | siswa yang berisik | 474M |
timm-efisiennet-lite0 | jaringan gambar | 4M |
timm-efisiennet-lite1 | jaringan gambar | 5M |
timm-efisiennet-lite2 | jaringan gambar | 6M |
timm-efisiennet-lite3 | jaringan gambar | 8M |
timm-efisiennet-lite4 | jaringan gambar | 13M |
Pembuat enkode | beban | Param, M |
---|---|---|
mobilenet_v2 | jaringan gambar | 2M |
timm-mobilenetv3_large_075 | jaringan gambar | 1,78 juta |
timm-mobilenetv3_large_100 | jaringan gambar | 2,97 juta |
timm-mobilenetv3_large_minimal_100 | jaringan gambar | 1,41 juta |
timm-mobilenetv3_small_075 | jaringan gambar | 0,57 juta |
timm-mobilenetv3_small_100 | jaringan gambar | 0,93 juta |
timm-mobilenetv3_small_minimal_100 | jaringan gambar | 0,43 juta |
Pembuat enkode | beban | Param, M |
---|---|---|
dpn68 | jaringan gambar | 11M |
dpn68b | jaringan gambar+5k | 11M |
dpn92 | jaringan gambar+5k | 34M |
dpn98 | jaringan gambar | 58M |
dpn107 | jaringan gambar+5k | 84M |
dpn131 | jaringan gambar | 76M |
Pembuat enkode | beban | Param, M |
---|---|---|
vgg11 | jaringan gambar | 9M |
vgg11_bn | jaringan gambar | 9M |
vgg13 | jaringan gambar | 9M |
vgg13_bn | jaringan gambar | 9M |
vgg16 | jaringan gambar | 14M |
vgg16_bn | jaringan gambar | 14M |
vgg19 | jaringan gambar | 20M |
vgg19_bn | jaringan gambar | 20M |
Tulang punggung dari SegFormer dilatih sebelumnya di Imagenet! Dapat digunakan dengan decoder lain dari paket, Anda dapat menggabungkan Mix Vision Transformer dengan Unet, FPN, dan lainnya!
Keterbatasan:
Pembuat enkode | beban | Param, M |
---|---|---|
mit_b0 | jaringan gambar | 3M |
mit_b1 | jaringan gambar | 13M |
mit_b2 | jaringan gambar | 24M |
mit_b3 | jaringan gambar | 44M |
mit_b4 | jaringan gambar | 60M |
mit_b5 | jaringan gambar | 81M |
Tulang Punggung "sub-one-ms" Apple telah dilatih sebelumnya di Imagenet! Dapat digunakan dengan semua decoder.
Catatan: Dalam repo resmi github, varian s0 memiliki num_conv_branches tambahan, sehingga menghasilkan lebih banyak parameter daripada s1.
Pembuat enkode | beban | Param, M |
---|---|---|
mobileone_s0 | jaringan gambar | 4,6 juta |
mobileone_s1 | jaringan gambar | 4,0 juta |
mobileone_s2 | jaringan gambar | 6,5 juta |
mobileone_s3 | jaringan gambar | 8,8 juta |
mobileone_s4 | jaringan gambar | 13,6 juta |
* ssl
, swsl
- pembelajaran semi-supervisi dan supervisi lemah di ImageNet (repo).
dokumen
Model Gambar Pytorch (alias timm) memiliki banyak model dan antarmuka terlatih yang memungkinkan penggunaan model ini sebagai pembuat enkode di SMP, namun, tidak semua model didukung
features_only
yang diperlukan untuk pembuat enkodeJumlah total pembuat enkode yang didukung: 549
model.encoder
- tulang punggung terlatih untuk mengekstrak fitur resolusi spasial yang berbedamodel.decoder
- tergantung pada arsitektur model ( Unet
/ Linknet
/ PSPNet
/ FPN
)model.segmentation_head
- blok terakhir untuk menghasilkan jumlah saluran mask yang diperlukan (termasuk juga upsampling dan aktivasi opsional)model.classification_head
- blok opsional yang membuat kepala klasifikasi di atas encodermodel.forward(x)
- meneruskan x
secara berurutan melalui encoder, decoder, dan kepala segmentasi model (dan kepala klasifikasi jika ditentukan) Parameter saluran masukan memungkinkan Anda membuat model, yang memproses tensor dengan jumlah saluran yang berubah-ubah. Jika Anda menggunakan bobot terlatih dari imagenet - bobot konvolusi pertama akan digunakan kembali. Untuk kasus 1 saluran, ini akan menjadi jumlah bobot lapisan konvolusi pertama, jika tidak, saluran akan diisi dengan bobot seperti new_weight[:, i] = pretrained_weight[:, i % 3]
dan kemudian diskalakan dengan new_weight * 3 / new_in_channels
.
model = smp . FPN ( 'resnet34' , in_channels = 1 )
mask = model ( torch . ones ([ 1 , 1 , 64 , 64 ]))
Semua model mendukung parameter aux_params
, yang secara default disetel ke None
. Jika aux_params = None
maka keluaran bantu klasifikasi tidak dibuat, jika tidak, model tidak hanya menghasilkan mask
, tetapi juga keluaran label
dengan bentuk NC
. Kepala klasifikasi terdiri dari lapisan GlobalPooling->Dropout(opsional)->Linear->Activation(opsional), yang dapat dikonfigurasi oleh aux_params
sebagai berikut:
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 )
Parameter kedalaman menentukan sejumlah operasi downsampling di encoder, sehingga Anda dapat membuat model Anda lebih ringan jika menentukan depth
yang lebih kecil.
model = smp . Unet ( 'resnet34' , encoder_depth = 4 )
Versi PyPI:
$ pip install segmentation-models-pytorch
Versi terbaru dari sumber:
$ pip install git+https://github.com/qubvel/segmentation_models.pytorch
Paket Segmentation Models
banyak digunakan dalam kompetisi segmentasi citra. Di sini Anda dapat menemukan kompetisi, nama pemenang, dan tautan ke solusi mereka.
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}}
}
Proyek ini didistribusikan di bawah Lisensi MIT