아이공의 AI 공부 도전기

AI 재미있는 사이트 1. NVIDIA Image Inpainting

Image Inpainting 분야는 Computer Vision 분야 중 하나로 Original input image로부터 가려진 부분들을 복원 혹은 생성해내는 분야입니다.


예를 들어 모자이크 사진이나 초점이 흐려진 사진, 혹은 어느 구조가 사라진 상황 속에서 그에 맞는 사진을 만들어내는 것입니다.


그림을 보며 예를 살펴볼까요


아래의 그림은 이 논문의 Figure 1에서 가져왔습니다.

논문 링크 : https://arxiv.org/pdf/1901.00212.pdf

논문 제목 : EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning

https://arxiv.org/pdf/1901.00212.pdfhttps://arxiv.org/pdf/1901.00212.pdf

현재 이 논문에서 따온 그림은 원본 이미지에 노이즈처럼 missing region을 구성하여 그것과 스케치를 통한 복원 과정을 보이는 그림입니다.


앞에서 이야기했던 것처럼 사라진 부분들이 어느정도 채워진 상태로 복원되는 것을 확인할 수 있습니다.


물론 위의 예시와 다르게 스케치가 아니라 다른 구성을 통한 Image Translation 또한 가능합니다.


그럼 오늘 소개해드릴 NVIDIA Image Inpainting Demo에 대해 소개해보도록 하겠습니다.


NVIDIA Image Inpainting Demo 링크 https://www.nvidia.com/research/inpainting/


https://www.nvidia.com/research/inpainting/https://www.nvidia.com/research/inpainting/



현재 우리가 이 Demo에서 할 수 있는 것은 Custom 이미지 파일에 대해서 실제로 어떻게 복원하는지 직접 노이즈를 넣는 방식으로 살펴보는 것입니다. 


순서는 아래와 같습니다.


Step 1. 이 놀이를 하기 위한 Custom Image 파일 하나를 선택하여 upload합니다. 저는 이 커다란 고양이 사진을 넣을 것입니다.


Step 1-2 : Image Scale을 조절할 수도 있습니다. 원하시는 크기대로 진행하시면 될 것 같습니다.



저는 예를 들기 위해 image Scale을 크기한 것을 위 예시로 보였지만 실제로는 원본 크기로 작업을 할 것입니다.

이후 설정이 끝나면 Next Step을 클릭!


Step 2. Upload한 이미지에 brush로 noise를 생성할 것입니다.

이 부분은 원하는 부위에 하얀색 색칠을 하고 그 하얀색 색칠한 부분을 복원한다고 생각하시면 됩니다.

아래 항목을 보면 

Brush Width : Brush의 굵기를 굵게하거나 얇게하는 버튼입니다.

Change Image : Step 1에서 다뤘던 이미지를 다른 이미지로 바꾸기 위해 선택하는 버튼입니다.

Hide Mask : Brush로 그렸던 부분을 잠시 보이지 않게 하는 버튼입니다.

이 부분을 누른다고해서 없어지는 것이 아닙니다.

Hide Mask를 누른 후 다시 Show Mask라는 부분을 누른다면 원상복귀됩니다.

Clear : Brush했던 전체를 다 지우는 버튼입니다.

Undo : 방금 전 Brush Touch했던 그 한 부분만을 지우는 버튼입니다.


저는 위와 같이 노이즈를 약하게 듬성듬성 주었습니다.

그 후 Apply Model를 클릭!




Step 3. 결과 확인



눈쪽 부분의 복원이 매끄럽지 못하나 다른 부분들에 있어서는 매우 자연스럽게 복원됨을 확인할 수 있었습니다.


만약 앞에서 Brush 칠 한 부분을 보고 싶다면 아래 Show Mask 버튼을 클릭하시면 아래와 같이 어떤 부분을 Brush했는지 알 수 있습니다.




다른 실험


물론 인공지능을 공부하는 사람으로써 아는 부분이지만 혹시나 모르는 분들을 위해 잠시 설명하면 이미지를 복원하는데 가장 중요한 부분 중 하나는 주변 context입니다. 즉 너무 뭉텅이로 사라진 부분이 존재하면 그 부분을 복원하는데 아직까지는 어려움을 겪는다는 것입니다.

예를 들어보죠

방금 보였던 예에서 Mask Brush로 뭉텅이로 없애보았습니다.



주변 Context까지 전부 사라졌기 때문에 이 부분이 고양이를 뜻해야하는지 쿠션을 의미해야하는지 NN Model입장에서는 고민에 빠집니다.

때문에 아래와 같이 우측 얼굴이 완전히 사라지고 눈 또한 사라짐을 확인할 수 있습니다. 그리고 Blurness가 주변으로 확장하여 GAN의 고질적인 문제가 형성되는 것을 확인할 수 있습니다.


저도 더 공부해야하는 만큼 온전한 설명을 드릴 수 없지만 아마 아직까지 온전한 복원은 어려움을 겪는 것은 사실이라고 말씀드릴 수 있을 것 같습니다.


이상 재미있는 사이트를 소개하며 앞으로도 더 좋은 Demo를 소개해드리도록 하겠습니다.


감사합니다.~


공유하기

facebook twitter kakaoTalk kakaostory naver band
loading