timm 文件

對抗性Inception v3

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

對抗性Inception v3

Inception v3 是 Inception 系列中的卷積神經網路架構,它進行了多項改進,包括使用標籤平滑、分解 7 x 7 卷積,以及使用輔助分類器以將標籤資訊傳播到網路更低層(同時在側頭層中使用批次歸一化)。其關鍵構建塊是Inception 模組

該特定模型用於對抗性樣本研究(對抗性訓練)。

該模型的權重從 Tensorflow/Models 移植而來。

如何將此模型應用於影像?

載入預訓練模型

>>> import timm
>>> model = timm.create_model('adv_inception_v3', 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)]

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

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

如何微調此模型?

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

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

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

如何訓練此模型?

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

引用

@article{DBLP:journals/corr/abs-1804-00097,
  author    = {Alexey Kurakin and
               Ian J. Goodfellow and
               Samy Bengio and
               Yinpeng Dong and
               Fangzhou Liao and
               Ming Liang and
               Tianyu Pang and
               Jun Zhu and
               Xiaolin Hu and
               Cihang Xie and
               Jianyu Wang and
               Zhishuai Zhang and
               Zhou Ren and
               Alan L. Yuille and
               Sangxia Huang and
               Yao Zhao and
               Yuzhe Zhao and
               Zhonglin Han and
               Junjiajia Long and
               Yerkebulan Berdibekov and
               Takuya Akiba and
               Seiya Tokui and
               Motoki Abe},
  title     = {Adversarial Attacks and Defences Competition},
  journal   = {CoRR},
  volume    = {abs/1804.00097},
  year      = {2018},
  url       = {http://arxiv.org/abs/1804.00097},
  archivePrefix = {arXiv},
  eprint    = {1804.00097},
  timestamp = {Thu, 31 Oct 2019 16:31:22 +0100},
  biburl    = {https://dblp.org/rec/journals/corr/abs-1804-00097.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}
< > 在 GitHub 上更新

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