DAY 10 : Cutmix

210901

์ปท๋ฏน์Šค๋ฅผ ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. ๋ชจ๋“  ๋กœ์Šคํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์‹คํ—˜ํ•ด๋ณด์•˜๋”๋‹ˆ ๋ชจ๋‘ ์„ฑ๋Šฅ์ด ์˜ค๋ฅด๋Š” ๋†€๋ผ์šด ๊ฒฐ๊ณผ๋ฅผ ๋ณด์˜€๋‹ค.

๋‹ค์Œ์€ cutmix๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

if np.random.random() <= args.cutmix:
    W = inputs.shape[2]
    mix_ratio = np.random.beta(1, 1)
    cut_W = np.int(W * mix_ratio)
    bbx1 = np.random.randint(W - cut_W)
    bbx2 = bbx1 + cut_W
    
    rand_index = torch.randperm(len(inputs))
    target_a = labels
    target_b = labels[rand_index]
    
    inputs[:, :, :, bbx1:bbx2] = inputs[rand_index, :, :, bbx1:bbx2]
    outs = model(inputs)
    loss = criterion(outs, target_a) * mix_ratio + criterion(outs, target_b) * (1. - mix_ratio)
  • 1 : ์ธ์ž๋กœ args.cutmix ๋ฅผ ๋ฐ›๋Š”๋‹ค. 0์—์„œ 1์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ์ด ๊ฐ’์ด ํด์ˆ˜๋ก cutmix๋ฅผ ์ ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

  • 3 : ๋ฒ ํƒ€๋ถ„ํฌ์—์„œ ํŠน์ • ์ˆ˜๋ฅผ ๋ฝ‘๋Š”๋‹ค, ๋‘ ์ธ์ž์˜ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ท ๋“ฑ๋ถ„ํฌ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • 4 : cutmix๋ฅผ ์ ์šฉํ•  ๋น„์œจ์„ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ€๋กœ์— ๋Œ€ํ•ด ์ž๋ฅผ ๋ถ€๋ถ„์„ ๊ฒฐ์ •ํ•œ๋‹ค.

    • ์‹ค์ œ๋กœ cutmix๋Š” ์ž„์˜์˜ w์™€ h์˜ ์ด๋ฏธ์ง€๋ฅผ ํ•ฉ์น˜๋Š” ๊ฒƒ

    • ์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ์…‹์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด ๋Œ€์ฒด๋กœ ์–ผ๊ตด์ด ์ค‘์•™์— ์žˆ๊ณ  ๊ทธ ์™ธ์—๋Š” ๋ฒฝ๊ณผ, ์˜ท์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์–ผ๊ตด ๋ฐ์ดํ„ฐ์— ์ดˆ์ ์„ ๋งž์ถฐ์•ผํ•œ๋‹ค. ๋˜ํ•œ, ์–ผ๊ตด์ด ์žˆ์–ด์•ผ ํ•  ์œ„์น˜์— ๋ฒฝ์ด๋‚˜ ์˜ท์ด ํ•ฉ์„ฑ๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ๋กœ๊ธธ์ด๋Š” ์ด๋ฏธ์ง€ ์„ธ๋กœ ๊ธธ์ด๋กœ ๊ณ ์ •ํ•˜๊ณ  ๊ฐ€๋กœ ๊ธธ์ด๋งŒ ๋ฐ”๊พธ๊ธฐ๋กœ ํ•œ๋‹ค.

  • 5-6 : cutmixํ•  ์ด๋ฏธ์ง€์˜ ์‹œ์ž‘์ ๊ณผ ๋์ 

  • ์ดํ›„, cutmix๋ฅผ ์ ์šฉํ•œ๋‹ค.

Last updated

Was this helpful?