이미지 객체 인식부터 LLAMA 기반 설명 생성

윤서·2025년 5월 20일

CapstoneProject

목록 보기
6/11

우리 프로젝트에서는 특정 객체(사과, 꽃병, 인물 등) 에 대한 설명을 자동으로 제공해주는 AI 도슨트를 만들고자 합니다.

전체 구조 요약

[전체 작품 이미지]

YOLOV8 segmentation
->

[객체 감지 및 CROP]

clip 임베딩
->

[백터화된 이미지]

FAISS Index 저장
->

[ 질의 -> 관련 객체 검색]

LLaMA 문장 생성
->

[관람객 맞춤 도슨트 설명 ]

  1. YOLOv8 기반 객체 감지 및 crop

먼저, yolov8-seg-pt 모델을 활용하여 작품 이미지에서 작품을 감지합니다. 이때, bouning box가 아니라 segmentation mask를 사용하여 마스크 기반으로 객체만 추출합니다.

  1. Clip으로 객체 이미지 임베딩

각 crop된 객체 이미지에 대해 clip을 사용하여 시멘틱 벡터로 변환합니다.
나중에 사용자 질문과 유사한 의미의 객체를 검색할 수 있습니다.

시멘틱 벡터란 ?

단어나 문장, 이미지처럼 인간이 이해하는 의미를 컴퓨터가 수치적으로 다룰 수 있게 만든 벡터 표현을 말합니다.
쉽게 말해, 의미를 담고 있는 숫자의 배열을 의미합니다.

ex) 고양이 : [0.8, 0.2, 0.5] , 강아지 [0.79, 0.21, 0.52] 자동차 [0.1 , 0.9, 0.3]

고양이와 강아지는 유사한 동물이기 때문에 벡터값이 비슷, 자동차는 전혀 다른 의미라서 벡터가 다름

--> 벡터 간의 유사도를 계산하면 서로 의미적으로 얼마나 비슷한지를 판단할 수 있음

clip은 이미지와 텍스트를 같은 의미 공간에 임베딩함
"an apple on the table" -> [텍스트 시멘틱 벡터]
실제 사과 사진 -> [이미지 시멘틱 벡터], 이 둘이 서로 가까운 위치에 있도록 학습함

사용자가 '사과가 어딨지' 라고 질문하면 벡터로 바꿔 faiss에서 가장 가까운 이미지 벡터를 찾고, 그에 대한 설명을 해줄 수 있습니다.

  1. FAISS를 이용한 벡터 인덱싱

CLIP 임베딩된 벡터들을 FAISS 를 사용하여 인덱스에 저장

이 인덱스를 통해 나중에 의미적으로 유사한 객체를 빠르게 검색할 수 있음

  1. 질의 기반 객체 검색 및 LLaMA로 설명 생성

    1. CLIP 텍스트 임베딩으로 질문을 벡터화
    2. FAISS로 가장 유사한 객체 이미지 검색
    3. 메타데이터로부터 label + 객체 설명 가져오기
    4. llama에 prompt와 함께 전달 -> 자연어 생성

0개의 댓글