이미지 유사도 검색
다양한 변형이 가해진 사진 라이브러리를 만들고, 질의 사진과 비슷한 N장을 코사인 유사도로 검색합니다.
Web에서 개념과 코드 학습운영체제 권한이 필요한 실행은 Local에서 이어집니다.
01
1단계. 라이브러리 만들기
china와 flower에 다양한 변형을 적용해 6장짜리 작은 라이브러리를 만듭니다.
- 라이브러리 사진 N장의 임베딩을 한 번에 계산해 행렬로 보관합니다.
- 코사인 유사도를 행렬 곱 한 번으로 계산합니다.
- 결과를 query 사진과 함께 시각화하는 표준 검색 결과 화면을 만듭니다.
직접 해보기라이브러리의 모든 사진을 2x3 그리드로 시각화하세요.
import torch
import torchvision
import torch.nn as nn
import torch.nn.functional as F
from torchvision.models import resnet18, ResNet18_Weights
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from sklearn.datasets import load_sample_image
china = load_sample_image('china.jpg')
flower = load_sample_image('flower.jpg')
def addNoise(img, sigma):
noise = np.random.RandomState(42).normal(0, sigma, img.shape)
return (img.astype(np.float32) + noise).clip(0, 255).astype(np.uint8)
library = [
('china', china),
('china_rot', np.rot90(china, k=1).copy()),
('china_noisy', addNoise(china, 15)),
('flower', flower),
('flower_rot', np.rot90(flower, k=1).copy()),
('flower_noisy', addNoise(flower, 15)),
]
len(library), library[0][0]편집기를 준비하고 있습니다.