AI 기반 기술이 발전함에 따라 이미지 분석은 점점 더 정교해지고 있으며, 이를 통해 시각적 데이터에서 더 심층적인 인사이트를 얻을 수 있습니다. 머신 러닝 모델의 발전으로 AI는 업로드된 이미지를 처리하고, 메타데이터를 추출하고, 콘텐츠 조정을 대규모로 지원할 수 있습니다. 또한 이러한 분석 도구는 가격 책정, 시각적 최적화, 이미지 생성과 같은 애플리케이션에 대한 예측 모델링에 기여하여 워크플로를 보다 비용 효율적이고 원활하게 만들어 줍니다. AI는 데이터 기반 접근 방식을 통합함으로써 자동화 및 의사 결정을 강화하여 지능형 시각적 해석을 위한 새로운 가능성을 제공합니다.
컴퓨팅 비전과 고급 AI의 급속한 발전으로 기업과 연구자들은 다양한 애플리케이션에 이미지 기반 기술을 활용하고 있습니다. 이미지 분류와 OCR(광학 문자 인식)부터 세그멘테이션, 동영상 분석에 이르기까지 AI 기반 도구는 시각 정보를 추출·분석하는 방식을 혁신하고 있습니다.
소셜 미디어와 같은 산업에서 AI는 픽셀 수준에서 이미지를 분석하여 규정 준수를 보장하고 참여도를 개선하여 콘텐츠 검토를 강화합니다. 또한 기업은 Vision API를 활용하여 문서 처리를 자동화하고 스캔한 파일, Excel, 보고서를 구조화된 데이터로 변환할 수 있습니다. 이러한 애플리케이션은 워크플로를 간소화하고 효율성을 개선하며, 조직이 대규모 시각 데이터 세트에서 의미 있는 인사이트를 추출할 수 있도록 지원합니다.
이러한 사용 사례는 산업 전반에 걸쳐 AI 기반 이미지 분석의 역할이 커지고 있음을 보여줍니다. 이 튜토리얼에서는 이러한 기능을 PowerPoint 프레젠테이션에 적용하고, 컴퓨팅 비전 및 AI 모델을 사용하여 텍스트와 이미지에 대한 인터랙티브 Q&A를 지원하는 데 중점을 둡니다.
대규모 언어 모델(LLM)은 방대한 비정형 텍스트 데이터 세트에서 지능적인 인사이트를 도출할 수 있게 하여, 머신 러닝 분야에 혁신을 가져왔습니다. 그러나 기존 LLM은 이미지 분석에 어려움을 겪는 경우가 많아 프레젠테이션의 차트, 다이어그램, 시각적 요소에서 인사이트를 추출하는 데 어려움을 겪습니다.
IBM Granite Vision 3.2 대규모 언어 모델(LLM)은 AI 도구와 고급 객체 감지 알고리즘을 통합하여 사용자가 멀티모달 분석을 자동화할 수 있도록 함으로써 이러한 격차를 해소합니다. 이 튜토리얼에서는 AI를 사용하여 PowerPoint(.pptx) 파일에서 텍스트와 이미지를 추출하고 분석해 워크플로를 간소화하고, 인터랙티브 Q&A를 통해 프레젠테이션 인사이트를 강화하는 방법을 보여 줍니다.
이 튜토리얼에서는 텍스트와 이미지를 모두 컨텍스트로 사용하여 PowerPoint 슬라이드에서 실시간 사용자 쿼리에 응답할 수 있는 AI 기반 시스템을 구축하는 방법을 알아봅니다. 이 튜토리얼에서 안내하는 내용은 다음과 같습니다.
PowerPoint 처리: AI 기반 분석을 위해 .pptx 파일에서 텍스트와 이미지를 추출합니다.
텍스트 기반 Q&A: Granite Vision을 사용하여 추출된 슬라이드 텍스트를 기반으로 답변을 생성합니다.
이미지 기반 Q&A: AI에게 슬라이드의 이미지, 차트, 다이어그램을 분석하도록 요청합니다.
최적화된 질문 구성: 정확하고 관련성 높은 AI 응답을 위해 효과적인 질문을 만드는 방법을 알아봅니다.
이 튜토리얼에서는 다음과 같은 최첨단 AI 기술을 활용합니다.
1. IBM Granite Vision: 텍스트와 이미지를 모두 처리하는 강력한 비전 언어 모델 (VLM).
2. Python-PPTX: PowerPoint 파일에서 텍스트와 이미지를 추출하기 위한 라이브러리.
3. Transformers: AI 모델 입력을 효율적으로 처리하는 프레임워크.
이 튜토리얼을 마치면 다음 목표를 달성할 수 있습니다.
1. PowerPoint 콘텐츠(텍스트 및 이미지)를 추출하고 처리합니다.
2. 슬라이드 콘텐츠의 AI 기반 Q&A에 Granite vision 3.2 모델을 사용합니다.
3. AI에게 텍스트와 이미지에 관한 통찰력 있는 질문을 합니다.
4. AI 기반 설명을 통해 사용자와 프레젠테이션 간의 상호 작용을 향상합니다.
이 튜토리얼은 AI 기반 인사이트로 프레젠테이션을 향상하고자 하는 AI 개발자, 연구원, 콘텐츠 제작자, 비즈니스 전문가를 위해 마련되었습니다.
watsonx.ai 프로젝트를 생성하려면 IBM Cloud 계정이필요합니다.
여러 툴 중에서 선택할 수 있지만, 이 튜토리얼에서는 Jupyter Notebook을 사용하기 위해 IBM 계정을 설정하는 방법을 안내합니다.
IBM Cloud 계정을 사용하여 watsonx.ai에 로그인합니다.
2. watsonx.ai 프로젝트를 생성합니다. 프로젝트 내에서 프로젝트 ID를 가져올 수 있습니다. Manage(관리) 탭을 클릭합니다. 그런 다음 General(일반) 페이지에 있는 Details(세부 정보) 섹션에서 project ID(프로젝트 ID)를 복사합니다. 이 튜토리얼에는 이 ID가 필요합니다.
3.Jupyter Notebook 을 만듭니다.
4. PPTX 파일을 watsonx.ai에서 에셋으로 업로드합니다.
이 단계에서는 이 튜토리얼의 코드를 복사할 수 있는 노트북 환경이 열립니다. 또는 이 노트북을 로컬 시스템에 다운로드하여 watsonx.ai 프로젝트에 에셋으로 업로드할 수 있습니다. 이 튜토리얼은 Github에서도 제공됩니다.
참고: 이 튜토리얼에서는 코드를 실행하기 위한 GPU 인프라가 필요하므로 이 튜토리얼에 설명된 대로 watsonx.ai를 사용하는 것이 좋습니다.
PowerPoint 콘텐츠를 추출하고 처리하기 전에 필요한 Python 라이브러리를 설치해야 합니다.
transformers: IBM Granite Vision 및 기타 AI 모델에 대한 액세스를 제공합니다.
torch: 모델을 효율적으로 실행하는 데 필요한 딥 러닝 프레임워크입니다.
python-pptx: PowerPoint(.pptx) 파일에서 텍스트와 이미지를 추출하는 라이브러리입니다.
다음 명령을 실행하여 이러한 패키지를 설치하고 업그레이드합니다.
이 단계에서는 PowerPoint 파일을 처리하고, 이미지를 다루고, IBM Granite Vision 모델과 상호 작용하는 데 필요한 라이브러리를 가져옵니다.
이 단계에서는 클라우드에 저장된 PowerPoint 파일에 액세스하고 검색하기 위해 IBM Cloud Object Storage 연결을 설정합니다.
IBM Cloud Object Storage를 최대한 활용할 수 있는 기능이 추가된 boto3 라이브러리 포크를 통해 Python 지원을 활용할 수 있습니다. 이러한 자격 증명을 받으려면 공식 문서를 확인하세요.
ibm_boto3.client: IBM Cloud Object Storage와 상호 작용할 클라이언트를 생성합니다.
ibm_api_key_id: 인증을 위한 IBM Cloud API 키.
ibm_auth_endpoint: IBM Cloud의 인증 엔드포인트.
endpoint_url: 특정 Cloud Object Storage(COS) 스토리지 엔드포인트.
참고: watsonx.ai에서 에셋으로 파일을 업로드하면 자동으로 IBM Cloud Object Storage에 저장됩니다. 나중에 Jupyter Notebook으로 파일을 가져오면 watsonx.ai는 필요한 자격 증명(API 키, 인증 엔드포인트, 스토리지 엔드포인트)을 생성해 노트북에 삽입합니다. 제공된 IBM Cloud Object Storage 자격 증명을 사용하면 스토리지에서 파일에 안전하게 접근할 수 있으며, watsonx.ai 애셋과 노트북 환경을 원활하게 통합해 추가 처리를 수행할 수 있습니다.
이 연결을 구성하면 AI 기반 분석을 위해 IBM Cloud에 저장된 PowerPoint 프레젠테이션을 원활하게 가져오고 처리할 수 있습니다.
이 단계에서는 IBM Cloud Object Storage 버킷과 파일 세부 정보를 지정하여 처리할 PowerPoint 프레젠테이션(.pptx)을 찾아 검색합니다.
이 공식 문서에서 IBM Cloud UI를 통한 버킷 구성 세부 정보를 확인하세요.
bucket: 파일이 저장된 IBM Cloud Object Storage 버킷의 이름.
object_key: 액세스할 PowerPoint 프레젠테이션의 정확한 파일 이름
이 단계에서는 IBM Cloud Object Storage에서 파워포인트(.pptx) 파일을 다운로드하여 로컬에서 처리합니다.
cos_client.get_object(): 지정된 버킷 및 객체 키에서 파일을 검색합니다.
streaming_body.read(): 파일 내용을 바이트 스트림으로 읽어 추가 처리에 사용합니다.
이 단계에서는 다운로드한 PowerPoint 파일(.pptx)을 로컬에 저장하여 처리할 수 있도록 합니다.
pptx_path: 프레젠테이션이 저장될 로컬 파일 이름을 정의합니다.
open(pptx_path, 'wb'): 파일을 바이너리 쓰기 모드로 열어 검색된 바이트를 저장합니다.
f.write(pptx_bytes): 다운로드한 파일 콘텐츠를 새로 만든 .pptx 파일에 씁니다.
이 단계에서는 PowerPoint 파일이 성공적으로 저장되었는지 확인하기 위해 확인 메시지를 출력합니다. `print` 함수는 .pptx 파일이 로컬에 저장된 파일 경로를 표시합니다.
이 단계에서는 PowerPoint 파일(.pptx)을 처리하고 그 콘텐츠를 추출하는 함수를 정의합니다.
slide_texts: 각 슬라이드에서 추출된 텍스트를 저장합니다.
slide_images: 추출한 이미지를 해당 슬라이드 번호와 함께 Python Imaging Library(PIL) 이미지 객체로 저장합니다.
슬라이드를 반복하여, 텍스트가 포함된 도형과 슬라이드에 삽입된 이미지에서 텍스트를 추출합니다.
이 함수는 PPT에서 텍스트와 이미지를 분리하여 채팅 에이전트가 추출된 콘텐츠를 기반으로 사용자의 질문에 쉽게 답변할 수 있도록 합니다.
이 단계에서는 저장된 PowerPoint 파일에서 텍스트와 이미지를 추출하는 함수를 호출합니다.
pptx_path: 다운로드한 PowerPoint 파일의 로컬 경로를 지정합니다.
extract_text_and_images_from_pptx(pptx_path): 슬라이드에서 텍스트와 이미지를 추출합니다.
slide_texts: 모든 슬라이드에서 추출한 텍스트를 저장합니다.
slide_images: 추출한 이미지를 저장합니다.
이 단계에서는 각 슬라이드에서 추출된 텍스트를 출력하여 PowerPoint 콘텐츠가 올바르게 처리되었는지 확인합니다.
enumerate(slide_texts): 추출된 텍스트를 반복하여 각 텍스트를 해당 슬라이드 번호와 연결합니다.
구분자('-' * 40): 콘텐츠를 다른 슬라이드와 시각적으로 구분하는 데 도움이 됩니다.
이 단계에서는 PowerPoint 슬라이드에서 추출된 이미지를 확인하고 시각화합니다.
len: 추출된 총 이미지 수를 계산합니다.
img.show(): 검토를 위해 추출된 각 이미지를 엽니다.
`.show()`를 `.save('filename.png')`로 대체하여 이미지를 로컬에 저장할 수 있습니다.
이 단계에서는 AI 기반 텍스트 및 이미지 처리를 위해 IBM Granite-Vision-3.2-2B 모델을 를 초기화합니다.
MODEL_NAME은 사용할 사전 학습된 Granite Vision 모델을 지정하고 torch.cuda.is_available()은 더 빠른 처리를 위해 GPU(CUDA)를 사용할 수 있는지 확인합니다. 사용 불가 시 기본적으로 CPU가 사용됩니다.
이 단계에서는 IBM Granite Vision 모델과 해당 프로세서를 로드하여 텍스트와 이미지 입력을 모두 처리합니다.
AutoProcessor.from_pretrained(MODEL_NAME, trust_remote_code=True): 사전 학습된 프로세서를 로드하여 모델의 입력(텍스트 및 이미지)을 처리 가능한 형태로 변환합니다.
AutoModelForVision2Seq.from_pretrained(MODEL_NAME, trust_remote_code=True, ignore_mismatched_sizes=True).to(device): Granite Vision 모델을 로드하고 사용 가능한 장치(GPU 또는 CPU)로 전송합니다.
이 경우 다음 옵션을 사용합니다.
trust_remote_code=True: 커스텀 모델 구현과의 호환성을 보장합니다.
ignore_mismatched_sizes=True: 모델 크기에 작은 불일치가 있어도 오류가 발생하지 않도록 합니다.
참고: 로드하는 데 시간이 걸릴 수 있습니다.
이 단계에서는 사용자가 PowerPoint 슬라이드에서 추출된 텍스트를 기반으로 질문할 수 있는 채팅 함수를 만듭니다.
작동 방식:
이 단계에서는 사용자가 PowerPoint 슬라이드에서 추출한 개별 이미지에 대해 질문할 수 있는 채팅 함수를 만듭니다.
작동 방식:
이 단계에서는 chat_with_text 함수를 호출하여 사용자가 PowerPoint 슬라이드에서 추출된 텍스트에 대해 질문할 수 있도록 합니다.
작동 방식:
아웃풋
질문: 통합은 조직의 경쟁 우위가 될 수 있나요?
<|어시스턴트|>
네, 통합은 조직의 경쟁 우위입니다. 통합은 빠르게 움직이고 문제를 극복하는 데 도움이 됩니다. 하지만 비용 증가, 비효율성, 보안 위험, 열악한 사용자 경험으로 이어질 수 있으며, 궁극적으로 빠르게 변화하는 비즈니스 환경에서 조직의 경쟁력과 성공 능력을 위태롭게 할 수 있습니다.
프레젠테이션 텍스트를 기반으로 질문을 입력하세요(또는 종료하려면 'exit'를 입력하세요): exit
사용자가 "통합은 조직의 경쟁 우위가 될 수 있나요?"라고 질문했을 때, Granite Vision 모델은 추출된 PowerPoint 슬라이드 텍스트를 사용하여 쿼리를 처리하고 응답을 생성했습니다.
이 모델은 '통합'을 비즈니스 개념으로 인식하고 `slide number 7`에서 이점과 위험을 모두 설명하는 구조화된 답변을 제공했습니다. 통합이 속도와 문제 해결 능력을 향상시킨다는 점을 강조했지만, 효과적으로 관리되지 않으면 비용 증가, 비효율성, 보안 위험, 사용자 경험 저하와 같은 잠재적 단점도 있음을 지적했습니다.
이 응답은 추출된 슬라이드 텍스트를 해석하며, 맥락에 맞게 관련 있고 균형 잡힌 답변을 생성하는 모델의 능력을 보여줍니다.
이 단계에서는 chat_with_images 함수를 호출하여 사용자가 PowerPoint 슬라이드에서 추출한 이미지에 대해 질문할 수 있도록 합니다.
작동 방식:
아웃풋
프레젠테이션 이미지를 기반으로 질문하세요(또는 종료하려면 'exit'를 입력하세요): 이 이미지는 무엇인가요?
슬라이드 번호(1~41)를 입력하여 이미지에 대해 물어보세요: 2
모델 응답: <|시스템|>
호기심 많은 사용자와 인공 지능 어시스턴트 간의 채팅입니다. 어시스턴트는 사용자의 질문에 대해 유용하고 상세하며 정중한 답변을 제공합니다.
<|사용자|>
이 이미지는 무엇인가요?
<|어시스턴트|>
3D 모델
프레젠테이션 이미지를 기반으로 질문하세요(또는 종료하려면 'exit'를 입력하세요): 이 이미지를 설명해 주세요
슬라이드 번호(1~41)를 입력하여 이미지에 대해 물어보세요: 2
모델 응답: <|시스템|>
호기심 많은 사용자와 인공 지능 어시스턴트 간의 채팅입니다. 어시스턴트는 사용자의 질문에 대해 유용하고 상세하며 정중한 답변을 제공합니다.
<|사용자|>
이 이미지를 설명해 주세요
<|어시스턴트|>
이미지는 큐브의 3D 모델입니다
프레젠테이션 이미지를 기반으로 질문하세요(또는 종료하려면 'exit'를 입력하세요): 이 차트를 설명해 주시겠어요?
슬라이드 번호(1~41)를 입력하여 이미지에 대해 질문하세요: 1
모델 응답: <|시스템|>
호기심 많은 사용자와 인공 지능 어시스턴트 간의 채팅입니다. 어시스턴트는 사용자의 질문에 대해 유용하고 상세하며 정중한 답변을 제공합니다.
<|사용자|>
이 차트를 설명해 주시겠어요?
<|어시스턴트|>
'기업용 클라우드 시장의 1세대부터 4세대까지 성숙도 진행'이라는 제목의 막대 그래프입니다. X축은 세대별 진행을, Y축은 연도별 성숙도 진행을 나타냅니다. 이 차트는 세대가 거듭될수록 기업용 클라우드 시장의 성숙도가 증가함을 보여줍니다.
프레젠테이션 이미지를 기반으로 질문하세요(또는 종료하려면 'exit'를 입력하세요): exit
사용자가 이미지 관련 질문을 했을 때, Granite Vision 모델이 선택한 이미지를 처리하고 시각 콘텐츠에 대한 이해를 바탕으로 답변을 생성했습니다.
"이 이미지는 무엇인가요?"(슬라이드 2)라는 질문에서 모델은 이미지를 '3D 모델'로 식별했지만 최소한의 설명만 제공했습니다.
"이 이미지를 설명해 주세요"(슬라이드 2)의 경우 모델은 답변을 다듬어 이를 '큐브의 3D 모델'로 식별했습니다.
"이 차트를 설명해 주시겠어요?"(슬라이드 1)에서 모델은 막대형 차트에 대해 제목, X축, Y축, 전반적인 추세를 포함한 자세한 설명을 제공하며, 세대별로 엔터프라이즈 클라우드 성숙도가 어떻게 진행되는지를 보여주었습니다.
이 단계에서는 사용자가 IBM Granite Vision 모델을 활용하여 차트, 다이어그램, 인포그래픽 등 시각적 요소와 상호 작용하고, 지능형 분석 및 설명을 받을 수 있습니다.
이 튜토리얼은 IBM Granite Vision이 이미지를 해석하는 기능을 보여줍니다.