Skip to content

Latest commit

ย 

History

History
90 lines (76 loc) ยท 4.04 KB

facebookresearch_WSL-Images_resnext.md

File metadata and controls

90 lines (76 loc) ยท 4.04 KB
layout background-class body-class title summary category image author tags github-link github-id featured_image_1 featured_image_2 accelerator order demo-model-link
hub_detail
hub-background
hub
ResNext WSL
ResNext models trained with billion scale weakly-supervised data.
researchers
wsl-image.png
Facebook AI
vision
facebookresearch/WSL-Images
wsl-image.png
no-image
cuda-optional
10
import torch
model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x8d_wsl')
# ๋˜๋Š”
# model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x16d_wsl')
# ๋˜๋Š”
# model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x32d_wsl')
# ๋˜๋Š”
#model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x48d_wsl')
model.eval()

๋ชจ๋“  ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ •๊ทœํ™”๋œ ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, H์™€ W๊ฐ€ ์ตœ์†Œ 224์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” (3 x H x W)ํ˜•ํƒœ์˜ 3์ฑ„๋„ RGB ์ด๋ฏธ์ง€์˜ ๋ฏธ๋‹ˆ๋ฐฐ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋Š” [0, 1] ๋ฒ”์œ„๋กœ ๋ถˆ๋Ÿฌ์˜จ ๋‹ค์Œ mean = [0.485, 0.456, 0.406], std = [0.229, 0.224, 0.225]๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๊ทœํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์‹คํ–‰ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

# ํŒŒ์ดํ† ์น˜ ์›น์‚ฌ์ดํŠธ์—์„œ ์˜ˆ์‹œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ
import urllib
url, filename = ("https://github.com/pytorch/hub/raw/master/images/dog.jpg", "dog.jpg")
try: urllib.URLopener().retrieve(url, filename)
except: urllib.request.urlretrieve(url, filename)
# ์‹คํ–‰ ์˜ˆ์‹œ(torchvision์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค.)
from PIL import Image
from torchvision import transforms
input_image = Image.open(filename)
preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
input_tensor = preprocess(input_image)
input_batch = input_tensor.unsqueeze(0) # create a mini-batch as expected by the model

# GPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ž…๋ ฅ๊ณผ ๋ชจ๋ธ์„ GPU๋กœ ์ด๋™
if torch.cuda.is_available():
    input_batch = input_batch.to('cuda')
    model.to('cuda')

with torch.no_grad():
    output = model(input_batch)
# Imagenet์˜ 1000๊ฐœ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋„ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„, shape์ด 1000์ธ ํ…์„œ ์ถœ๋ ฅ
print(output[0])
# ์ถœ๋ ฅ๊ฐ’์€ ์ •๊ทœํ™”๋˜์ง€ ์•Š์€ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. Softmax๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ™•๋ฅ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
print(torch.nn.functional.softmax(output[0], dim=0))

๋ชจ๋ธ ์„ค๋ช…

์ œ๊ณต๋˜๋Š” ResNeXt ๋ชจ๋ธ๋“ค์€ 9์–ต 4์ฒœ๋งŒ๊ฐœ์˜ ๊ณต๊ณต ์ด๋ฏธ์ง€๋ฅผ weakly-supervised ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์ „ ํ•™์Šตํ•œ ํ›„ ImageNet1K ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์šฉํ•ด ๋ฏธ์„ธ ์กฐ์ •(fine-tuning)ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ณต ์ด๋ฏธ์ง€๋“ค์€ 1000๊ฐœ์˜ ImageNet1K ๋™์˜์–ด ์ง‘ํ•ฉ(synset)์— ํ•ด๋‹นํ•˜๋Š” 1500๊ฐœ์˜ ํ•ด์‹œํƒœ๊ทธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋ชจ๋ธ ํ•™์Šต์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ โ€œExploring the Limits of Weakly Supervised Pretrainingโ€์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

์„œ๋กœ ๋‹ค๋ฅธ ์„ฑ๋Šฅ์„ ๊ฐ€์ง„ 4๊ฐœ์˜ ResNeXt ๋ชจ๋ธ์ด ์ œ๊ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Model #Parameters FLOPS Top-1 Acc. Top-5 Acc.
ResNeXt-101 32x8d 88M 16B 82.2 96.4
ResNeXt-101 32x16d 193M 36B 84.2 97.2
ResNeXt-101 32x32d 466M 87B 85.1 97.5
ResNeXt-101 32x48d 829M 153B 85.4 97.6

ResNeXt ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•˜๋Š” ๊ฒฝ์šฐ์— ๋น„ํ•ด ImageNet ๋ฐ์ดํ„ฐ์…‹์—์„œ์˜ ํ•™์Šต ์ •ํ™•๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ResNext-101 32x48d ๋ชจ๋ธ์€ ImageNet ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ 85.4%์— ๋‹ฌํ•˜๋Š” ์ตœ๊ณ  ์ˆ˜์ค€์˜ ์ •ํ™•๋„๋ฅผ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋ฌธํ—Œ