안녕하세요! 오늘은 Ollama를 이용해서 메타의 Llama 3.2 Vision을 로컬에서 활용하는 방법에 대해 알아보겠습니다. Llama3.2-vision은 이미지 추론 생성 모델 컬렉션으로, 11B와 90B 크기의 모델이 제공됩니다. Llama 3.2 11B, 90B 모델은 이미지와 텍스트 결합으로 다중 모달 기능을 지원하며, 이미지 추론, 문서 시각적 질의응답, 이미지 캡션 생성 등을 수행할 수 있습니다. 이 블로그에서는 Ollama Llama3.2-vision의 개요, 주요 기능 및 설치방법에 대해 알아보고 간단한 Chainlit 애플리케이션을 만들어 보겠습니다.
https://ollama.com/blog/llama3.2-vision
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Llama3.2-vision 개요
Llama3.2-vision은 텍스트와 이미지를 입력받아 텍스트를 출력하는 방식으로 작동하며, 이미지 인식, 추론, 캡션 생성, 이미지 관련 질문 답변 등의 작업에 최적화되어 있습니다. Llama3.2-vision은 오픈 소스 및 상용 멀티모달 모델들을 능가하는 성능을 보여줍니다. 텍스트 작업의 경우 영어, 독일어, 프랑스어, 이탈리아어, 포르투갈어, 힌디어, 스페인어, 태국어를 공식적으로 지원하며, 8개 언어 외에도 더 많은 언어로 학습되었습니다. 하지만 이미지와 텍스트를 함께 사용하는 작업의 경우 영어만 지원됩니다.
Llama3.2-vision은 텍스트와 이미지를 모두 이해하는 멀티모달 모델로, 다음과 같은 특징과 기능을 제공합니다.
- 다양한 크기의 모델: 11B와 90B 크기의 모델을 제공하여 사용자의 필요에 따라 선택 가능합니다.
- 이미지 이해 및 추론: 이미지를 분석하고 이해하여 캡션을 생성하거나 이미지에 대한 질문에 답변할 수 있습니다.
- 다국어 지원: 텍스트만 사용하는 작업의 경우 8개 언어를 공식적으로 지원하며, 더 많은 언어로 학습되었습니다.
- 뛰어난 성능: 여러 벤치마크에서 오픈 소스 및 상용 멀티모달 모델들을 능가하는 성능을 보여줍니다.
- 시각적 질의응답 (VQA) 및 시각적 추론: 이미지를 보고 그에 대한 질문을 이해하는 기능입니다.
- 문서 시각적 질의응답 (DocVQA): 지도나 계약서와 같은 문서의 텍스트와 레이아웃을 모두 이해하고 이미지에서 직접 질문에 답변하는 기능입니다.
- 이미지 캡션 생성: 이미지 캡션 생성은 시각과 언어 사이의 간극을 메워 세부 사항을 추출하고 장면을 이해한 다음 이야기를 전달하는 한두 문장을 만듭니다.
- 이미지-텍스트 검색: 이미지-텍스트 검색은 이미지와 그 설명을 연결하는 것과 같습니다. 검색 엔진과 유사하지만 사진과 단어를 모두 이해하는 엔진입니다.
https://huggingface.co/meta-llama/Llama-3.2-11B-Vision
Ollama Llama3.2-vision 설치방법
Llama3.2-vision을 로컬에서 사용하려면 먼저 Ollama를 설치한 후, 모델을 다운로드해야 합니다. Ollama는 다운로드 링크에서 운영체제에 따라 설치하면 되고, 완료되면 "ollama pull" 명령어로 Llama3.2-vision 모델을 다운로드합니다.
ollama pull llama3.2-vision
Llama3.2-vision 챗봇 만들기
다음은 Llama3.2-vision 챗봇을 만들어보겠습니다. 이 블로그의 작업 환경은 Windows 11 Pro, WSL2, 파이썬 버전 3.11, Visul Studio Code(이하 VSC)이며, "WSL 연결"을 통해 Linux환경에서 실행하였습니다.
1. 가상 환경 생성 및 활성화: 먼저 VSC에서 파이썬 가상환경을 생성하고 활성화합니다
python -m venv .venv
source .venv/bin/activate
2. Ollama 및 chainlit 설치: 가상환경이 활성화된 상태에서 Ollama 실행과 챗봇 대화형 인터페이스에 필요한 chainlit 패키지를 설치합니다.
pip install ollama chainlit
3. 코드 작성: 이 코드는 Chainlit과 Ollama API를 사용해 사용자가 제공한 이미지를 분석합니다. 채팅 시작 시 환영 메시지를 전송하고, 사용자가 이미지를 보내면 이를 읽어 `image_data`로 저장한 후 Ollama의 `llama3.2-vision` 모델에 전송하여 분석 결과를 받습니다. 아래 코드를 복사해서 app.py 이름으로 저장합니다.
import chainlit as cl
import ollama
@cl.on_chat_start
async def start():
# 초기 메시지 전송
await cl.Message(
content="환영합니다! 이미지를 보내주시면 분석해드리겠습니다.(이미지+텍스트 작업의 경우 영어만 지원)"
).send()
@cl.on_message
async def main(message: cl.Message):
# 이미지 요소 가져오기
image_elements = message.elements
if not image_elements:
await cl.Message(
content="분석할 이미지를 제공해 주세요."
).send()
return
# 이미지 처리
for image in image_elements:
try:
# 이미지 콘텐츠 가져오기
if image.path:
with open(image.path, 'rb') as file:
image_data = file.read()
else:
image_data = image.content
# 사용자 질문 받기
user_question = message.content or '이 이미지에 대해 질문이 없습니다.'
# Ollama에 이미지 및 사용자 질문 전송
response = ollama.chat(
model='llama3.2-vision', # 필요에 따라 모델 이름 업데이트
messages=[
{
'role': 'user',
'content': user_question,
'images': [image_data],
},
],
)
# 분석 결과와 이미지 표시
await cl.Message(
content=response['message']['content'],
elements=[
cl.Image(
name="분석된 이미지",
content=image_data,
display="inline"
)
]
).send()
except Exception as e:
await cl.Message(
content=f"이미지 처리 중 오류 발생: {str(e)}"
).send()
4. 코드실행: 코드를 실행하면 http://localhost:8000/에서 다음과 같은 Llama3.2-vision 대화 웹페이지가 열립니다.
chainlit run app.py
Llama3.2-vision 테스트
다음은 Llama3.2-vision의 이미지 인식, 텍스트 추출, 추론 및 코딩성능을 테스트해 보겠습니다. 테스트는 위에서 만든 챗봇과 OpenWebUI를 활용하였습니다.
먼저, 챗봇을 이용한 텍스트 추출 테스트에서 Llama3.2-vision은 아래 화면과 같이 이미지 내의 모든 텍스트를 누락 없이 추출하였으며, 이미지도 잘 이해하고 답변하였습니다.
OpenWebUI를 이용한 테스트에서 Llama3.2-vision 모델은 아래 화면과 같이 사용자가 입력한 이미지를 상세하고 정확하게 잘 설명하였으며, 이미지와 텍스트가 혼합된 Hard 난이도 Python 코딩 질문에도 정확하게 답변하였습니다.
다음은 ComfyUI에서 Llama3.2-vision 모델이 이미지를 설명하도록 하고, 설명내용을 텍스트 프롬프트에 입력하여 Flux모델로 이미지를 생성해 보았습니다. Llama3.2-vision이 이미지를 잘 설명할수록, 원본과 유사한 이미지가 생성되겠죠?
테스트 결과 Llama3.2-vision 모델은 이미지를 잘 설명하였으며, 이 설명을 바탕으로 Flux가 생성한 이미지도 원본 이미지의 장소와 색상, 주인공을 잘 표현하였습니다. 다음은 Llama3.2-vision 모델이 해변의 여성 이미지를 설명한 내용입니다.
The image depicts a serene and idyllic scene of a woman standing on a beach at sunset. The overall atmosphere is one of tranquility and relaxation, with the warm glow of the setting sun casting a golden light over the entire scene.
* A woman:
+ Standing in the foreground of the image
+ Facing towards the camera with a slight smile
+ Her long brown hair is blowing gently in the breeze
+ She is wearing a white dress that complements her skin tone
* The sun:
+ Setting over the ocean in the background
+ Casting a warm orange glow over the entire scene
+ Creating a sense of depth and dimensionality
* The beach:
+ Stretching out behind the woman
+ With a few scattered rocks and pebbles along the shoreline
+ Reflecting the warm colors of the sunset
* The ocean:
+ Calm and peaceful in the background
+ With gentle waves lapping at the shore
+ Creating a soothing and relaxing atmosphere
Overall, the image presents a picturesque and idyllic scene that evokes feelings of serenity and tranquility. The combination of the warm sunset, calm ocean, and peaceful beach creates a sense of harmony and balance, making it an appealing and calming visual experience.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
맺음말
오늘은 이미지 이해 및 추론 능력을 갖춘 강력한 멀티모달 모델, Llama3.2-vision에 대해 알아보았습니다. Llama3.2-vision은 텍스트와 이미지를 함께 사용하는 다양한 작업에 활용될 수 있으며, 오픈 소스 및 상용 모델들을 능가하는 성능을 기반으로 멀티모달 모델 분야에서 다양한 방식으로 활용될 것으로 기대됩니다.
Llama3.2-vision 모델을 테스트해 본 후기는 다음과 같습니다.
- 8GB/55GB에 달하는 용량을 가진 11B/90B모델은 높은 GPU성능을 요구한다.
- webp 이미지 형식은 지원하지 않는다.
오늘 블로그는 여기까지입니다. 여러분이 Llama3.2-vision 모델을 활용하시는데 도움이 되었기를 바라면서 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다.
2024.09.28 - [AI 언어 모델] - 👁️🤖Llama 3.2: 에지 컴퓨팅과 비전까지 확장한 Meta의 AI 모델
'AI 언어 모델' 카테고리의 다른 글
🚀Athene-V2 : GPT-4o를 넘어선 최신 오픈소스 모델 ! (+무료 API) (10) | 2024.11.30 |
---|---|
🤖💪Qwen2.5 Coder 32B: 오픈소스로 GPT-4o급 성능에 아티팩트까지! (50) | 2024.11.14 |
✨Claude 3.5 Haiku: Anthropic 최고 가성비 AI 모델 분석 및 테스트 (19) | 2024.11.07 |
🎨Stable Diffusion 3.5: 향상된 이미지 품질과 프롬프트 정확도로 업그레이드된 최신 텍스트-이미지 AI (14) | 2024.10.27 |
🎙️Spirit LM: 풍부한 감정을 표현하는 Meta의 최신 음성 모델 (32) | 2024.10.23 |