CLIP은 어떻게 활용될 수 있을까?


재미있는 이야기를 시작해 보자.


우리는 특정 문장을 읽은 후에 그 내용과 관련된 개인적인 기억을 떠올린다. 그 기억의 장면이 뇌리를 스치는 것이다. ‘서늘한 바람’이라는 구절을 보고 바람에 흔들리는 나뭇가지를 떠올리는 사람이 있을 수 있다. 아주 더웠던 여름 날에 에어컨 앞에 서서 바람을 맞으며 열기를 식히던 자신의 모습을 떠올리는 사람도 있을 것이다. 누군가는 공포영화에서 악령이 나타나는 순간을 떠올릴 수도 있을 것이다.

인공지능이 특정 텍스트를 보고 그와 관련된 이미지를 떠올리는 능력을 가질 수 있다면 어떨까? 텍스트 정보가 표현하는 내용을 담은 이미지나 영상을 적절히 찾아내어 메모리에 올릴 수 있다면, 더 나아가, 텍스트와 이미지 사이의 관련성을 “주관적”으로 판단할 수 있다면 어떨까.

주관성에 대한 이야기는 조금 복잡하니까 잠시 접어두자. 그보다 먼저, 텍스트 정보가 주어졌을 때, 해당 텍스트와 관련된 이미지를 검색해 내는 것에 대해 알아보자. 문장을 읽고 자신의 경험 이미지를 떠올리는 것처럼. 물론 모든 이미지에 대해 각 이미지를 적절히 설명하는 텍스트를 미리 작성해 놓은 후에 텍스트 기반의 검색엔진을 만들면 될 듯 하지만, 최근에는 인공지능 관련 기술이 크게 발전하고 있으니 좀 더 발전된 방법을 생각해 보자.

현재 이러한 방법과 관련해서 가장 주목을 받고 있는 모델 중의 하나가 CLIP[1]인데, ‘(CLIP) 텍스트 정보를 이용한 Visual Model Pre-training‘ [아래의 내부링크 참조]에서 CLIP에 대해 간단하게나마 살펴봤으니, 이번 포스트에서는 CLIP을 활용하여 텍스트가 표현하는 의미를 담은 이미지를 찾아내는 실험을 해 보고자 한다.

이번 실험에서는 CLIP기반으로 구성된 Natural Language Image Search[2] 프로젝트를 활용한다. 간단한 텍스트를 입력한 뒤, 입력 텍스트를 가장 잘 묘사하는 것으로 판단된 5개의 이미지를 확인한다. 검색 대상이 되는 이미지 데이터베이스는 upsplash[3] lite를 사용한다.


재미있는 실험을 해보자.


(1) 물체 검색


위의 그림은 “a photo of computer”를 입력하였을 때 검색된 결과이다. 이 결과만 보면 얼핏 그럴 듯 하기도 한데 컴퓨터라는 단어에서 우리가 일반적으로 떠올리는 것들을 생각해 봤을 때 그렇게 만족스럽지는 않다.

위의 그림은 “a photo of cups”를 입력하였을 때 검색된 결과이다. 전반적으로 괜찮아 보이는 결과인데, 5번째 이미지는 애매하게 느껴진다. 그런데 검색된 이미지들에서 보이는 컵들이 우리가 일상생활에서 사용하는 컵들과는 거리가 있어 보인다.

위의 그림은 “a photo of two cats”를 입력하였을 때 검색된 결과이다. 전반적으로 고양이 2마리가 들어있는 이미지들이 잘 나왔다.

위의 그림은 “a photo of Korean characters”를 입력하였을 때 검색된 결과이다. 결과가 썩 좋지 못하다. 한글 문자를 포함한 이미지가 데이터베이스에 충분히 들어있지 않은 듯 하다.


(2) 장소 검색


위의 그림은 “a photo of river”를 입력하였을 때 검색된 결과이다. 흐르는 물이 찍힌 이미지들이 잘 검색되어 나오긴 했지만 강 보다는 계곡이나 하천으로 봐야 하는 것들이 주로 나왔다.

위의 그림은 “a photo of the earth”를 입력하였을 때 검색된 결과이다. 우주 공간에서 찍은 지구의 이미지가 주로 검색되어 나왔다.

위의 그림은 “a photo of city”를 입력하였을 때 검색된 결과이다. 도시 이미지들은 맞지만 왠지 전반적으로 밝은 느낌의 이미지들은 아닌 듯 하다.


(3) 이미지 스타일 검색


위의 그림은 “a photo in high contrast”를 입력하였을 때 검색된 결과이다. 전반적으로 밝음과 어두움의 차이가 큰 이미지들이 나왔다.

위의 그림은 “a photo in wide angle”을 입력하였을 때 검색된 결과이다.


(4) 동작 검색


위의 그림은 “a photo of a person running”을 입력하였을 때 검색된 결과이다. 이동하는 사람의 모습을 담은 이미지들이 나왔지만, 얼핏 보기에 뛰는 모습인지 걷는 모습인지 구분하기 힘든 이미지도 있다.

위의 그림은 “a photo of a person jumping”을 입력하였을 때 검색된 결과이다. 결과들 중에는 “a photo of a person running”으로 검색했을 때 나왔던 이미지도 포함되어 있다. Jumping과 running을 구분하기 어려운 듯 하다.

위의 그림은 “a photo of a person sleeping”을 입력하였을 때 검색된 결과이다. 사람이 아닌 동물의 이미지가 더 많이 나왔다.


(5) 감정 검색


위의 그림은 “hilarious photos”을 입력하였을 때 검색된 결과이다. 전반적으로 우스꽝스러운 이미지들이 검색되었으나, 모두 동물 이미지라는 점이 특징이다.

위의 그림은 “gloomy photos”을 입력하였을 때 검색된 결과이다. 전반적으로 우울한 분위기의 이미지들이다.


(6) 기타 검색


위의 그림은 “a photo not showing a cat”을 입력하였을 때 검색된 결과이다. 의도와는 달리 고양이가 포함된 이미지들만 나왔는데, “not showing”의 의미가 제대로 파악되지 않는 듯 하다.

위의 그림은 “a photo taken by a telescope”을 입력하였을 때 검색된 결과이다.

위의 그림은 “a photo taken by a microcope”을 입력하였을 때 검색된 결과이다.


(7) 입력 텍스트에 대해 연산을 적용한 결과


위의 그림은 개와 고양이가 한 마리씩 들어있는 이미지에서 고양이가 들어있는 이미지를 제외하라는 의미의 텍스트 연산을 수행했을 때 검색된 결과이다. 결과적으로 개만 두 마리가 들어있는 이미지들이 출력되었다.

위의 그림은 개와 고양이가 모두 한 마리씩 들어있는 이미지에서 개가 들어있는 이미지를 제외하라는 의미의 텍스트 연산을 수행했을 때 검색된 결과이다. 결과적으로 고양이만 두 마리가 들어있는 이미지들이 출력되었다.

위의 그림은 개 한 마리가 들어있는 이미지들 중에서 실내에서 찍은 이미지는 제외하라는 의미의 텍스트 연산을 수행했을 때 검색된 결과이다. 괜찮아 보이는 결과인데, 개가 아닌 듯한 동물의 이미지가 포함되어 있는게 흠이다.

위의 그림은 개 한 마리가 들어있는 이미지들 중에서 실외에서 찍은 이미지는 제외하라는 의미의 텍스트 연산을 수행했을 때 검색된 결과이다.


재미있는 생각을 해보자.


이번 포스트에서는 입력된 텍스트의 내용에 맞는 이미지를 검색, 출력하는 실험을 진행하고 그 결과를 간단하게 살펴보았다. 꽤 좋은 결과들도 보였고, 다소 아쉬운 결과들도 눈에 띄었다. 아쉬운 결과들이 나온 원인에는 여러가지가 있을 수 있겠으나, 가장 먼저 생각해 볼 수 있는 것은 이번 실험에서 사용한 이미지 데이터베이스의 용량이 비교적 작다는 점일 것이다. 활용 대상이 되는 이미지의 양과 종류가 다양할 수록 좋은 결과를 낼 테니까 말이다.

이와 같은 기술이 계속 발전하게 되면 어떤 응용 서비스가 가능해질까? 가장 먼저, 검색엔진의 성능이 향상될 수 있을 것이다. 특히, 이미지 검색 기능의 사용성이 높아질 것이다. 누구나 스마트폰으로 사진을 찍어서 공유하는 시대이니 성능이 우수한 이미지 검색 기능의 필요성은 충분할 것이다. 동영상 내의 특정 장면을 검색하는 서비스에도 활용될 수 있을 것이다. 예를 들어, 사용자가 격투 액션 장면에 대한 설명을 입력하면 동영상 내에서 격투 장면이 나타나는 순간들을 자동적으로 찾아낼 수 있을 것이다. 이러한 기능은 동영상을 직접 보지 않고서도 내용의 특성을 통계적으로 분석하는 과정에서도 큰 역할을 할 수 있을 것이다.

이번 실험에서는 텍스트를 입력하여 이미지를 찾아내는 과정만 살펴보았는데, 입력된 이미지에 대한 적절한 설명을 텍스트 형태로 출력하는 과정을 구현할 때에도 이 기술을 활용하는 것이 가능할 것이다. 대용량의 이미지 데이터베이스에 들어있는 모든 이미지에 대한 설명을 자동으로 추출할 수 있다면, 더 나아가 동영상 내의 각 장면에 대한 설명을 자동적으로 추출할 수 있다면 작업자의 수고를 크게 덜어줄 수 있을 것이다.


재미있는 상상을 해보자.


만약 시간이 더 흘러 한 사람의 모든 삶의 과정을 영상과 텍스트로 기록할 수 있는 시대가 온다면, 더 나아가 이번 실험에서 활용한 기술이 지속적으로 발전한다면, 어떤 세상이 될까? 굳이 힘들게 과거의 기억을 직접 떠올리기 위해 노력할 필요가 없어지고, 적절한 설명 입력하면 그와 관련된 자신의 기억 데이터를 정확하게 찾아볼 수 있게 되는 세상이 오지 않을까? 아니 어쩌면, 타인의 기억까지 검색해 볼 수 있게 되지 않을까? 한 사람의 현재의 정신적, 육체적 상태에 영향을 미친 주요 요인을 분석하는 과정에도 활용될 수 있지 않을까? 사람마다 다른 기억을 가지고 있으므로, 입력 텍스트가 같다고 하여도 그것에 의해 검색되는 이미지는 사람마다 다를텐데, 이것을 인간의 개성 또는 단독성의 시작이라고 생각해도 좋을까?

물론, 아직 기술적으로 넘어야 할 산이 많으므로 지나친 설레발일 수도 있겠지만 말이다.


References


  • [1] https://openai.com/blog/clip/
  • [2] https://github.com/haltakov/natural-language-image-search
  • [3] https://unsplash.com/

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다