공부/AIFFEL

Exploration 10 : 인물사진을 만들어 보자

dong_dong_2 2021. 2. 16. 20:55

1. 인물사진 모드란?
    - 피사체를 가깝게 찍을 때 배경이 흐려지는 효과를 가진 카메라 모드를 뜻함.
    - 오늘은 이런 인물사진 모드처럼 사진을 편집하는 것을 과제로 실습함.
2. 사진을 준비하자
    - 대략적인 흐름은 촬영된 이미지 -> 피사체 분리 -> 배경을 흐리게 만들기 -> 이미지 합성이다.
       1) 배경이 있는 셀카를 촬영한다. (배경과 사람의 거리가 약간 멀리 있으면 좋다.)
       2) 시멘틱 세그멘테이션(Semantic segmentation)으로 피사체(사람)와 배경을 분리한다.
       3) 블러링(blurring) 기술로 배경을 흐리게 한다.
       4) 피사체를 배경의 원래 위치에 합성한다.
    - 사진을 찍거나 기존의 가지고 있는 사진을 준비한다.
3. 세그멘테이션으로 사람 분리하기
    - 이미지 세그멘테이션(image segmentation)
       1) 이미지에서 픽셀 단위로 관심 객체를 추출하는 방법
       2) 모든 픽셀에 라벨(label)을 할당하고 같은 라벨은 "공통적인 특징"을 가진다고 가정한다. 물리적인 특징일 필요는 없다.
    - 시멘틱 세그멘테이션(semantic segmentation)
       1) 세그멘테이션 중에서도 특히 우리가 인식하는 시계처럼 물리적 의미 단위로 인식하는 세그멘테이션을 의미한다.
    - 인스턴스 세그멘테이션(instance segmentation)
       1) 사람 개개인 별로 다른 라벨을 가지게 한다. 여러 사람이 한 이미지에 등장할 때 각 객체를 분할해서 인식하는 것이 목표이다.
    - 이미지 세그멘테이션의 간단한 알고리즘 : 워터쉐드 세그멘테이션(watershed segmentation)
       1) 이미지에서 영역을 분할하는 가장 간단한 방법으로 물체의 "경계"를 나누는 것이다.
       2) 이미지를 그레이스케일(grayscale)로 변환하면 0 ~ 255의 값을 가진다. 이 픽셀 값을 이용해서 위치의 높낮이를 구분할 수 있다.
       3) 이를 이용해서 낮은 부분부터 서서히 물을 채워 나간다고 생각해보자.
       4) 각 영역에서 물이 점점 차오르다가 넘치는 시점이 생기게 된다. 그 부분을 경계선으로 만들면 물체를 서로 구분할 수 있게 된다.
4. 시맨틱 세그멘테이션 다뤄보기
    - 세그멘테이션 문제는 모델이 많은데, 그 중 DeepLab이라는 모델을 사용할 것이다. 이 모델은 성능이 매우 좋아 최근까지고 많이 사용된다.
    - DeepLab의 대한 몇 가지 질문
       1) atrous convolutuin을 사용하는 이유는?
          1) receptive field를 넓게 사용하기 위해 사용한다. (적은 파라미터로 필터가 더 넓은 영역을 보게 하기 위해)
       2) Depthwise separable convolution은 어디서 처음 사용했을까? 왜 이 구조가 효율적일까?
          1) Xception에서 제안되었다. 3x3 conv layer의 receptive field를 1/9 수준의 파라미터로 구현할 수 있기 때문에 효율적이다.
    - DeepLab 모델 준비하기 : 구글에서 제공하는 모델 구조를 그대로 가지고 와서 DeepLabModel 클래스를 만들었다.
    - 구글에서 제공하는 사전에 학습된 가중치를 불러왔다.
    - DeepLab 모델을 이용하여 내가 준비한 이미지를 run하고 피사체를 분리했다.
5. 세그멘테이션 결과를 원래 크기로 복원하기
    - DeepLab 모델을 사용하기 위해 이미지 크기를 작게 resize해서 입력해서 출력도 작게 나왔다.
    - 따라서 세그멘테이션 결과(mask)를 원래 크기로 복원하는 과정을 거쳤다.
6. 배경 흐리게 하기
    - 세그멘테이션 마스크를 이용해서 배경만 추출하고, blur처리를 하여 흐린 배경을 얻었다.
7. 흐린 배경과 원본 영상 합성
    - 흐리게 만든 배경과 분리한 파시체를 다시 합쳐서 인물사진 모드처럼 사진을 편집하였다.
8. 프로젝트 : 인물 모드 문제점 찾기
    - step 1. 인물모드 직접 해 보기 : 사람, 동물 등의 피사체가 있는 사진으로 인물모드 사진을 만들기 (최소 3장)
    - step 2. 사진에서 문제점 찾기 : 예를 들어 사람 근처의 물건은 흐리게 안 되었다. 실습 결과물의 문제점을 기술하기.
    - step 3. 해결 방법을 제안해 보기

 

아래는 실습한 내용으로, 완벽하지는 않지만 배경을 흐리게는 만들었다. (사진 속 주인공은 조카이다)