hye-log

[๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech]WEEK 06_DAY 27 ๋ณธ๋ฌธ

Boostcourse/AI Tech 4๊ธฐ

[๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech]WEEK 06_DAY 27

iihye_ 2022. 10. 27. 20:24

๐Ÿ”ฅ ๊ฐœ๋ณ„ํ•™์Šต


[6] Model 2 - Pretrained Model

0. Overview

1) Computer Vision์—์„œ ๋ฐœ์ „์œผ๋กœ  Object Detection, Self-driving๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•จ

2) Computer Vision์˜ ๋ฐœ์ „์— ImageNet ์ด๋ผ๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์…‹์˜ ์—„์ฒญ๋‚œ ์˜ํ–ฅ๋ ฅ์ด ์žˆ์—ˆ์Œ

 

1. Pretrained Model

1) ๋ฐฐ๊ฒฝ

- ๋งค๋ฒˆ ์ˆ˜ ๋งŽ์€ ์ด๋ฏธ์ง€๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กญ๊ณ  ๋น„ํšจ์œจ์ 

- ๋ฏธ๋ฆฌ ํ•™์Šตํ•œ ๋ชจ๋ธ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ชฉ์ ์— ๋งž๊ฒŒ ๋‹ค๋“ฌ์–ด์„œ ์‚ฌ์šฉ

2) torchvision.models๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋ธ ๊ตฌ์กฐ์™€ pretrained weight๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Œ

 

2. Transfer Learning

1) CNN base ๋ชจ๋ธ ๊ตฌ์กฐ

- Input --> CNN Backbone + Classifier --> Output

2) Torchvision model ๊ตฌ์กฐ

import torchvision.models as models
resnet18 = models.resnet18(pretrained=True)

3) Ex) Imagenet Pretraining

- ImageNet Images --> CNN Backbone + Classifier --> 1000 class

- ์‹ค์ƒํ™œ์— ์กด์žฌํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ 1000๊ฐœ์˜ class๋กœ ๊ตฌ๋ถ„

4) Pretraining ํ•  ๋•Œ ์„ค์ •ํ–ˆ๋˜ ๋ฌธ์ œ์™€ ํ˜„์žฌ ๋ฌธ์ œ์™€์˜ ์œ ์‚ฌ์„ฑ์„ ๊ณ ๋ ค

5) Case 1. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ

- CNN backbone์˜ ์—ญํ• ์€ input image์˜ feature๋ฅผ ์ถ”์ถœ

- Classfier์˜ ์—ญํ• ์€ ์ถ”์ถœ๋œ feature์˜ embedding์„ ๊ฐ€์ง€๊ณ  class๋ฅผ ์ •์˜ํ•จ

- task๊ฐ€ pretrained model๊ณผ ์œ ์‚ฌํ•œ ๊ฒฝ์šฐ backbone์€ freeze ํ•˜๊ณ  classifier๋งŒ update

6) Case 2. ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

- task๊ฐ€ pretrained model๊ณผ ์œ ์‚ฌํ•œ ๊ฒฝ์šฐ backbone์€ freezeํ•˜๊ณ  classifier๋งŒ update


 

[Python]TypeError: image must be numpy array type(Resnet)

โš ๏ธ ์—๋Ÿฌ ์ƒํ™ฉ โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• image๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ np.array๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ np.array(Image.open(image_path))  resnet ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ transform์„ ์ ์šฉํ•œ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด reutrn if self.transform: image = sel..

hye-log.tistory.com


๐Ÿ”ฅ ์˜ค๋Š˜์˜ ํšŒ๊ณ 

ํŒ€ github ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ commit ๊ธฐ๋ก์„ ๋ณด๋‹ˆ ๋‚ด ์ปค๋ฐ‹ + merge ์ปค๋ฐ‹์ด ๋™์‹œ์— ์—…๋กœ๋“œ๋˜๊ธธ๋ž˜ ๋ฐ์ผ๋ฆฌ์Šคํฌ๋Ÿผ ๋•Œ๋Š” ๋‹ค๋ฅธ ํŒ€์›๋“ค์€ repository๋ฅผ ์–ด๋–ป๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•˜๋Š”์ง€ ๋ฌผ์–ด๋ดค๋‹ค.. ์•„์ง๊นŒ์ง€ baseline๊ณผ ๋ฐ๋ฉด๋ฐ๋ฉดํ•œ ์‚ฌ์ด๋ผ์„œ ์ด๋ฒˆ ์ฃผ๊นŒ์ง€๋Š” ๊ฐ์ž ํŽธํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์›ํ•˜๋Š” ์‹คํ—˜์„ ๋Œ๋ ค๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. (๊ทธ๋ž˜๋ด์•ผ ์˜ค๋Š˜ ๋‚ด์ผ์ž„...ใ… ใ… ) baseline 2์ฐจ ์ฝ”๋“œ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด์„œ ์‚ดํŽด๋ณด๋Š”๋ฐ ์‚ฌ์‹ค ์—„์ฒญ๋‚˜๊ฒŒ ๋ณ€ํ•œ ๊ฑด ์—†์–ด์„œ ๋Œ€์ถฉ ์Šฅ ๋ณด๊ณ  ๋„˜์–ด๊ฐ”๋‹ค. ์‹คํ—˜ ๋Œ๋ฆฌ๋ ค๊ณ  ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ฝ”๋“œ ์ฐพ์•„๋ณด๊ณ , ๋‹ค๋ฅธ ํŒ€์›๋“ค ์ฝ”๋“œ ์ฐธ๊ณ ํ•ด์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ํ–ˆ๋‹ค! ์˜ค๋Š˜์€ loss, optim, model ์œ„์ฃผ๋กœ ์‹คํ—˜ํ•ด๋ด„! ํ•˜๋ฃจ์— 2๋ฒˆ ๋ฐ–์— ๊ธฐํšŒ๊ฐ€ ์—†์œผ๋‹ˆ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ—˜ํ•ด๋ณด๊ณ  ์‹ ์ค‘ํ•˜๊ฒŒ ์ œ์ถœํ•ด๋ณด๋Š”๊ฑธ๋กœ +_+ ์˜คํ›„์—๋Š” level 2๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํŒ€ ๋ฏธํŒ… ํ•ด๋ณด์•˜๋‹ค. ํ”ผ์–ด์„ธ์…˜ ๋•Œ์—๋Š” ๊ฐ์ž ์‹คํ—˜ ๋Œ๋ ธ๋˜ ๋‚ด์šฉ๋“ค ๊ณต์œ ํ•˜๊ณ  baseline ์œผ๋กœ ์žก์„ optimizer์™€ model์— ๋Œ€ํ•ด์„œ ์˜๋…ผํ–ˆ๋‹ค. ํ™•์‹คํžˆ Adam ๋ณด๋‹ค๋Š” AdamW๊ฐ€ ์„ฑ๋Šฅ์ด ์ž˜ ๋‚˜์˜ค๋Š”๋ฐ ์ด๊ฑฐ ๋‹น์—ฐํžˆ ์ด์œ ๋„ ์žˆ์–ด์•ผ ํ• ํ…๋ฐ.. ์‹คํ—˜์„ ํ•ด๋ณด๋‹ˆ ์ด ๋ฐ์ดํ„ฐ์…‹์— fit ํ•œ ๊ฒŒ ์•„๋‹๊นŒ...?? ํ•™์Šต์„ ํ•˜๋ฉด์„œ ๋Š๋‚€๊ฑด ํ™•์‹คํžˆ train์„ ํ•  ๋•Œ๋Š” loss๋„ ๋‚ฎ๊ณ  accuracy๋Š” ๋†’์•„์„œ ๊ต‰์žฅํžˆ ํ•™์Šต์ด ์ž˜ ๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š”๋ฐ, valid๋‚˜ test๋กœ ์‹คํ—˜์„ ํ•ด๋ณด๋ฉด ๊ทธ๋ ‡๊ฒŒ ์„ฑ๋Šฅ์ด ๋†’์•„์ง€์ง€๊ฐ€ ์•Š์•„์„œ ์ข€ ๋” ์ผ๋ฐ˜ํ™”๋ฅผ ์‹œ์ผœ์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.. ๋‚ด์ผ์€ rubust ํ•œ ํ•™์Šต์— ์ง‘์ค‘ํ•ด๋ณด๋Š”๊ฑธ๋กœ...!!!!

728x90
Comments