KalelPark's LAB

[ Computer Vision ] Jigsaw Generator 구현 본문

Data Science/Common

[ Computer Vision ] Jigsaw Generator 구현

kalelpark 2022. 12. 5. 19:50

ComputerVision task에서는 Model의 성능을 올리기 위해,

Image에 여러가지 Data Augmentation 기법들이 제안됩니다.

 

이미지를 자르거나, 다른 이미지와 겹치게 함으로써

Image의 덜 중요한 부분까지 focusing하거나, Image의 덜 중요한 부분을 dropout 하도록 합니다.

 

최근 여러 논문에서는 CutMix, Cutblur, Mixup 등이 소개되고 있는데, 이러한 data augmentation을 만들기 이전에, 
기본적으로 이미지를 Patch로 생성한 후, Patch를 섞는 코드를 구현해보도록 하겠습니다.

 

* 예시 Img

import random
from PIL import Image
import torch
from torchvision import datasets, transforms
import numpy as np
import pandas as pd

def jigsaw_generator(images, n):
    l = []
    for a in range(n):
        for b in range(n):
            l.append([a, b])
    
    block_size = 448 // n
    rounds = n ** 2
    random.shuffle(1)
    jigsaws = images.clone()
    
    for i in range(rounds):
        x, y = l[i]
        temp = jigsaws[..., 0 : block_size, 0 : block_size].clone()
        jigsaws[..., 0:block_size, 0:block_size] = jigsaws[..., x * block_size : (x+1) * block_size,
                                                    y*block_size : (y +1) * block_size].clone()
        jigsaws[..., x * block_size: (x + 1) * block_size, y * block_size : (y + 1) * block_size] = temp
    
    return jigsaws
    

img = Image.open("cat.png")
img = torch.tensor(img)

tensor_img = img.permute(2, 0, 1)
tensor_img.unsqueeze(0).size()

jigsaw_img = jigsaw_generator(tensor_img, 16)

pil_img = transforms.ToPILImage()
img = pil_img(jigsaw_img)
img.show()

* 최종

 

GitHub를 참고하시면, CODE 및 다양한 논문 리뷰가 있습니다! 하단 링크를 참고하시기 바랍니다.
(+ Star 및 Follow는 사랑입니다..!)

 

https://github.com/kalelpark

 

kalelpark - Overview

kalelpark has 13 repositories available. Follow their code on GitHub.

github.com

 

Comments