timm 文件
對抗性Inception v3
加入 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}
}