요즘IT
위시켓
AIDP
콘텐츠프로덕트 밸리
요즘 작가들컬렉션물어봐
놀이터
콘텐츠
프로덕트 밸리
요즘 작가들
컬렉션
물어봐
놀이터
새로 나온
인기
개발
AI
IT서비스
기획
디자인
비즈니스
프로덕트
커리어
트렌드
스타트업
서비스 전체보기
위시켓요즘ITAIDP
고객 문의
02-6925-4867
10:00-18:00주말·공휴일 제외
yozm_help@wishket.com
요즘IT
요즘IT 소개작가 지원
기타 문의
콘텐츠 제안하기광고 상품 보기
요즘IT 슬랙봇크롬 확장 프로그램
이용약관
개인정보 처리방침
청소년보호정책
㈜위시켓
대표이사 : 박우범
서울특별시 강남구 테헤란로 211 3층 ㈜위시켓
사업자등록번호 : 209-81-57303
통신판매업신고 : 제2018-서울강남-02337 호
직업정보제공사업 신고번호 : J1200020180019
제호 : 요즘IT
발행인 : 박우범
편집인 : 노희선
청소년보호책임자 : 박우범
인터넷신문등록번호 : 서울,아54129
등록일 : 2022년 01월 23일
발행일 : 2021년 01월 10일
© 2013 Wishket Corp.
로그인
요즘IT 소개
콘텐츠 제안하기
광고 상품 보기
개발

VLM, 눈 달린 LLM을 만나보자!

파이썬 한국 사용자 모임
15분
1시간 전
211
에디터가 직접 고른 실무 인사이트 매주 목요일에 만나요.
newsletter_profile0명 뉴스레터 구독 중

이 글은 PyCon Korea 2025에서 진행된 <VLM, 눈 달린 LLM을 만나보자!> 세션을 정리한 내용입니다. VLM이 어떻게 작동하고 어떻게 활용되는지에 대해 공유합니다. 발표 자료는 PyCon Korea 2025 공식 홈페이지에서 확인할 수 있으며, 파이콘 한국 유튜브 채널을 통해 영상으로도 만나보실 수 있습니다. (모든 이미지의 출처는 발표자에게 있습니다.)

 

VLM, 눈 달린 LLM을 만나보자!

김대현 개발자


안녕하세요, 저는 김대현입니다. AI, Cloud 분야를 지망하는 학생 개발자이자, 현재 GDG, AWSKRUG 등 여러 개발자 커뮤니티에서 활동하고 있습니다. 이번 글에서 제가 파이콘 한국 2025에서 발표했던 내용인 ‘VLM, 눈 달린 LLM을 만나보자’라는 주제로 얘기해 보고자 합니다.

 

최근에 우리는 개발, 일상적인 업무, 궁금한 내용이 있을 때 LLM을 많이 활용하면서 텍스트(프롬프트)로 LLM에 질의응답 (또는 QA) 하면서 질문하고 답을 받는 방식에 대하여 익숙해졌습니다. 그러면서 많은 LLM에 사진(시각 정보)를 첨부해 질문을 던지면, 모델이 텍스트와 이미지를 모두 이해해 답변을 내놓는 경험도 손쉽게 할 수 있습니다.

 

gpt5

 

이러한 LLM이 시각, 언어 동시 처리 능력을 가질 수 있는 기술이 바로 VLM (Vision Language Model)이라는 기술인데, 텍스트 기반 LLM에 비해 VLM은 상대적으로 활용 사례나 기술적 인지도가 낮은 편입니다. 의외로 모르시는 분들도 꽤 많습니다. 그래서 이번 글에서 VLM이 어떠한 원리로 동작이 되고, 실제로 어떻게 활용할 수 있는지를 저의 VLM 기반 발표 피드백 Agent를 개발했던 경험을 토대로 한번 소개하는 내용을 적어보고자 합니다. 

 

이번 글에서 다루는 내용은 아래와 같습니다. 2의 내용은 난이도가 있을 수 있으니 참고해 주세요!

 

  1. VLM이 뭔지?
  2. VLM의 동작 방식
  3. VLM을 활용한 발표 피드백 Agent 개발기

 

 

Vision Language Model은 무엇일까요?

Vision Language Model

 

Vision Language Model, 줄여서 VLM은 이미지 (Vision) & 텍스트(Language)를 동시에 처리하고 이해할 수 있는 AI 모델을 의미합니다. 즉, 컴퓨터 비전(CV)을 활용한 시각적 정보처리와 자연어 처리(NLP)를 활용한 텍스트 정보처리와 같은 여러 형태의 데이터를 동시에 처리하고 이해할 수 있는 AI 시스템인 멀티모달 AI 형태입니다.

 

그러면, 왜 VLM이 등장했을까요? 이것은 바로 멀티모달 AI 시대가 등장했기 때문인데요. 그 이유를 보면, 인터넷에서 '시각 데이터'가 폭발적으로 증가하고 있다는 것을 알 수 있습니다. “Cisco Visual Networking Index (VNI) 2017–2022”라는 Cisco에서 발간한 인터넷 트래픽 관련 보고서를 보면, 실제로 2022년에는 IP 트래픽의 82%가 영상 콘텐츠로 예측되었다고 합니다. 

 

이제 사람들은 단순히 텍스트를 이용하는 것을 넘어, Google Lens와 같은 도구로 눈에 보이는 대상을 바로 검색하기도 합니다. 이렇게 시각 정보가 폭증하고 데이터의 형태가 다변화되는 시대에서는 글만 이해하는 기존의 LLM으로는 한계가 뚜렷합니다. 이미지와 텍스트를 동시에 처리하고 이해하는 AI, 즉 멀티모달 AI가 반드시 필요한 이유입니다.

 

VLM vs LLM 무엇이 다른가?

그러면 VLM과 우리가 일반적으로 아는 ChatGPT, Claude, Gemini와 같은 LLM (Large Language Model)에 대해서 알아보겠습니다. 둘의 가장 큰 차이점은 입력, 학습, 출력에서 나타납니다.

 

llm vlm

 

VLM은 이미지와 텍스트를 결합해 정보를 처리하는 모델로, 실제로 이미지를 ‘이해’하고 설명하거나 그림에서 정보를 추출하는 등의 복합 작업이 가능합니다. 반면 LLM은 텍스트 기반 입력만을 처리하며, 언어 생성이나 요약, 번역, 질의응답처럼 순수 언어적인 작업에 특화되어 있습니다.

 

VLM은 멀티모달(이미지+언어) 입력을 모두 다뤄 복잡하고 실제적인 상황 (예: 사진 해석, 시각 정보를 기반으로 한 질문)에 활용되고, LLM은 언어적 패턴만 이해해서 지식 생성에 쓰입니다. 

 

어떠한 VLM 모델들이 있을까요?

우리에게 많이 친숙한 모델, Gemini 2.5 Pro (Google), GPT-5 (OpenAI), Claude 3.5 Sonnet (Antropic), 오픈소스로도 많이 쓰이는 Qwen3-VL, LLaMa 4-Vision이 있습니다.

 

AI 모델

 

 

Vision Language Model의 구조 & 작동 원리

VLM의 구조는 크게 3가지로 구성되어 있습니다. 이미지 인코더(Image Encoder 이미지 인코더), 텍스트 인코더(Text Encoder), 그리고 각각의 모달리티, Image와 텍스트 데이터를 하나의 같은 의미 공간에서 합쳐서 처리해 주는 멀티모달 퓨전으로 구성되어 있습니다. 참고로 Decoder는 들어가 있는 모델도 있고, 들어가지 않은 모델도 있습니다. 대표적으로 Decoder가 없는 모델은 Clip이 있습니다.

 

Image & Text Encoder

먼저, Encoder의 전체적인 개념에 대해서 설명 드리겠습니다. Encoder (인코더)는 입력한 정보(시퀀스)를 모델이 이해할 수 있는 벡터 형태로 변환하는 구성 요소입니다. 즉, 입력된 정보를 압축해서 의미적 표현(Semantic Representation)으로 만드는 역할을 합니다. 또한 요즘 활용되는 생성형 언어 모델에서 Encoder를 사용한다고 하면, 대부분은 Transformer(트랜스포머) 아키텍처를 많이 활용합니다.

 

Image & Text Encoder

 

이미지 인코더는 입력된 이미지를 모델이 이해할 수 있는 벡터 임베딩(Vector Embedding)으로 변환하는 구성 요소입니다. 초창기에는 CNN 기반 인코더가 주로 사용되었습니다. CNN은 '슬라이딩 윈도우' 방식을 사용하여, 합성곱 필터(Convolution Filter)로 작은 행렬로 이미지의 특정 영역을 훑어가며 단계적으로 특징을 추출합니다. 이 과정은 Convolution Layer와 Pooling Layer를 거치며 객체의 경계나 질감 같은 단순한 지역적 특징에서부터 점차 복잡하고 추상적인 특징까지 계층적으로 학습하여 최종적인 Feature Map을 생성합니다. 

 

하지만 최근에는 ViT(Vision Transformer) 기반 인코더가 주목받고 있습니다. ViT는 이미지를 텍스트 시퀀스처럼 일정 크기의 작은 패치(patch) 단위로 분할하고, 각 패치를 텍스트의 '토큰'처럼 취급하여 시퀀스 데이터로 변환합니다. 이후 각 패치의 위치 정보를 알려주는 Positional Encoding을 더한 뒤, 트랜스포머 구조의 핵심인 Multi-head Self-Attention을 통해 이미지 전체 패치들 간의 맥락적 관계를 한 번에 학습합니다. 이러한 방식 덕분에 ViT는 이미지의 전역적인 정보를 효과적으로 파악할 수 있으며, 추출된 시각적 특징을 텍스트 임베딩과 쉽게 결합할 수 있는 동일 차원의 벡터로 매핑하는 데 매우 유리합니다.

 

인코더

 

텍스트 인코더는 입력된 텍스트를 모델이 이해할 수 있는 벡터 임베딩으로 변환합니다. 먼저, 문장은 단어 또는 서브워드 단위의 토큰(Token)으로 분할되며, 이때 문장의 시작과 끝을 알리는 [CLS]나 [SEP] 같은 특수 토큰이 함께 추가됩니다.

 

이렇게 생성된 토큰 시퀀스는 트랜스포머 인코더로 입력되어, Self-Attention 메커니즘을 통해 문장 내 단어 간의 복잡한 의미적 관계와 문맥을 학습합니다. 마지막으로, 모델은 [CLS] 토큰의 최종 임베딩을 사용하거나 모든 토큰의 임베딩을 평균 풀링(Average Pooling)하여 문장 전체를 대표하는 하나의 벡터를 생성합니다. 이 텍스트 임베딩은 이미지 임베딩과 동일한 공통 의미 공간(Common Embedding Space)으로 매핑되어, 모델이 텍스트와 이미지 간의 연관성을 이해할 수 있게 해줍니다.

 

Multimodal Fusion

멀티모달 퓨전(Multimodal Fusion)은 '멀티모달 프로텍터(Multimodal Protector)'라고도 불리며, VLM에서 이미지와 텍스트처럼 서로 다른 종류의 데이터를 효과적으로 결합하여 하나의 통합된 표현(Embedding)으로 만드는 핵심 기술입니다.

 

Text Encoder와 Image Encoder에서 나온 정보를 결합하는 전략은 크게 세 가지로 나뉩니다.

 

Multimodal Fusion

 

1. 초기 융합(Early Fusion)

이 방식은 모델의 입력 단계에서부터 서로 다른 모달리티 데이터를 하나의 통합된 특성 벡터로 결합합니다. 장점은 모델이 학습 초기부터 두 데이터를 결합된 벡터로 받기 때문에, 모달 간의 상관관계 패턴을 더 쉽고 빠르게 학습할 수 있습니다. (각각을 병렬 처리하는 것보다 직접적인 학습이 가능)

 

단점은 각 모달리티가 고유의 특성을 충분히 학습하기도 전에 원시 데이터가 섞여버릴 수 있습니다. 이로 인해 각 데이터의 고유한 특징이 손실되거나, 한쪽 모달리티의 정보가 무시되는 '모달리티 붕괴(Modality Collapse)' 현상이 발생할 수 있습니다.

 

2. 중간 융합(Mid Fusion)

이 방식은 Joint Fusion 또는 Intermediate Fusion이라고도 하며, 모델의 중간 계층에서 각 모달리티를 결합하여 상호작용을 학습합니다. 장점은 각 모달에서 고유한 특징이 어느 정도 추출된 상태(표현이 나타난 상태)에서 결합이 이루어집니다. 따라서 데이터 간의 복잡하고 의미 있는 상관관계를 잘 학습할 수 있으며, Early Fusion과 Late Fusion의 장점을 절충한 형태로 평가받습니다.

 

단점은 모델 구조가 복잡해지고 구현이 어렵습니다. 중간 계층에서 서로 다른 Feature Space의 차원을 맞춰야 하는 문제가 있고, Cross-modal Attention이나 Co-attention같이 상관관계를 학습하기 위한 별도 모듈이 필요합니다. 이는 더 많은 파라미터, 계산량, 메모리 사용량 증가로 이어집니다.

 

3. 후기 융합(Late Fusion)

이 방식은 각 모달리티를 완전히 독립적인 서브 모델로 처리하여 각각의 예측을 수행한 뒤, 그 최종 결과(예: 확률값, 점수)를 결합하거나 가중평균하는 방식입니다. 장점은 각 모달리티가 별도의 모델로 처리되므로, 고유한 특징을 학습 과정 내내 독립적으로 유지할 수 있습니다.

 

단점은 최종 단계에서 단순히 결과를 합치는 구조이므로, 두 데이터가 학습 과정에서 서로의 표현을 정렬하거나 미세한 상호작용을 탐색하기 어렵습니다. 따라서 데이터 간의 깊은 연관성을 반영하는 데 한계가 있습니다.

 

VLM 모델들의 Learning Strategies(학습 전략)

VLM 모델들의 학습 전력에 대한 개념을 간단히, 설명드리면 이건 여러 모달(데이터)를 처리하는 모델이 서로 다른 모달들을 어떻게 학습해 서로 잘 이해하게 만들지를 정하는 방법입니다. 주로 사전 학습(Pretraining) 단계에서 주로 사용되며, 이후 Image Captioning, VQA, Multimodal Search와 같은 다양한 작업에 적용됩니다.

 

VLM 모델들의 Learning Strategies

 

VLM 모델 중에서도 Transformer 기반 아키텍처를 사용하는 모델들은 Mid Fusion과 Cross-Modal Attention 전략을 활용합니다. 이 전략은 트랜스포머의 핵심 메커니즘인 어텐션(Attention) 구조를 확장한 것으로, 모달리티 내부뿐 아니라, 서로 다른 모달리티 간의 관계까지 함께 학습할 수 있도록 설계되어 있습니다.

 

예를 들어, 이미지와 텍스트가 있을 때, 이미지의 특정 영역이 어떤 단어와 연관되는지, 또 반대로 문장의 특정 단어가 이미지의 어느 부분을 참조하는지를 Cross-Attention으로 학습합니다.

 

이 과정에서 트랜스포머의 Query, Key, Value 구조가 사용됩니다. 보통 한 모달리티(예를 들어 텍스트)가 Query, 다른 모달리티(예: 이미지)가 Key와 Value를 제공합니다. Query와 Key의 내적(dot-product)을 통해 어텐션 맵(Attention Map) 을 만들고, 이 가중치를 기반으로 Value를 조합해 최종적인 멀티모달 표현(Multimodal Representation)을 생성합니다.

 

Cross-Modal Attention

 

또한 Cross-Modal Attention을 제외한 3가지 전략이 더 있는데요. 대조 학습(Contrastive Learning), PrefixLM, Masked Language Modeling / Image-Text Matching 방식이 있습니다. 간단하게 설명드리면, 대조 학습(Contrastive Learning)은 이미지와 텍스트 쌍의 유사도를 학습해, 같은 의미의 쌍은 임베딩 공간에서 가깝게, 다른 쌍은 멀어지게 만드는 방법이고,

 

PrefixLM은 이미지나 비디오의 특징을 텍스트 입력의 앞부분(Prefix)에 넣고, 이어지는 텍스트를 생성하도록 학습하는 방식. Masked Language Modeling / Image-Text Matching은 텍스트 일부를 가리고 복원하거나, 이미지–텍스트 쌍이 서로 일치하는지 판별하도록 학습하는 방법입니다. 이렇게 VLM이 어떠한지, 어떠한 원리로 동작되는지 알아봤습니다.

 

 

VLM을 활용한 AI 발표 피드백 Agent 개발기

처음에 이 Agent를 개발하게 된 계기가 작년 10월 이였는데 이때 파이콘 발표를 준비하고 있었는데, 연습을 하면서 제가 말하는 속도나 제스처가 부자연스럽다는 고민을 하고 있었어요. 이때 '”발표하는 제스처에 대해 피드백을 주는 AI 에이전트를 개발해 보면 어떨까?' 하는 아이디어에서 시작했습니다. 그래서 온라인 발표에 피드백을 주는 AI 에이전트를 개발하는 방향으로 프로젝트 주제를 정하게 되었고, 개발하게 되었습니다.

 

처음에는 컴퓨터 비전 모델만으로 발표자 행동을 자동으로 분석하려고 했습니다. 하지만 분석 결과를 사용자에게 전달하려면, 텍스트 형태의 피드백이 반드시 필요하다’는 사실을 깨달았습니다. 즉, 단순히 잘못된 동작을 감지하는 것을 넘어서, 어떤 발표 행동이 문제인지, 그리고 구체적으로 어떻게 개선해야 하는지 알려줘야 한다는 거죠.

또한 그리고 GPU 서버를 사용할 수가 없었습니다. 시간당 비용도 문제고 인프라팀에서 구축하기 까다롭다는 리소스 이슈가 있어, 사용을 못 한다는 사실에 고민을 많이 해보았습니다. 그때 떠오른 아이디어가 바로 ‘Vision-Language Model’을 추론 API(Inference API) 형태로 활용해 보자는 아이디어였습니다. 

 

VLM이라면 영상 속 행동을 이해하고, 그에 대한 해석을 텍스트로 생성할 수 있지 않을까 하는 생각이 들었거든요. 또한 Inference API 형태로 활용하면, GPU 서버를 돌리는 것보다, GPU 서버 구축 및 유지 비용 대비 Inference API 호출 방식이 비용 효율성 측면에서 유리하다고 판단하여 해당 방식을 채택했습니다.

 

VLM Model 테스트

VLM Model 테스트

 

실제로 2024년 기준으로 GPT-4o 모델에 이미지를 입력하면 관련 내용을 텍스트로 설명해 주는 기능이 있다는 걸 알았고, 이후로 여러 VLM 모델들을 직접 스터디하고 테스트했습니다. LLaVA-Next, PLLaVA, Video-LLaMA, PailGemma 등 다양한 모델을 돌려보며, 시각 정보와 언어 정보를 어떻게 결합해야 가장 정확한 피드백을 얻을 수 있을지 살펴봤습니다. 다만, 사진에 나와있는 모델들은? GPU를 사용해야 한다는 이슈가 있어. API 형태로 사용 가능한 GPT-4(Vision) 모델과 Pailgemma 모델을 테스트해 보았습니다.

 

1분 길이의 영상을 3초 간격으로 프레임 단위를 나누어, 각 구간에 대해 모델에게 ‘이 프레임의 상황을 설명해 달라’는 식으로 프롬프트 기반 질의를 반복했습니다. 그 결과, 2분 분량의 영상 기준으로 GPT-4o-mini 모델이 가장 빠르고 정확한 응답을 보여 최종 선정되었습니다. 실제 평균 처리시간은 약 1분 40초, 다른 모델들 대비 3배 이상 효율적인 속도를 보였습니다.

 

Video Processing Pipeline

영상 처리 Pipeline 부분에 대해서 설명드리도록 하겠습니다. 세션 후 Q&A에서 구체적으로 Pipeline이 어떻게 되는지 질문해 주시는 분들이 많아서 실제 Pycon 발표 자료에서 소개된 Flow보다는 구체적으로 다시 만들어서 보여드립니다.

 

구체적으로 총 다섯 단계로 구성되어 있는데요. 먼저 OpenCV를 사용해 입력된 영상을 1초 단위로 프레임 단위로 분할합니다. 이 단계에서 FPS와 전체 영상 길이(duration)를 계산해 분석 기준을 설정합니다. 그다음으로 Mediapipe를 통해 각 프레임에서 손, 어깨, 자세, 시선 등 주요 Key Point 좌표를 추출합니다. 이 좌표들을 이용해 연속된 프레임 간 좌표 변화량(Δx, Δy) 을 계산합니다.

 

여기서 행동 탐지를 위한 임곗값(Threshold) 을 산출하는데요, 이 값은 평균 이동 변화량에 보정 계수 α를 곱해 계산합니다. 변화량이 이 임곗값을 초과하면, 해당 프레임을 ‘문제 행동 프레임’으로 분류하게 됩니다. 이후 문제 행동 프레임이 추출되면, 이를 GPT-4 Vision API에 전달해 프롬프트 기반 문맥적 피드백을 생성합니다. 이때 Prompt에는 시스템 지침(System Instruction)이 포함되어 있어 행동의 의도나 맥락을 고려한 자연어 피드백이 출력됩니다. 최종적으로 시각적 분석 결과와 텍스트 피드백이 함께 반환되어 사용자가 이해하기 쉬운 형태의 Behavior Feedback Output으로 정리됩니다.

 

문제 행동 탐지 조건 검사

문제 행동 탐지 조건 검사

 

이제 영상에서 행동 이상을 탐지하는 핵심 로직인 프레임 간 좌표 변화량 분석 부분에 대해서 설명해 드리겠습니다. OpenCV를 이용해 1초 단위로 프레임을 분할하고, 각 프레임에 대해 Mediapipe 라이브러리를 통해 신체 주요 좌표(Keypoint) 예를 들어, 시선, 어깨, 손, 자세의 위치를 추출합니다.

 

이후 연속된 두 프레임 간의 좌표 변화량 Δx, Δy를 계산하고, 그 평균 이동량에 보정 계수 α = 0.1을 곱해 Threshold를 산출합니다. 이 임곗값은 움직임의 크기를 수치화한 기준으로, 이를 초과하는 프레임은 ‘문제 행동 프레임(Problem Behavior Frame)’으로 분류합니다.

 

Threshold의 범위는 세 단계로 나뉩니다. 0.0에서 0.3 사이는 안정적, 즉 문제가 없는 상태, 0.3에서 0.7 사이는 경고, 약간의 개선이 필요한 상태, 그리고 0.7 이상은 심각 단계로, 즉각적인 개선이 필요한 상황으로 판단합니다.

 

판정 근거

 

문제 행동 프레임(Problem Behavior Frame)으로 분류된 프레임은 이후 GPT-4 Vision 모델에 전달되어, 행동의 맥락을 이해하고 정성적인 피드백을 생성하는 단계로 넘어갑니다. 또한 행동 분석 기준을 적용해, 각 프레임 간 좌표 변화(Δx, Δy) Threshold 값을 기반으로 판정 근거 & 피드백으로 매핑합니다.

 

구체적으로는 Mediapipe가 제공하는 랜드마크(눈‧코‧어깨‧손목‧손가락)를 기준으로 각 여러 행동 카테고리에 대하여 판정한 후, 이 판정 결과는 곧바로 자연어 피드백 템플릿에 반영되어 Json 형태로 Client에 반환합니다.

 

문제 행동 프레임(Problem Behavior Frame)

 

이제 문제 행동 탐지 조건 검사에 대해 좀 더 자세히 말씀드릴게요. MediaPipe를 통해 매 프레임마다 여러 점수를 계산합니다. 그리고 이 점수들이 사전에 설정한 임곗값을 초과하는지 확인하는 로직을 추가했습니다. 보시는 코드처럼, posture_score(자세 점수), gaze_score(시선 점수), gestures_score(제스처 점수), sudden_movement_score(돌발 행동 점수) 중 하나의 행동 중 특정 임곗값을 넘어서면 해당 프레임을 문제 프레임으로 간주합니다. 하나라도 임곗값 0.7을 넘으면 해당 프레임을 문제 프레임으로 간주했습니다.

 

여기에 추가적으로 hand_out_of_frame과 hand_raised라는 플래그를 별도의 로직으로 정의했습니다. hand_out_of_frame 플래그는 손 랜드마크가 전혀 감지되지 않을 때, hand_raised 플래그는 손이 화면 상단으로 과도하게 올라갔을 때 각각 활성화됩니다. 별로의 로직으로 분류한 이유는 일반적인 손동작(gestures)과 달리 독립적인 '문제 행동'으로 볼 수도 있기 때문이었습니다. 갑자기 온라인 발표 중에 손을 높게 들거나, 과장된 제스처를 하면 얼굴만 나오는 온라인 발표의 특성상, 흐름 방해 요소로 간주될수 있다고 판단했습니다.

 

이렇게 임곗값을 넘은 문제가 있는 프레임과 해당 행동별 점수 정보를 Vision API에 전달하면, 모델은 '이 프레임에서 손이 시야에서 벗어났습니다' 또는 '손이 너무 높이 올려졌습니다' 같은 구체적인 피드백을 반환합니다. 이러한 방식을 통해 전체 영상을 모두 보내지 않고도 핵심 문제 행동을 담은 프레임만 분석할 수 있게 되었고, 그 결과 응답 속도와 정확도를 크게 올릴 수 있었습니다. 위의 사진을 보시면, 개선 후 문제 행동을 감지해 낸 모습을 확인하실 수 있습니다.

 

Prompt Engineering

이제 모델에게 어떻게 모델에게 프롬프트를 주었는지, 그 부분에 대한 고민과 해결 방법에 대해 말씀드릴게요. 일단 저는 온라인 발표에서 어떠한 점에 대해서 피드백을 줄 수 있는지 생각을 해봤고, 제스처, 표정, 시선 처리, 자세 등에 대한 피드백을 제공하는 것을 목표로 삼았고, 모델에게 피드백을 요청할 때는 크게 세 부분으로 나누어 Prompt를 설계했습니다.

 

Prompt Engineering

 

먼저 페르소나 부여(Persona Assignment)입니다. 모델에게 '15년 이상의 경력을 가진 온라인 발표 전문 코치'라는 구체적인 역할을 부여했습니다. 이 코치는 비언어적 커뮤니케이션 전문가로서, 발표자의 행동이 청중에게 어떤 영향을 주는지 깊이 이해하고 있죠. 이 페르소나를 통해 AI가 더 전문적이고 실용적인 피드백을 제공하도록 유도했습니다.

 

다음으로, System Instruction에 대해 설명드릴게요. System Instruction은 모델에게 전체 프롬프트와 함께, 앞으로 어떤 행동을 하고, 어떤 방식으로 응답하며, 어떻게 분석해야 할지에 대한 전반적인 지침을 제공하는 부분으로 설계했는데요.

 

Prompt Engineering

 

위 사진에 보이는 것처럼, 다음과 같은 지침을 모델에게 주었습니다. 비언어적 행동을 평가하고, 다섯 가지 카테고리를 기준으로 피드백을 제공, 1~2줄로 간결하게 작성하되, 부적절한 행동이 감지되면 해당 문제 행동의 키워드를 포함했습니다.

 

추가로, 부적절한 행동을 지적할 때는 구체적인 예시와 함께 개선 방안을 제시하고, 긍정적인 행동은 제외하고 개선이 필요한 행동에 집중하도록 요청했습니다. 마지막으로, 피드백의 명확성을 높이기 위해 가능한 한 구체적인 예시를 들고, 하나의 카테고리에서 여러 문제가 감지되면, 모두 언급해 사용자가 명확하게 이해할 수 있도록 했습니다.

 

Prompt Engineering

 

마지막으로 퓨샷 프롬프팅(Few-Shot Prompting) 기법을 활용했는데요. 이 기법은 모델에게 새로운 작업을 수행할 때, 몇 개의 예시를 제공하여 작업의 맥락과 요구사항을 이해할 수 있게 구체적인 예시를 제공하는 것입니다. 예를 들어, '과도한 시선 이동'이라는 문제 행동에 대해, '발표자가 중요한 내용을 설명할 때마다 자주 화면 밖을 보거나 주변을 둘러본다'는 예시를 주고, '발표자의 눈이 카메라를 바라보지 않고 다른 곳을 응시하는 것'을 감지 기준으로 제시하는 식입니다.

 

또한 어떤 형식과 스타일로 피드백을 제공해야 하는지 직접적인 예시를 보여주는 것도 피드백의 정확도와 일관성을 높이기 위해 Few-Shot Prompting 기법을 적용하여 구체적인 예시를 포함했습니다. 화면에서 보시는 것처럼, '개선이 필요한 점'과 '권장 사항'을 구분하여 피드백 형식을 구체적으로 제시했습니다.

 

Conclusion(Test & Result)

서버 개발 환경 스펙에 대해서 간단히 설명드리면  AWS EC2 t3.large 단일 인스턴스, Docker 기반 컨테이너 환경을 사용하였고 CI/CD는 Jenkins를 사용하였습니다. 테스트는 직접 촬영한 온라인 발표 영상 20개 데이터로 구성했습니다. 영상에는 시선, 자세, 손동작, 표정 등 다양한 행동 패턴이 포함되도록 설계했습니다.

 

Conclusion(Test & Result)

 

성능 개선 이후 테스트를 통해 나온 결과를 예시를 통해 보여드리겠습니다. 화면 왼쪽은 VLM만을 사용한 프로토타입 단계의 시선 처리 피드백이고, 오른쪽은 CV와 VLM을 함께 적용해 성능을 개선한 버전의 결과입니다.

 

프로토타입 단계의 피드백을 보시면, '발표자의 시선이 자주 화면 바깥으로 나가는 경향이 보였습니다. 카메라를 바라보며 청중과의 눈 맞춤을 유지하는 것이 중요합니다'라고 나옵니다. 반면, 성능 개선 버전의 피드백은 '발표 중 시선이 카메라로 유지되지 않아 청중과의 연결이 되지 않는 것처럼 보입니다'라고 더 구체적으로 진단하고 있습니다.

 

권장 사항 역시 '발표할 때 카메라를 바라보는 습관을 기르시면 청중과의 연결이 더욱 강화될 것입니다'에서 '카메라를 향해 시선을 고정하고, 중요한 포인트에서 잠시 멈추어 시선을 두는 연습을 해보세요'로 더욱 명확해졌습니다. 이처럼 MediaPipe 기반의 정확한 시선 감지를 통해 피드백의 정확도와 구체성이 향상된 것을 확인할 수 있습니다.

 

피드백

 

먼저 영상 피드백 품질을 비교한 결과입니다. 사람의 주관에 기반한 정성적 평가로 품질 평가를 했으며, 기존의 VLM Foundation 모델 단독 추론 대비, 제안한 Mediapipe + VLM 시스템은 정확성 3.0에서 4.5로, 일관성 2.5에서 3.5로, 구체성 3.5에서 4.0으로 향상되었습니다. 즉, 단순 비전 모델만 사용했을 때보다 좌표 기반의 행동 피처를 함께 활용할 경우 모델이 맥락을 더 정교하게 이해하고, 구체적인 피드백을 생성할 수 있음을 확인했습니다.

 

 

마치며

지금까지 VLM을 소개하고, 제가 VLM을 활용한 AI 발표 피드백 Agent 개발을 했던 내용을 살펴보았습니다. 이 프로젝트를 진행하면서 사용자에게 신뢰할 수 있는 피드백을 제공하기 위해 해결해야 할 명확한 한계점들 또한 마주할 수 있었습니다.

 

1. 평가 지표의 한계: 현재 영상 피드백은 프롬프트 기반의 정성 평가 중심으로 이루어져 있습니다. 또한 평가도 기준이 정해져 있는 정량적 평가가 아닌, 사람의 주관에 기반한 정성적 평가로 품질 평가를 했습니다. 추후 이 시스템의 신뢰도를 높이기 위해서는 향후 실제 온라인 발표 영상의 정답 라벨과 비교할 수 있는 객관적인 정량 평가 지표 or 벤치마크에 대한 설계가 필요하다고 생각했습니다.

 

2. 시간적 맥락(Context) 유지의 한계: 현 구조는 프레임 단위(Frame-level)로 동작합니다. 이로 인해 "3초간 손을 들고 있는" 것과 같은 연속된 동일/유사 행동을 하나의 문제 상황으로 연결하고 상황적 맥락을 반영하는 데 명확한 한계가 있었습니다.

 

3. VLM 환각(Hallucination) 이슈: 일부 상황에서 VLM 모델의 환각으로 인해 피드백의 정확성이 떨어지는 사례가 발생했습니다. (예: 사용자가 카메라를 정면으로 응시하고 있음에도 "카메라를 바라보고 말하세요"라고 잘못된 피드백을 제공) 이러한 hallucination 이슈를 해결해 보려고 했으나, 개발 기간의 제약으로 인해 해결책을 실제 시스템에 적용하지 못한 점은 아쉬움이 남습니다.

 

이러한 한계점을 극복하기 위해, 프레임 간의 관계를 학습하는 시계열 모델링(Temporal Modeling)에서 그 실마리를 찾고자 했습니다. 예를 들어, 각 프레임의 스켈레톤(Skeleton) 정보를 시계열(Time-series)로 묶어 LSTM과 같은 모델로 패턴을 학습시킨다면, "3초간 손을 들고 있는" 행동을 프레임 간의 관계와 패턴을 학습시키는 것으로 문제를 해결할 수 있을까라고 생각해 보기도 했습니다.

 

이렇게 VLM이라는 생성형 AI 기술을 적용하며 마주한 한계점과 이를 극복하기 위한 기술적 고민들을 함께 나누어 보았는데요. 앞서 소개한 내용들이 VLM을 활용한 애플리케이션을 고민하는 여러분께 좋은 인사이트가 되고, 각자의 프로젝트에 적용해 볼 새로운 아이디어를 얻는 계기가 되길 바랍니다. 감사합니다. 

 

©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.