Skip to content

Latest commit

ย 

History

History
118 lines (100 loc) ยท 7.25 KB

facebookresearch_semi-supervised-ImageNet1K-models_resnext.md

File metadata and controls

118 lines (100 loc) ยท 7.25 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
Semi-supervised and semi-weakly supervised ImageNet Models
Billion scale semi-supervised learning for image classification ์—์„œ ์ œ์•ˆ๋œ ResNet, ResNext ๋ชจ๋ธ
researchers
ssl-image.png
Facebook AI
vision
facebookresearch/semi-supervised-ImageNet1K-models
ssl-image.png
no-image
cuda-optional
10
import torch

# === ํ•ด์‹œํƒœ๊ทธ๋œ 9์–ต 4์ฒœ๋งŒ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•œ Semi-weakly supervised ์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ ===
model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnet18_swsl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnet50_swsl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext50_32x4d_swsl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext101_32x4d_swsl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext101_32x8d_swsl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext101_32x16d_swsl')
# ================= YFCC100M ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ Semi-supervised ์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ ==================
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnet18_ssl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnet50_ssl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext50_32x4d_ssl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext101_32x4d_ssl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext101_32x8d_ssl')
# model = torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnext101_32x16d_ssl')
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) # ๋ชจ๋ธ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋ฏธ๋‹ˆ๋ฐฐ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

# ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์†๋„๋ฅผ ์œ„ํ•ด ์ž…๋ ฅ๊ณผ ๋ชจ๋ธ์„ GPU๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.
if torch.cuda.is_available():
    input_batch = input_batch.to('cuda')
    model.to('cuda')

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

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

๋ณธ ๋ฌธ์„œ์—์„  Billion-scale Semi-Supervised Learning for Image Classification์—์„œ ์ œ์•ˆ๋œ Semi-supervised, Semi-weakly supervised ๋ฐฉ์‹์˜ ImageNet ๋ถ„๋ฅ˜ ๋ชจ๋ธ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

"Semi-supervised" ๋ฐฉ์‹์—์„œ ๋Œ€์šฉ๋Ÿ‰(hight-capacity)์˜ teacher ๋ชจ๋ธ์€ ImageNet1K ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต๋ฉ๋‹ˆ๋‹ค. student ๋ชจ๋ธ์€ ๋ ˆ์ด๋ธ”์ด ์—†๋Š” YFCC100M์˜ ์ผ๋ถ€ ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์ „ ํ•™์Šตํ•˜๋ฉฐ, ์ดํ›„ ImageNet1K์˜ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ํŒŒ์ธ ํŠœ๋‹ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋…ผ๋ฌธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"Semi-weakly supervised" ๋ฐฉ์‹์—์„œ teacher ๋ชจ๋ธ์€ ํ•ด์‹œํƒœ๊ทธ๊ฐ€ ํฌํ•จ๋œ 9์–ต 4์ฒœ๋งŒ์žฅ์˜ ์ด๋ฏธ์ง€ ์ผ๋ถ€๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์ „ ํ•™์Šต๋˜๋ฉฐ, ์ดํ›„ ImageNet1K ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋กœ ํŒŒ์ธ ํŠœ๋‹๋ฉ๋‹ˆ๋‹ค. ํ™œ์šฉ๋œ ํ•ด์‹œํƒœ๊ทธ๋Š” 1500๊ฐœ ์ •๋„์ด๋ฉฐ ImageNet1K ๋ ˆ์ด๋ธ”์˜ ๋™์˜์–ด ์ง‘ํ•ฉ(synsets)๋“ค์„ ๋ชจ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด์‹œํƒœ๊ทธ๋Š” teacher ๋ชจ๋ธ ์‚ฌ์ „ ํ•™์Šต ๊ณผ์ •์—์„œ๋งŒ ๋ ˆ์ด๋ธ”๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. student ๋ชจ๋ธ์€ teacher ๋ชจ๋ธ์ด ์‚ฌ์šฉํ•œ ์ด๋ฏธ์ง€์™€ ImageNet1k ๋ ˆ์ด๋ธ”๋กœ ์‚ฌ์ „ ํ•™์Šตํ•˜๋ฉฐ, ์ดํ›„ ImageNet1K์˜ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ํŒŒ์ธ ํŠœ๋‹ํ•ฉ๋‹ˆ๋‹ค.

Xie et al., Mixup, LabelRefinery, Autoaugment, Weakly supervised ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ–ˆ์„ ๋•Œ์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ, Semi-supervised ๋ฐ Semi-weakly-supervised ๋ฐฉ์‹์€ ResNet, ResNext ๋ชจ๋ธ์˜ ImageNet Top-1 ๊ฒ€์ฆ ์ •ํ™•๋„๋ฅผ ํฌ๊ฒŒ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ, ResNet-50 ๊ตฌ์กฐ๋กœ ImageNet ๊ฒ€์ฆ ์ •ํ™•๋„๋ฅผ 81.2% ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค..

Architecture Supervision #Parameters FLOPS Top-1 Acc. Top-5 Acc.
ResNet-18 semi-supervised 14M 2B 72.8 91.5
ResNet-50 semi-supervised 25M 4B 79.3 94.9
ResNeXt-50 32x4d semi-supervised 25M 4B 80.3 95.4
ResNeXt-101 32x4d semi-supervised 42M 8B 81.0 95.7
ResNeXt-101 32x8d semi-supervised 88M 16B 81.7 96.1
ResNeXt-101 32x16d semi-supervised 193M 36B 81.9 96.2
ResNet-18 semi-weakly supervised 14M 2B 73.4 91.9
ResNet-50 semi-weakly supervised 25M 4B 81.2 96.0
ResNeXt-50 32x4d semi-weakly supervised 25M 4B 82.2 96.3
ResNeXt-101 32x4d semi-weakly supervised 42M 8B 83.4 96.8
ResNeXt-101 32x8d semi-weakly supervised 88M 16B 84.3 97.2
ResNeXt-101 32x16d semi-weakly supervised 193M 36B 84.8 97.4

์ธ์šฉ

์ €์žฅ์†Œ์— ๊ณต๊ฐœ๋œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•, ๋‹ค์Œ ๋…ผ๋ฌธ์„ ์ธ์šฉํ•ด์ฃผ์„ธ์š”. (Billion-scale Semi-Supervised Learning for Image Classification)

@misc{yalniz2019billionscale,
    title={Billion-scale semi-supervised learning for image classification},
    author={I. Zeki Yalniz and Hervรฉ Jรฉgou and Kan Chen and Manohar Paluri and Dhruv Mahajan},
    year={2019},
    eprint={1905.00546},
    archivePrefix={arXiv},
    primaryClass={cs.CV}
}