timm 文件

ResNeSt

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

ResNeSt

ResNeStResNet 的一個變體,它堆疊了 Split-Attention 塊。然後,基陣列表示沿通道維度進行拼接V=Concat{V1,V2,,VK} V = \text{Concat} \{ V^{1},V^{2},\cdots,{V}^{K} \} 。與標準殘差塊一樣,Split-Attention 塊的最終輸出Y Y 透過快捷連線生成Y=V+X Y=V+X ,如果輸入和輸出特徵圖具有相同的形狀。對於帶有步幅的塊,將適當的轉換T \mathcal{T} 應用於快捷連線以對齊輸出形狀Y=V+T(X) Y=V+\mathcal{T}(X) 。例如,T \mathcal{T} 可以是帶步幅的卷積或組合的卷積-池化。

如何在影像上使用此模型?

載入預訓練模型

>>> import timm
>>> model = timm.create_model('resnest101e', pretrained=True)
>>> model.eval()

載入並預處理影像

>>> import urllib
>>> from PIL import Image
>>> from timm.data import resolve_data_config
>>> from timm.data.transforms_factory import create_transform

>>> config = resolve_data_config({}, model=model)
>>> transform = create_transform(**config)

>>> url, filename = ("https://github.com/pytorch/hub/raw/master/images/dog.jpg", "dog.jpg")
>>> urllib.request.urlretrieve(url, filename)
>>> img = Image.open(filename).convert('RGB')
>>> tensor = transform(img).unsqueeze(0) # transform and add batch dimension

獲取模型預測結果

>>> import torch
>>> with torch.inference_mode():
...     out = model(tensor)
>>> probabilities = torch.nn.functional.softmax(out[0], dim=0)
>>> print(probabilities.shape)
>>> # prints: torch.Size([1000])

獲取排名前 5 的預測類別名稱

>>> # Get imagenet class mappings
>>> url, filename = ("https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt", "imagenet_classes.txt")
>>> urllib.request.urlretrieve(url, filename)
>>> with open("imagenet_classes.txt", "r") as f:
...     categories = [s.strip() for s in f.readlines()]

>>> # Print top categories per image
>>> top5_prob, top5_catid = torch.topk(probabilities, 5)
>>> for i in range(top5_prob.size(0)):
...     print(categories[top5_catid[i]], top5_prob[i].item())
>>> # prints class names and probabilities like:
>>> # [('Samoyed', 0.6425196528434753), ('Pomeranian', 0.04062102362513542), ('keeshond', 0.03186424449086189), ('white wolf', 0.01739676296710968), ('Eskimo dog', 0.011717947199940681)]

將模型名稱替換為您要使用的變體,例如 resnest101e。您可以在本頁頂部的模型摘要中找到 ID。

要使用此模型提取影像特徵,請遵循 timm 特徵提取示例,只需更改你想使用的模型名稱。

如何微調此模型?

你可以透過更改分類器(最後一層)來微調任何預訓練模型。

>>> model = timm.create_model('resnest101e', pretrained=True, num_classes=NUM_FINETUNE_CLASSES)

要在自己的資料集上進行微調,你需要編寫一個訓練迴圈或修改 timm 的訓練指令碼以使用你的資料集。

如何訓練此模型?

你可以按照 timm 食譜指令碼來重新訓練一個新模型。

引用

@misc{zhang2020resnest,
      title={ResNeSt: Split-Attention Networks},
      author={Hang Zhang and Chongruo Wu and Zhongyue Zhang and Yi Zhu and Haibin Lin and Zhi Zhang and Yue Sun and Tong He and Jonas Mueller and R. Manmatha and Mu Li and Alexander Smola},
      year={2020},
      eprint={2004.08955},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.