해보고 싶었던 것이다.

example로 통해서 연습을 해보고, 실제 custom을 해보도록하자.

Example)

import cv2
import numpy as np
img = cv2.imread("grid.jpg")
rows, cols, ch = img.shape
cv2.circle(img, (83, 90), 5, (0, 0, 255), -1)
cv2.circle(img, (447, 90), 5, (0, 0, 255), -1)
cv2.circle(img, (83, 472), 5, (0, 0, 255), -1)
pts1 = np.float32([[83, 90], [447, 90], [83, 472]])
pts2 = np.float32([[0, 0], [447, 90], [150, 472]])
matrix = cv2.getAffineTransform(pts1, pts2)
result = cv2.warpAffine(img, matrix, (cols, rows))
cv2.imshow("Image", img)
cv2.imshow("Affine transformation", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
[/python]

Example2)

--

--

우선 x,y 좌표있는 segmentation json을 binary image로 바꾸자.

그 전에 image 에서 segmentation 된거 어떻게 json 형태로 바뀌는건지 알아보자.

이 그림 처럼 점들을 이어서 한건데 이를 x, y 좌표를 기록해둔것이다.

그럼 이미지로 복원이 가능한가..? 가능하다. 이미지 업로드하고 point 찍고 convex 를 쓰거나 opencv 에 있는 contour 쓰면된다.

근데 이렇게 하게되면 원본이미지를 binary masking하는게 더 깔끔하게 잘될게 뻔하다.

그래도 원본이미지에서 binary masking 잘안될수도잇으니 다 체크해보자.

--

--

  1. 좌우반전 이미지를 넣어보자. → 포즈가 좌우로 바뀜.

이미지 뻥튀기

  • 이미지의 좌/우를 바꾼다거나,
  • 이미지의 밝기나 선명도를 바꾸는 방법을 사용한다.

출처: https://bcho.tistory.com/1161 [조대협의 블로그]

근데.. 이미지 좌우반전 ,rotate, 저렇게 뻥튀기하면 성능이 높아지나?

→ 논문 찾아보자.

그리고 분명 이런 기법을 가지고 했던 논문이 있을것이다.

warping 부터 성능 좋게 만들라면?

cp-vton에서는 GMM module에서 warp cloth 뽑을때 cloth detail까지 pixel L1 loss로 학습을한다. → cloth detail 빼고 여러 포즈(좌우반전,pose transfer 등), 로 학습을해서 warping 을 제대로되게끔.

  1. 대칭성(옷, 인간) → warp cloth 를 보면 옷의 목부분이 팔로 휘어져있거나 그렇다. 우리 옷과 인간은 대칭성을 가지고 있기 때문에 이를 고려하여 학습을 시킨다

— — — — — — — — — — -> 논문을 더 읽어보자 아직 경험이 너무 없다.

  1. 좌우반전 학습효과 →ㅇ
  2. rotate 학습효과 →
  3. 밝기 선명도 학습효과 →

이미지 augmentation은 학습에 도움이 된다고 한다. 많은 논문도 그렇고, SOTA 사이트에 최근모델 학습할때 augmentation해서 성능을 높임.

일단 논문좀 많이 읽어오자.

--

--