Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SkyReplacement #10

Open
hyoseok1223 opened this issue May 25, 2022 · 4 comments
Open

SkyReplacement #10

hyoseok1223 opened this issue May 25, 2022 · 4 comments
Assignees
Labels
⭐ new feature New feature or request
Milestone

Comments

@hyoseok1223
Copy link
Contributor

hyoseok1223 commented May 25, 2022

Background

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

Content

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


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

  • 하늘에 속하는 영역과 fore ground에 속하는 영역을 구분짓는 경계에서 깔끔한 edge를 가져야합니다.
  • 이미지의 하늘이 아닌 foreground에 속하는 영역 요소들은 새롭게 swap, replace될 새로운 하늘의 노출과 색상에 일치해야 합니다. ( 표현을 빌리자면, 하늘은 단순한 배경이 아니라, 우리가 보는 모든 것에 대한 광원이자 필터이기 때문입니다.)
  • 반사가 고려되어야 합니다. 기존의 물이 원래 하늘을 반사해 이미지가 망쳐지지 않아야 합니다. ( challenge인것 같은데 저희 프로젝트에서는 어려울 수 있을 것 같습니다. 추후 발표시 더 생각해볼만한 점 정도로 남겨둘 수 있을 것 같습니다.)
  • 소프트웨어가 포착하지 못하는 영역의 마스크와 색상을 미세조정할 수 있는 방법이 필요합니다. ( 이건 불가능하다고 생각합니다. )

또한 대부분의 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

  • Sky Segmentation mask를 얼마나 잘 떼어내는지에 따라서 만들어지는 결과 이미지 퀄리티가 꽤나 달라집니다. => segmentation 기술의 고도화를 위해 재학습 및 시간적 요소 고려를 위한 rule base 기법 사용 등 고려 가능
  • 저희가 주로 사용하게될 이미지들이 3024 x 3024 정도로 꽤 큰 resolution을 가지는 점을 고려했을 때 이미지 처리과정에서 시간이 과도하게 길어질 수 있을 것 같고, 이는 서비스적으로 무척 안좋을 것 같습니다. => 처리 과정에서 오래 걸리는 처리는 이미지를 resolution을 낮춰서 처리하게 할 수 있을 것 같습니다.
  • 각 이미지에 어울리는 하늘 이미지를 선택하는 방법이 중요할 것 같습니다. 사용자가 직접 원하는 하늘 이미지를 넣는 것보다는 좋은 샘플들을 제공해주는 것이 좋을 것 같고, 이 부분이 중요한 요소일 것 같습니다.

References

Adobe Research Sky Replacement Paper

SkyReplacement Repo

@hyoseok1223 hyoseok1223 self-assigned this May 25, 2022
@hyoseok1223 hyoseok1223 added the ⭐ new feature New feature or request label May 25, 2022
@hyoseok1223 hyoseok1223 added this to the Prototype milestone May 25, 2022
@hyoseok1223
Copy link
Contributor Author

hyoseok1223 commented May 25, 2022

Segmentation 정확도에 따른 Quality 확인

low accuracy -> low quality

high accuracy -> high quality

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

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

  • low time : 대략 30초대 중후반 ( 35~38)
  • high time : 대략 300 초

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

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

@hyoseok1223
Copy link
Contributor Author

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


흐린 날 적용 결과 ( 좌 : 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
Copy link
Contributor Author

hyoseok1223 commented May 25, 2022

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


  • 청바지 입을경우에 하늘로 인식하는경우가 있어서 난감할때가 있어요!
  • 흰 옷, 흰 운동화 등 하늘로 인식해서 인물까지 필터를 입혀버리는 경우가 가끔 있어요. 그 부분을 '지우개'방식으로 해서 필터인식이 불필요한 부분을 사용자가 제거할 수 있게끔 개선된다면 더욱 좋을 것 같아요!
  • 기본캠으로 찍고 후필터 씌우니 화질도 안 깨지고 좋네요ㅎ
  • 한 가지 아쉬운 점은 밤하늘은 인식을 못하더라구요... 밤하늘에 별밤 필터 씌우고 싶은데ㅠㅠ 이것만 개선되면 정말 완벽할 것 같아요!ㅎㅎ)
  • 다만 하나 단점은 화질이 살짝 안좋게 저장이 됩니다
  • 필터도 많이 없는편인데 색이 다 날라가네요.. 너무 어둡거나 너무 밝거나 명암이 너무 들어가거나 색채가 많이 날라가거나 거의 배경 위주인것 같아요 인물엔 부적합.. 조절해도 배경과 인물이 있으면 중간조절이 없어요..
  • 잘 쓰고 있는데, 선택영역 지우개 기능이 있었으면 좋겠습니다! 가끔 다른 파란 부분 (청바지 등)이 하늘과 함께 선택되어 그 부분에도 구름이 보이게 되는 경우가 있는데, 선택영역을 부분적으로 지울 수 있었으면 좋겠어요!
  • 근데 제가 직접 하늘을 좀 문질(?)러서 하는 것도 있었으면 좋겠어요!진짜 추천드립니다
  • 처음엔 비교적 괜찬은것 같아 이 피크닉을 선택했는데 원하는 하늘색을 선택할때 마다 주위의 다른 영역까지 하늘색의 영향이 미쳐 흐리게 해버리는 큰 단점이 있네요. 좋은 앱들이 쓰는 "mask 기능"을 빨리 추가하세요!
  • 지우개툴같은걸로 배경아닌곳을 살짝칠한다거나 인식 안된 배경을 펜툴로 추가할수있으면 더욱조을듯해용
  • 여행사진에선 날씨가 진짜 중요한데 흐린날씨 맑게, 그리고 수정하기도 쉽고, 렌즈 안닦아서 흐리게 나온사진도 어느정도 선명하게 보이게하는 효과도 있는것 같아요
  • 진짜 구름 영역지정 가능한 기능만 추가되면 완전 최고 어플!! 피크닉이 구름사진이 필요없다고 인식 못하는 사진이나 구간들도 지정할수 있게 해주세요! 그리고 옷도 파란색이면 같이 적용되던데 그러한 부분도 혹시 개발자분쪽에서 수정할수 있는지 여쭤봅니댱!
  • 다만 AI가 하늘 인식을 잘 못하더군요 ㅜㅜ 특히 흐린날은 아예 인식을 못하고 맑은날에도 가끔 그러고 네이비컬러 아파트랑 맑은 하늘이랑 같이 인식해서 아파트에 구름이 껴지기도 해요
  • 아쉬운 점은 구름있는 하늘에는 구름이 겹쳐서 된게 티나서 아쉬워용 ㅠㅠ
  • 화질이 너무 깨지구 사람이랑 하늘 연결부위가 가끔씩 티나게 뜰때가 있는데 화질 안깨지는법 없나요?ㅜㅜ 그리고 하얀옷입으면 거기에도 다 입혀지고 청바지에도 필터 높일수록 청바지가 하얀바지가 되어가네요...ㅜ
  • 가끔 바지나 물 등, 하늘이 아닌 부분에 필터가 입혀져 곤란할 때가 있는데, 일정 부분만 필터를 지울 수 있는 기능이 있다면 정말 좋을 것 같네요.
  • 색감이 너무 좋아요 근데 한가지 아쉬운 점은 뒷 배경만 살짝 했음 좋겠눈데 전체다 색깔이 바뀌어버려서 좀 아쉬워요
  • 좀더 자연스럽게 되면 짱일듯
  • 핸드폰에서 이렇게 쉽게 필터를 입힐 수 있다니
  • 역광은 색감이 별루구요
  • 밤 풍경은 너무 티가 나요ㅠㅠ
  • 필터 새로운거 안 바라니까 옷이랑 얼굴에도 필터 씨우지 맙시다ㅠ 밤하늘 배경이 넘 이뻐서 하고 싶었는데 옷이 하양이어서 그런지 옷이랑 얼굴도 퍼래졌네요 어쩌라는건지.... 사람 클릭하면 그것만 원본으로 돌아오면 좋겠네요 청바지 입을경우에 하늘로 인식하는경우가 있어서 난감할때가 있어요!

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

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

@hyoseok1223
Copy link
Contributor Author

Dehazing시 segmentatoin 정확도 확인

좌 : hazy image 우 : dehazing image

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⭐ new feature New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant