boostcampaitech3 / final-project-level3-cv-17

[2022.05.16 ~ 2022.06.10] 🌤️미세먼지 없는 맑은 사진📷 - 부스트캠프 AI Tech 3기 최종 프로젝트
13 stars 3 forks source link

SkyReplacement #10

Open hyoseok1223 opened 2 years ago

hyoseok1223 commented 2 years ago

Background

프로젝트의 목표인 '여행가서 찍은 사진 속 안좋은 날씨 개선' 에서 생각을 했을 때 흐린 하늘을 개선시켜주는 것 또한 좋은 서비스일 수 있습니다. 또한, 실제 picnic앱에서도 일부 제공하고 있는 방식입니다. 하지만, picnic앱에서도 제약이 심하고 하늘 보정과 관련된 이슈들이 존재해 이를 개선시키고 좋은 앱을 만들고자 합니다.

Content

하늘을 segmentation한 후 하늘을 맑은 하늘( 사용자가 원하는 ) 로 변경해줄 수 있는 기능을 구현하고자 합니다. sky replacement라는 기술로 불리고 있고, 최근 Lemniar AI 에서 보여준 기술을 참고하면 좋을 것 같습니다.


이러한 sky replacement기술에서 중요한 task는 아래와 같습니다.


또한 대부분의 Sky Replacement 기술에서 새로운 sky로 replacement하는데에는 단순 합성기술을 사용하는 것 같습니다. Adobe 에서 사용한 sky replacement기술의 단계를 살펴보면

  1. original image upload
  2. select what type of sky you want to choose
  3. apply

이렇게 새로운 하늘로 합성하기를 원하는 하늘 이미지들을 몇가지 제시하며 이를 선택해서 새로운 이미지를 합성해냅니다. 이에 대해서는 1. 하늘 합성을 그냥 하늘 이미지를 교체하는 것으로 할 것인지 2. AI를 활용할 수 있는 방향이 있는지 3. 하늘이미지 자체를 생성해낼 수 있을지 등등을 고민해보고 있습니다. 가장 관련성이 높아보이는 adobe research에서 낸 논문에서는 기존 이미지와 유사한 이미지를 search한 후 그 하늘을 가져옵니다.

Details

References

Adobe Research Sky Replacement Paper SkyReplacement Repo

hyoseok1223 commented 2 years ago

Segmentation 정확도에 따른 Quality 확인

low accuracy -> low quality

high accuracy -> high quality

확실히 퀄리티가 높은 segmentation mask를 사용했을 때 더 깔끔했습니다. 다만 문제가 되는 부분은 기존 이미지 사이즈가 워낙 크다보니 (3024x3024) 이런 점이 더 부각되는데, segmentation mask를 더 잘 뽑기 위해서 고화질로 처리를 하게 될 경우 시간이 비약적으로 늘어납니다.

segmentation map 추출 후 sky replacement까지의 총 시간

다만, 지금 사용하고 있는 샘플이미지가 꽤나 챌린지한 이미지이기에 이 또한 고려해볼만합니다. ( 무척 먼 거리에 있는 사물들이 많고, 이러한 사물들 전부에 대해서 깔끔한 mask를 따내기가 어려움 )

따라서, sky segmentation을 위한 모델을 재학습 시켜볼 여지도 충분하다고 생각합니다. 다만, 데이터셋을 구하는 것이 어려운데, 우선은 대부분의 모델들은 skyfinder라는 데이터셋을 사용 중에 있고, 가장 괜찮아보이는 데이터셋은 maadaa.ai에서 제공중인 데이터셋입니다. 다만, 문의 결과 유료라는 답변이 와서 우선은 가격을 물어본 상태입니다.

hyoseok1223 commented 2 years ago

흐린 날에 대해서 적용한 결과 & 이미지 해상도에 따른 시간 공유


흐린 날 적용 결과 ( 좌 : low segmentation, 우 : high segmentation )

우측의 두개의 빌딩 사이에 대해서도 그렇고 훨씬 깔끔한 이미지가 만들어집니다.


이미지 해상도에 따른 처리 시간 비교

현재 comment에서 사용한 흐린날 이미지의 resolution은 1280 x 960입니다.
바로 위 comment에서 사용한 222222.jpg의 resolution은 3024 x 3024입니다.

두 이미지의 처리 속도를 비교해본 결과는 아래와 같습니다.

task 1280x960 3024x3024
segmentation 0.5s 209s
sky replacement 4.5s 33s
hyoseok1223 commented 2 years ago

Picnic 어플에서 가져온 개선점, 어필할 점들



몇가지로 내용을 요약하자면 다음과 같습니다.

  1. 흰 옷, 청색 옷 등 색갈에 기반해서 영역을 잡아서인지 하늘이 아닌 부분을 하늘로 인식해서 필터를 씌우는 경우가 많다.
  2. 화질이 깨진다.
  3. 너무 어둡거나 너무 밝은 이미지의 경우 색채가 많이 날아가게 된다.
  4. 인물에는 부적합하다.
  5. 하늘과 구름에 대해서 좀 더 customizing이 가능하면 더 좋을 것 같다.
  6. 배경만 살짝 바뀌면 좋을 것 같은데 전체 색감이 다 바뀌어서 아쉽다.
  7. 역광은 별로다.
  8. 밤 풍경의 경우 너무 퀄리티가 별로다.
  9. 렌즈 안닦아서 흐리게 나온사진, 유리 속에서 찍은 사진 등등 에서도 어느정도 선명하게 보이게하는 효과도 있다.
  10. 포토샵이나 그런 기술 없이도 간단히 핸드폰 만으로도 쉽게 된다는 점에서는 good
hyoseok1223 commented 2 years ago

Dehazing시 segmentatoin 정확도 확인

좌 : hazy image 우 : dehazing image

hazy한 이미지에서는 segmentation 되지않던 부분들이 dehazing을 거친 후의 이미지에서는 확실하게 되는 것을 볼 수 있고, hazy함에 의해 몇가지 객체가 가려지는 경우 윤곽선만 가져와지는 경우도 해소된다.