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
반응형
'공부 > 코딩' 카테고리의 다른 글
스파르타코딩클럽 이미지로 시작하는 딥러닝 5주차 개발일지 (0) | 2021.07.21 |
---|---|
스파르타코딩클럽 이미지로 시작하는 딥러닝 4주차 개발일지 (2) | 2021.07.17 |
스파르타코딩클럽 이미지로 시작하는 딥러닝 3주차 개발일지 (0) | 2021.07.11 |
스파르타코딩클럽 이미지로 시작하는 딥러닝 1주차 개발일지 (0) | 2021.07.11 |
스파르타코딩클럽 스파르톤 밤샘 코딩마라톤 생존일지! (5) | 2021.07.10 |