Transformers documentation
ResNet
Model ini dipublikasikan di HF papers pada 2015-12-10 dan disumbangkan ke Hugging Face Transformers pada 2022-03-14.
ResNet
Ikhtisar
Model ResNet diusulkan dalam Deep Residual Learning for Image Recognition oleh Kaiming He, Xiangyu Zhang, Shaoqing Ren, dan Jian Sun. Implementasi kami mengikuti perubahan kecil yang dilakukan oleh Nvidia, yaitu menerapkan stride=2 untuk downsampling pada conv 3x3 di bottleneck, bukan pada 1x1 pertama. Hal ini secara umum dikenal sebagai “ResNet v1.5”.
ResNet memperkenalkan koneksi residual, yang memungkinkan pelatihan jaringan dengan jumlah lapisan yang belum pernah terlihat sebelumnya (hingga 1000). ResNet memenangkan kompetisi ILSVRC & COCO 2015, sebuah tonggak penting dalam visi komputer mendalam.
Abstrak dari makalah tersebut adalah sebagai berikut:
Jaringan saraf yang lebih dalam lebih sulit untuk dilatih. Kami menyajikan kerangka pembelajaran residual untuk memperlancar pelatihan jaringan yang jauh lebih dalam daripada yang digunakan sebelumnya. Kami merumuskan ulang lapisan secara eksplisit sebagai pembelajaran fungsi residual dengan merujuk pada input lapisan, alih-alih mempelajari fungsi yang tidak merujuk. Kami menyediakan bukti empiris yang komprehensif yang menunjukkan bahwa jaringan residual ini lebih mudah dioptimalkan, dan dapat meningkatkan akurasi dari kedalaman yang meningkat secara signifikan. Pada dataset ImageNet, kami mengevaluasi jaringan residual dengan kedalaman hingga 152 lapisan---8 kali lebih dalam daripada jaringan VGG tetapi masih memiliki kompleksitas yang lebih rendah. Ensemble dari jaringan residual ini mencapai error 3,57% pada set pengujian ImageNet. Hasil ini memenangkan tempat ke-1 pada tugas klasifikasi ILSVRC 2015. Kami juga menyajikan analisis pada CIFAR-10 dengan 100 dan 1000 lapisan. Kedalaman representasi sangat penting untuk banyak tugas pengenalan visual. Hanya berkat representasi yang sangat dalam, kami memperoleh peningkatan relatif 28% pada dataset deteksi objek COCO. Jaringan residual dalam adalah fondasi dari submission kami pada kompetisi ILSVRC & COCO 2015, di mana kami juga memenangkan tempat ke-1 pada tugas deteksi ImageNet, lokalisasi ImageNet, deteksi COCO, dan segmentasi COCO.
Gambar di bawah ini mengilustrasikan arsitektur ResNet. Diambil dari paper asli.
Model ini disumbangkan oleh Francesco. Kode aslinya dapat ditemukan di sini.
Sumber daya
Daftar sumber resmi Hugging Face dan komunitas (ditandai dengan 🌎) untuk membantu Anda memulai dengan ResNet.
- ResNetForImageClassification didukung oleh notebook ini.
- Lihat juga: Panduan tugas klasifikasi gambar
Jika Anda tertarik untuk mengirimkan sumber daya agar disertakan di sini, silakan buka Pull Request dan kami akan meninjaunya! Sumber daya tersebut sebaiknya mendemonstrasikan sesuatu yang baru, bukan menduplikasi sumber daya yang sudah ada.
ResNetConfig
kelas transformers.ResNetConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonenum_channels: int = 3embedding_size: int = 64hidden_sizes: list[int] | tuple[int, ...] | None = (256, 512, 1024, 2048)depths: list[int] | tuple[int, ...] | None = (3, 4, 6, 3)layer_type: str = 'bottleneck'hidden_act: str = 'relu'downsample_in_first_stage: bool = Falsedownsample_in_bottleneck: bool = False )
Parameter
- num_channels (
int, opsional, defaultnya3) — Jumlah saluran input. - embedding_size (
int, opsional, defaultnya64) — Dimensi dari embedding dan hidden states. - hidden_sizes (
Union[list[int], tuple[int, ...]], opsional, default(256, 512, 1024, 2048)) — Dimensi (hidden size) pada setiap tahap model. - depths (
Union[list[int], tuple[int, ...]], opsional, default(3, 4, 6, 3)) — Kedalaman setiap layer dalam Transformer. - layer_type (
str, opsional, default"bottleneck") — Lapisan yang akan digunakan, bisa berupa"basic"(dipakai untuk model yang lebih kecil, seperti resnet-18 atau resnet-34) atau"bottleneck"(dipakai untuk model yang lebih besar seperti resnet-50 ke atas). - hidden_act (
str, opsional, defaultnyarelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - downsample_in_first_stage (
bool, opsional, defaultFalse) — JikaTrue, tahap pertama akan melakukan downsample pada input menggunakanstridesebesar 2. - downsample_in_bottleneck (
bool, opsional, defaultFalse) — JikaTrue, conv 1x1 pertama di ResNetBottleNeckLayer akan melakukan downsampling pada input menggunakanstridesebesar 2.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari ResNetModel. Kelas ini digunakan untuk membuat instans model Resnet berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari microsoft/resnet-50
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import ResNetConfig, ResNetModel
>>> # Initializing a ResNet resnet-50 style configuration
>>> configuration = ResNetConfig()
>>> # Initializing a model (with random weights) from the resnet-50 style configuration
>>> model = ResNetModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configPeriksa bahwa layer_types didefinisikan dengan benar.
ResNetModel
kelas transformers.ResNetModel
< source >( config: ResNetConfig )
Parameter
- config (ResNetConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Resnet polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPoolingAndNoAttention or tuple(torch.FloatTensor)
Parameter
- pixel_values (
torch.Tensordengan bentuk(batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan ConvNextImageProcessor. Lihat ConvNextImageProcessor.call() untuk detailnya (processor_classmenggunakan ConvNextImageProcessor untuk memproses gambar). - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
BaseModelOutputWithPoolingAndNoAttention atau tuple(torch.FloatTensor)
BaseModelOutputWithPoolingAndNoAttention atau tuple dari
torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (ResNetConfig) dan input.
Metode forward dari ResNetModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.FloatTensordengan bentuk(batch_size, num_channels, height, width)) — Urutan hidden-state pada keluaran lapisan terakhir model.pooler_output (
torch.FloatTensordengan bentuk(batch_size, hidden_size)) — Hidden-state lapisan terakhir setelah operasi pooling pada dimensi spasial.hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, num_channels, height, width).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
ResNetForImageClassification
kelas transformers.ResNetForImageClassification
< source >( config: ResNetConfig )
Parameter
- config (ResNetConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model ResNet dengan kepala klasifikasi gambar di atasnya (lapisan linear di atas fitur yang telah dipooling), misalnya untuk ImageNet.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( pixel_values: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutputWithNoAttention or tuple(torch.FloatTensor)
Parameter
- pixel_values (
torch.FloatTensordengan bentuk(batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan ConvNextImageProcessor. Lihat ConvNextImageProcessor.call() untuk detailnya (processor_classmenggunakan ConvNextImageProcessor untuk memproses gambar). - labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi gambar. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy). - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
ImageClassifierOutputWithNoAttention atau tuple(torch.FloatTensor)
A ImageClassifierOutputWithNoAttention atau tuple dari
torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (ResNetConfig) dan input.
Metode forward dari ResNetForImageClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- loss (
torch.FloatTensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1). - logits (
torch.FloatTensordengan bentuk(batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax). - hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap tahap) dengan bentuk(batch_size, num_channels, height, width). Hidden-states (juga disebut feature maps) dari model pada output setiap tahap.
Contoh:
>>> from transformers import AutoImageProcessor, ResNetForImageClassification
>>> import torch
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/resnet-50")
>>> model = ResNetForImageClassification.from_pretrained("microsoft/resnet-50")
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...