# Menggunakan timm di Hugging Face

`timm`, yang juga dikenal sebagai [pytorch-image-models](https://github.com/rwightman/pytorch-image-models), adalah kumpulan open-source model gambar PyTorch state-of-the-art, bobot pretrained, dan skrip utilitas untuk pelatihan, inferensi, dan validasi.

Dokumentasi ini berfokus pada fungsionalitas `timm` di Hugging Face Hub, bukan pada pustaka `timm` itu sendiri. Untuk informasi terperinci tentang pustaka `timm`, kunjungi [dokumentasinya](https://huggingface.co/docs/timm).

Anda dapat menemukan sejumlah model `timm` di Hub menggunakan filter di sebelah kiri [halaman model](https://huggingface.co/models?library=timm&sort=downloads).

Semua model di Hub dilengkapi dengan beberapa fitur yang berguna:
1. Kartu model yang dihasilkan secara otomatis, yang dapat dilengkapi oleh pengembang model dengan [informasi tentang model mereka](./model-cards).
2. Tag metadata membantu pengguna menemukan model `timm` yang relevan.
3. [Widget interaktif](./models-widgets) yang dapat Anda gunakan untuk bermain langsung dengan model di browser.
4. [Inference Providers](./models-inference) yang memungkinkan pengguna untuk membuat permintaan inferensi.

## Menggunakan model yang sudah ada dari Hub

Setiap model `timm` dari Hugging Face Hub dapat dimuat dengan satu baris kode selama Anda telah menginstal `timm`! Setelah Anda memilih model dari Hub, berikan ID model dengan awalan `hf-hub:` ke metode `create_model` dari `timm` untuk mengunduh dan menginstansiasi model tersebut.

```py
import timm

# Loading https://huggingface.co/timm/eca_nfnet_l0
model = timm.create_model("hf-hub:timm/eca_nfnet_l0", pretrained=True)
```

Jika Anda ingin melihat cara memuat model tertentu, Anda dapat mengklik **Use in timm** dan Anda akan diberikan potongan kode yang berfungsi untuk memuatnya!

### Inferensi

Snippet di bawah ini menunjukkan cara Anda melakukan inferensi pada model `timm` yang dimuat dari Hub:

```py
import timm
import torch
from PIL import Image
from timm.data import resolve_data_config
from timm.data.transforms_factory import create_transform

# Load from Hub 🔥
model = timm.create_model(
    'hf-hub:nateraw/resnet50-oxford-iiit-pet',
    pretrained=True
)

# Set model to eval mode for inference
model.eval()

# Create Transform
transform = create_transform(**resolve_data_config(model.pretrained_cfg, model=model))

# Get the labels from the model config
labels = model.pretrained_cfg['label_names']
top_k = min(len(labels), 5)

# Use your own image file here...
image = Image.open('boxer.jpg').convert('RGB')

# Process PIL image with transforms and add a batch dimension
x = transform(image).unsqueeze(0)

# Pass inputs to model forward function to get outputs
out = model(x)

# Apply softmax to get predicted probabilities for each class
probabilities = torch.nn.functional.softmax(out[0], dim=0)

# Grab the values and indices of top 5 predicted classes
values, indices = torch.topk(probabilities, top_k)

# Prepare a nice dict of top k predictions
predictions = [
    {"label": labels[i], "score": v.item()}
    for i, v in zip(indices, values)
]
print(predictions)
```

Hal ini seharusnya meninggalkan Anda dengan daftar prediksi, seperti ini:

```py
[
    {'label': 'american_pit_bull_terrier', 'score': 0.9999998807907104},
    {'label': 'staffordshire_bull_terrier', 'score': 1.0000000149011612e-07},
    {'label': 'miniature_pinscher', 'score': 1.0000000149011612e-07},
    {'label': 'chihuahua', 'score': 1.0000000149011612e-07},
    {'label': 'beagle', 'score': 1.0000000149011612e-07}
]
```

## Berbagi model Anda

Anda dapat membagikan model `timm` Anda langsung ke Hugging Face Hub. Hal ini akan menerbitkan versi baru dari model Anda ke Hugging Face Hub, dan membuat repositori model untuk Anda jika belum ada.

Sebelum mendorong model, pastikan Anda telah masuk ke Hugging Face:

```sh
python -m pip install huggingface_hub
hf auth login
```

Sebagai alternatif, jika Anda lebih suka bekerja dari notebook Jupyter atau Colaboratory, setelah Anda menginstal `huggingface_hub` Anda dapat masuk dengan:

```py
from huggingface_hub import notebook_login
notebook_login()
```

Lalu, unggah model Anda menggunakan metode `push_to_hf_hub`:

```py
import timm

# Build or load a model, e.g. timm's pretrained resnet18
model = timm.create_model('resnet18', pretrained=True, num_classes=4)

###########################
# [Fine tune your model...]
###########################

# Push it to the 🤗 Hub
timm.models.hub.push_to_hf_hub(
    model,
    'resnet18-random-classifier',
    model_config={'labels': ['a', 'b', 'c', 'd']}
)

# Load your model from the Hub
model_reloaded = timm.create_model(
    'hf-hub:<your-username>/resnet18-random-classifier',
    pretrained=True
)
```

## Sumber daya tambahan

* timm (pytorch-image-models) [Repo GitHub](https://github.com/rwightman/pytorch-image-models).
* Dokumentasi [timm](https://huggingface.co/docs/timm).
* Dokumentasi tambahan di [timmdocs](https://timm.fast.ai) oleh [Aman Arora](https://github.com/amaarora).
* [Mulai dengan Model Gambar PyTorch (timm): Panduan Praktisi](https://towardsdatascience.com/getting-started-with-pytorch-image-models-timm-a-practitioners-guide-4e77b4bf9055) oleh [Chris Hughes](https://github.com/Chris-hughes10).

