๐Ÿ“š PyTorch์™€ torchvision

๐Ÿ“š PyTorch์™€ torchvision#

PyTorch ์†Œ๊ฐœ#

PyTorch๋Š” Python์— ์ต์ˆ™ํ•œ ๋ถ„๋“ค์ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ๋Š” ์ธ๊ณต์ง€๋Šฅ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์ง๊ด€์ ์ด๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” Tensorflow๋‚˜ Jax, MXNet ๋“ฑ์ด ์žˆ์ง€๋งŒ, PyTorch๋ฅผ ์ตํ˜€์•ผ ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” โ€œPyTorch๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธโ€์ž…๋‹ˆ๋‹ค.

PapersWithCode ํ†ต๊ณ„์— ๋”ฐ๋ฅด๋ฉด, ์ตœ๊ทผ ๋ช‡ ๋…„๊ฐ„์˜ ์—ฐ๊ตฌ ๋…ผ๋ฌธ๊ณผ ์˜คํ”ˆ์†Œ์Šค ์ €์žฅ์†Œ์—์„œ ์‚ฌ์šฉ๋œ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์˜ 50% ์ด์ƒ์ด PyTorch๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, PyTorch๋กœ ๋ชจ๋ธ์„ ์ง์ ‘ ๋งŒ๋“ค๊ณ  ํ•™์Šตํ•˜์ง€ ์•Š๋”๋ผ๋„, ๋‹ค์–‘ํ•œ ์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ๋“ค์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” PyTorch๋ฅผ ์ตํžˆ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

PyTorch์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์†Œ๊ฐœ๋Š” PyTorch ๊ณต์‹ ์‚ฌ์ดํŠธ์™€ ํŒŒ์ดํ† ์น˜ ํ•œ๊ตญ ์‚ฌ์šฉ์ž ๋ชจ์ž„ ๋“ฑ์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”:


PyTorch๋Š” ๋‹ค์–‘ํ•œ ๋ถ„์•ผ(Domain)์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠนํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ํŠน์ • ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด๋‚˜ ๋ฌธ์ œ ๋„๋ฉ”์ธ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์œผ๋ฉฐ, ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • torchvision: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ์ปดํ“จํ„ฐ ๋น„์ „

  • torchtext: ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ์™€ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ(NLP)

  • torchaudio: ์˜ค๋””์˜ค ๋ฐ์ดํ„ฐ์™€ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ

์ด ์ค‘ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ์ปดํ“จํ„ฐ ๋น„์ „ ๋ชจ๋ธ์„ ์‰ฝ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” torchvision์— ๋Œ€ํ•ด์„œ ๋” ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

torchvision ์†Œ๊ฐœ#

torchvision์€ PyTorch์˜ ๋„๋ฉ”์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ฐ ์ปดํ“จํ„ฐ ๋น„์ „ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ๋ฐ์ดํ„ฐ์…‹ ๊ด€๋ฆฌ: ์œ ๋ช…ํ•œ ๊ณต๊ฐœ ๋ฐ์ดํ„ฐ์…‹์˜ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋กœ๋“œ

  • ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ: ์ปดํ“จํ„ฐ ๋น„์ „์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ์ œ๊ณต

  • ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๋ฐ ๋ณ€ํ™˜: ์ด๋ฏธ์ง€ ์ฆ๊ฐ•๊ณผ ์ „์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

  • ์ปดํ“จํ„ฐ ๋น„์ „ ์—ฐ์‚ฐ: NMS, RoI Align ๋“ฑ ์ปดํ“จํ„ฐ ๋น„์ „ ํŠนํ™” ์—ฐ์‚ฐ ์ง€์›

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด torchvision๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ชจ๋“ˆ ๋ฐ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

๋ชจ๋“ˆ

์—ญํ• 

torchvision.datasets

๋‹ค์–‘ํ•œ ์ด๋ฏธ์ง€ ๋ฐ ๋น„๋””์˜ค ๋ฐ์ดํ„ฐ์…‹์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ๋กœ, ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ์…‹์„ ๋กœ๋“œํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋ช…ํ•œ ๋ฐ์ดํ„ฐ์…‹์ธ CIFAR, MNIST, ImageNet ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

torchvision.io

์ด๋ฏธ์ง€์™€ ๋น„๋””์˜ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์ž…์ถœ๋ ฅ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ํ…์„œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ชจ๋ธ ํ•™์Šต์— ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

torchvision.models

๋ฏธ๋ฆฌ ํ•™์Šต๋œ ๋‹ค์–‘ํ•œ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ResNet, AlexNet, VGG, EfficientNet ๋“ฑ ์—ฌ๋Ÿฌ CNN ๋ชจ๋ธ์„ ์‰ฝ๊ฒŒ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

torchvision.ops

์ปดํ“จํ„ฐ ๋น„์ „ ์ž‘์—…์— ์œ ์šฉํ•œ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. RoI Align, NMS (Non-Maximum Suppression) ๋“ฑ ํŠน์ • ์ž‘์—…์— ์ตœ์ ํ™”๋œ ์—ฐ์‚ฐ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

torchvision.transforms

์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ „์ฒ˜๋ฆฌ์™€ ๋ณ€ํ™˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• (augmentation) ๋ฐ ์ •๊ทœํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ณ€ํ™˜์„ ์†์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

torchvision.utils

์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ฑฐ๋‚˜ ํ…์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, make_grid ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ๋ฌถ์–ด ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.