본문 바로가기
공부/코딩

스파르타코딩클럽 이미지로 시작하는 딥러닝 2주차 개발일지

by ▤▣▩▒□ 2021. 7. 11.
728x90
반응형

스파르톤 덕분에 2주차까지 완료!

 

이번 주차에는 이미지를 전처리하고 유명 작가들의 화풍으로 변환하는 알고리즘을 적용해봤다.

 

import cv2
import numpy as np

net = cv2.dnn.readNetFromTorch('models/instance_norm/mosaic.t7')
net2 = cv2.dnn.readNetFromTorch('models/instance_norm/the_scream.t7')

img = cv2.imread('images/03.jpg')

h, w, c = img.shape

img = cv2.resize(img, dsize=(500, int(h / w * 500)))

MEAN_VALUE = [103.939, 116.779, 123.680]
blob = cv2.dnn.blobFromImage(img, mean=MEAN_VALUE)

net.setInput(blob)
output = net.forward()

output = output.squeeze().transpose((1, 2, 0))

output += MEAN_VALUE
output = np.clip(output, 0, 255)
output = output.astype('uint8')

net2.setInput(blob)
output2 = net2.forward()

output2 = output2.squeeze().transpose((1, 2, 0))

output2 += MEAN_VALUE
output2 = np.clip(output2, 0, 255)
output2 = output2.astype('uint8')

output = output[:157,:]
output2 = output2[157:315, :]

print(output2.shape)

output3 = np.concatenate([output,output2], axis = 0)

cv2.imshow('img', img)
cv2.imshow('output', output)
cv2.imshow('output2', output2)
cv2.imshow('output3', output3)
cv2.waitKey(0)

 

변수 net에 화풍 모델을 불러올 수 있다.

 

 

MEAN_VALUE = [103.939, 116.779, 123.680]
blob = cv2.dnn.blobFromImage(img, mean=MEAN_VALUE)

 

이 부분이 딥러닝에 들어갈 이미지 포맷을 만드는 과정이다.

저 값들이 의미하는 바를 정확히 알지는 못하지만 대충 저 숫자가 있어야 결과가 나온다고 하고 넘어간다.

 

위 코드를 실행하면 아래와 같이 나온다.

 

 

왼쪽이 원본, 오른쪽 두개가 원본을 절반으로 나눠서 화풍을 적용한 것이고,

중간이 두개를 위아래로 이어붙인 결과이미지다.

 

이미지를 아무거나 가져와서 실행해도 잘 먹힌다. 완전 신기함ㅎㅎ

 

728x90
반응형