KalelPark's LAB

[ Self Supervised Learning ] Jigsaw Permutations table 생성하기 본문

Data Science/Self Supervised Learning

[ Self Supervised Learning ] Jigsaw Permutations table 생성하기

kalelpark 2023. 1. 4. 17:29

* 본 논문에서, 활용되는 내용입니다. (참고하시기 바랍니다.)

https://kalelpark.tistory.com/45

 

[ 논문 리뷰 ] Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles

GitHub를 참고하시면, CODE 및 다양한 논문 리뷰가 있습니다! 하단 링크를 참고하시기 바랍니다. (+ Star 및 Follow는 사랑입니다..!) https://github.com/kalelpark/Awesome-ComputerVision GitHub - kalelpark/Awesome-ComputerVis

kalelpark.tistory.com

Jigsaw Permutations Table

         - Self Supervised Learning에서, Patch에 대한 정보를 학습함으로써, Image의 Representation을 학습하기 위해 필요한
            방식입니다. 위의 방식을 사용하는 이유로는, low representation에서, High representation을 이해하기 위함이다.

import itertools
import numpy as np
import random
from scipy.spatial.distance import cdist
from tqdm import tqdm

    
paraser = args.ArgumentParaser()
parser.add_arugment("-n", "--n_classes", type = int, 
                    default = 1000, dest = "n_classes")
                    
parser.add_arugment("-p", "--save_path", type = str, 
                    default = "./permutations.npy", dest="save_path")
                    
args = parser.parase_args()

n_classes = args.n_classes
P_hat = np.array(list(itertools.permutations(list(range(9)), 9)))

with tqdm(total = n_classes) as bar:
    for i in range(n_classes):
        if i == 0:
            j = random.randint(0, P_hat.shape[0])
            P = np.array(P_hat[j]).reshape([1, -1])
        else:
            P = np.concatenate([P, P_hat[j].reshape([1, -1])], axis=0)
        
        P_hat = np.delete(P_hat, j, axis = 0)
        P_hat = np.delete(P_hat, j, axis = 0)
        D = cdist(P, P_hat, metric='hamming').mean(axis=0).flatten()
        j = D.argmax()
        bar.update(1)

np.save(args.save_path, P)

            

Comments