Paligemma 2 믹스를 사용하여 의료 처방 스캐너 구축

Paligemma 2 믹스를 사용하여 의료 처방 스캐너 구축

오늘날의 빠르게 진행되는 비즈니스 세계에서 생성 AI와 같은 최첨단 기술을 활용하면 비즈니스 운영을 크게 향상시킬 수 있습니다. Paligemma 2 Mix와 같은 비전 언어 모델은 비즈니스에 시각적 데이터와 텍스트 데이터 사이의 격차를 해소하는 강력한 방법을 제공합니다. 고급 Siglip Vision 모델과 Gemma 2 언어 모델을 결합함으로써 Paligemma 2는 이미지 캡션, 시각적 질문 응답, OCR, 객체 감지 및 세분화와 같은 작업을 탁월한 정확도로 탁월합니다. Paligemma 2 믹스를 차별화하는 것은 플러그 앤 플레이 기능입니다. 광범위한 미세 조정이 필요한 이전 모델과 달리이 도구는 다양한 작업에서 즉시 응용 프로그램을 사용할 수 있습니다. 다중 구성 (3B, 10B 및 28B 매개 변수) 및 해상도 (224 × 224 및 448 × 448)로 제공되면 특정 비즈니스 요구와 계산 능력을 정렬 할 수있는 유연성을 제공합니다.

학습 목표

  • Paligemma 2 믹스 모델의 아키텍처 및 주요 구성 요소를 이해하십시오.
  • 시력 대상 처리에서 Paligemma 2와 Siglip의 차이점을 탐색하십시오.
  • Paligemma 2가 다중 모드 작업을 위해 믹스하는 교육 데이터 세트에 대해 알아보십시오.
  • OCR, 객체 감지 및 이미지 캡션과 같은 작업에서 Paligemma 2 Mix의 기능을 발견하십시오.
  • 실습 파이썬 튜토리얼에서 Paligemma 2 믹스를 사용하여 의료 처방 스캐너를 구축하십시오.

이 기사는의 일부로 출판되었습니다 데이터 과학 블로그.

Paligemma 2와 그 아키텍처 이해

2024 년 12 월 Google에서 발표 한 Paligemma 2는 Paligemma Vision Language 모델의 반복이었습니다. Paligemma 2는 강력한 Siglip 이미지 인코더를 Gemma 2 언어 모델과 연결합니다.

Paligemma의 주요 구성 요소 2

Paligemma 2의 주요 구성 요소를 이해합시다.

  • Siglip의 이미지 엔코더: Siglip의 이미지 엔코더는 Paligemma 2에서 이미지를 처리하는 데 사용됩니다. 이미지 인코더는 텍스트 및 이미지 인코더를 포함하는 Siglip 절차를 기반으로하는 대비 학습을 사용하여 이미지 텍스트 쌍에서 사전에 사기입니다. 이미지 인코더를 Pali에 통합 할 때 텍스트 인코더가 폐기됩니다.
  • 매핑 이미지 임베딩: 시각적 인코더의 출력 임베딩은 선형 투영을 사용하여 Gemma 2 입력 공간에 매핑됩니다.
  • 텍스트 임베딩과 이미지 임베딩을 병합하십시오:이 시스템은 시각적 임베딩을 텍스트 프롬프트와 결합하여 Gemma 2 언어 모델에 공급 한 다음 모델에서 자동으로 샘플링하여 예측을 생성합니다.
  • 멀티 모달 작업에 대한 미세 조정 : 후속 교육 단계에서 연구원들은 다양한 해상도 (224px², 448px² 및 896px²)에서 캡션, 시각적 질문 답변 및 OCR을 포함한 다양한 다중 모드 작업에 대한 모델을 훈련시킵니다.

Paligemma 2는 Siglip과 어떻게 다릅니 까?

Siglip은 이미지 또는 비디오와 같은 시각적 데이터를 분석 가능한 기능으로 분류하여 시각적 데이터를 처리하는 비전 인코더입니다. 이미지에서 시각적 토큰을 추출하고 이미지 분류, 객체 감지 및 OCR과 같은 작업에 사용합니다. Siglip은 Siglip 2로 진화하여 성능 향상과 동적 해상도를위한 새로운 변형을 제공합니다.

Paligemma 2는 Siglip Vision 인코더를 Gemma 2 언어 모델과 통합하는 VLM (Vision-Language Model)입니다. 시각적 및 텍스트 데이터를 결합하여 이미지 캡션, 시각적 질문 응답 및 OCR과 같은 작업을 수행하여 시각적 분석을위한 Siglip 인코더와 텍스트 이해를위한 Gemma 2 모델을 모두 활용합니다.

Paligemma에 대한 훈련 데이터 2

Paligemma 2는 다양한 기능을 지원하기 위해 광범위한 데이터 세트에 대해 교육을 받았습니다. 여기에는 Visual Semantics 및 Object Localization과 같은 작업을위한 다국어 이미지 텍스트 데이터 세트 인 Webli가 포함됩니다. CC3M-35L은 여러 언어로 이미지 -Alt-Text 쌍을 특징으로합니다. 및 vq²a-cc3m-35L, 이미지와 관련된 질문 응답 쌍이있는 서브 세트. 또한 탐지 작업 및 객체 인식 Q & A 쌍에 개방형을 사용하고 Wikipedia에서 파생 된 데이터 세트와 해당 텍스트가 있습니다. 이 데이터 세트는 함께 이미지 이해 및 다국어 텍스트 해석과 같은 작업에 Paligemma 2를 장비합니다.

Paligemma 2 믹스와 주요 차별화 기능

이제 아래에서 Paligemma 2 믹스를 탐색하겠습니다.

Finetuned Pali Gemma 2

두 모델 인 Paligemma 2와 Paligemma 2 믹스는 유사한 아키텍처를 공유하지만 Paligemma 2는 미세 조정 없이도 여러 작업에서 즉각적인 사용을 위해 성능을 최적화합니다. 따라서 개발자가 비전 언어 기능을 응용 프로그램에 빠르게 통합하는 데 더 편리합니다.

Paligemma 2 Mix는 각각 모델 크기 및 입력 해상도가 다르며 여러 변형으로 제공됩니다. 이러한 변형을 통해 사용자는 계산 리소스 및 작업 복잡성을 기반으로 특정 요구에 가장 적합한 모델을 선택할 수 있습니다.

모델 크기 :

  • 3B 매개 변수 : 작고 자원 효율적이며 제한된 환경에 이상적입니다.
  • 10B 매개 변수 : 미드 계층 계산 설정을위한 균형 잡힌 옵션.
  • 28b 매개 변수: 대기 시간 제약 조건이없는 고성능 작업을 위해 설계되었습니다.

결의 :

  • 224 × 224 : 덜 상세한 시각적 분석이 필요한 작업에 적합합니다.
  • 448 × 448 : 보다 정확한 이미지 처리가 필요한 작업에 대한 해상도를 제공합니다.

Paligemma 2 믹스를 사용한 작업 범위

Paligemma 2 믹스 모델은 광범위한 작업을 처리 할 수 ​​있습니다. 이러한 작업은 하위 작업을 기반으로 다음 범주로 그룹화 할 수 있습니다.

  • 비전 언어 작업 : 이미지에 대한 질문에 대답하고 시각적 콘텐츠 참조
  • 문서 이해 : 인포 그래픽, 차트 및 다이어그램 이해에 대한 질문에 답변합니다
  • 이미지에서 텍스트 추출 : 텍스트 감지, 텍스트가 포함 된 이미지가 포함 된 이미지 캡션, 텍스트가 포함 된 이미지와 관련된 질문에 답변
  • 현지화 작업 : 객체 감지, 이미지 분할 수행

Paligemma 2 믹스를 사용하여 의료 처방 스캐너 구축

다음 자습서에서는 Paligemma 2 Mix 모델을 사용하여 의료 처방에서 정보를 추출하는 쿼리 시스템을 만듭니다. 우리는 스캔 한 의사의 처방전에서 정보를 추출하는 데 어떻게 성능을 보일 것입니다. T4 GPU (무료 계층)로 Google Colab에서 다음 코드를 실행할 수 있습니다. 전체 코드는이 Colab 노트북에 나와 있습니다.

1 단계 : 필요한 라이브러리를 설치하십시오

필요한 라이브러리를 먼저 설치하겠습니다.

!pip install -U bitsandbytes -U transformers -q

코드는 두 개의 파이썬 라이브러리, 비트 산비 테스 및 변압기를 설치하거나 업데이트합니다. Bitsandbytes는 기계 학습 모델, 특히 양자화 작업에 대한 메모리 사용량을 최적화하는 라이브러리입니다. 트랜스포머 모델은 포옹 얼굴에서 모델을 가져 오는 데 사용됩니다.

2 단계 : 필요한 라이브러리를 가져옵니다

다음 단계는 필요한 모든 필요한 라이브러리를 가져 오는 것입니다.

import torch
import pandas as pd
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor, BitsAndBytesConfig
from transformers import BitsAndBytesConfig
from PIL import Image
from transformers.image_utils import load_image
import requests
from io import BytesIO

다음 코드 블록을 여기에서 실행하는 데 필요한 모든 라이브러리를 가져옵니다.

3 단계 : 포옹 얼굴 API 토큰 설정

이 모델은 포옹 얼굴에 게이트 리포지어에 있으므로 얼굴 포옹에 대한 미세한 액세스 토큰을 만들고 “액세스 할 수있는 모든 공개 게이트 리포지토리의 내용에 대한 액세스를 읽습니다”.

import os
os.environ["HF_TOKEN"]=""

다음 단계를 실행하기 전에 위 코드 에서이 API 토큰을 정의 할 수 있습니다.

5 단계 : 모델로드

448 × 448 입력 이미지를 사용하여 학업 과제의 혼합에 미세 조정 된 모델 Google/Paligemma2-10B-Mix-448 모델을 여기에로드했습니다.

model_id = "google/paligemma2-10b-mix-448" 
bnb_config = BitsAndBytesConfig(
    load_in_8bit=True,  # Change to load_in_4bit=True for even lower memory usage
    llm_int8_threshold=6.0,
)

# Load model with quantization
model = PaliGemmaForConditionalGeneration.from_pretrained(
    model_id, quantization_config=bnb_config
).eval()
processor = PaliGemmaProcessor.from_pretrained(model_id)

#Set the following for avoiding an error on " Dynamic control flow is not supported at the moment"

model.forward = torch.compile(model.forward, mode="reduce-overhead", fullgraph=False)

STEP6 : 이미지를로드합니다

URL에서 샘플 스캔 문서를 가져와 필요한 경우 RGB 형식으로 변환 한 후 처리를 위해 표시합니다.

# URL of the image
url = "

# Send a GET request to the URL
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    # Load the image from the response content
    img = Image.open(BytesIO(response.content))
    img.show()
else:
    print("Failed to retrieve the image.")


def ensure_rgb(image: Image.Image) -> Image.Image:
    if image.mode != "RGB":
        image = image.convert("RGB")
    return image

우리는이 스캔 된 문서를로드합니다.이 문서는 샘플 마스크 된 Aadhar 문서입니다. 그런 다음 모델을 사용 하여이 문서에서 이름을 추출하려고합니다.

입력; Paligemma 2 믹스
입력 이미지의 링크

Step7 : 스캔 한 문서에서 쿼리

텍스트 프롬프트를 만들고 입력 이미지와 텍스트를 처리하며 모델을 사용하여 응답을 생성하여 처방전 세부 정보를 추출합니다.

prompt = "Answer en Which medicines are recommended in the prescription"
model_inputs = processor(text=prompt, images=ensure_rgb(img), return_tensors="pt").to(torch.bfloat16).to(model.device)
input_len = model_inputs["input_ids"].shape[-1]

with torch.inference_mode():
    generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
    generation = generation[0][input_len:]
    decoded = processor.decode(generation, skip_special_tokens=True)
    print(decoded)

위의 코드는 입력 프롬프트와 이미지를 처리 ​​한 다음 모델에 공급하여 응답을 생성합니다. 먼저 이미지와 함께 텍스트 프롬프트를 처리하고 모델에 입력하고 주어진 컨텍스트에 따라 응답을 생성합니다. 마지막으로 출력을 해독하고 읽을 수있는 텍스트 답변으로 인쇄합니다.

산출

산출

위의 출력에서 ​​볼 수 있듯이 약 이름은 ​​문서에서 올바르게 추출되었습니다.

다른 쿼리에서 테스트

쿼리 2

# URL of the image
url = "

# Send a GET request to the URL
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    # Load the image from the response content
    img = Image.open(BytesIO(response.content))
    img.show()
else:
    print("Failed to retrieve the image.")
    
prompt = "Answer en Which diseases are mentioned in the prescription"
model_inputs = processor(text=prompt, images=ensure_rgb(img), return_tensors="pt").to(torch.bfloat16).to(model.device)
input_len = model_inputs["input_ids"].shape[-1]

with torch.inference_mode():
    generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
    generation = generation[0][input_len:]
    decoded = processor.decode(generation, skip_special_tokens=True)
    print(decoded)

입력 이미지

Query2 : Paligemma 2 믹스
입력 이미지의 링크

산출

query2의 출력

위의 결과는이 모델이 문서에서 두 가지 질병, 당뇨병 및 고혈압을 올바르게 추출했음을 보여줍니다. 그러나 “콜레스테롤”을 정확하게 추출하지 못했습니다.

쿼리 3

# URL of the image
url = "

# Send a GET request to the URL
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    # Load the image from the response content
    img = Image.open(BytesIO(response.content))
    img.show()
else:
    print("Failed to retrieve the image.")
    
prompt = "Answer en Which medicines are mentioned in the prescription"
model_inputs = processor(text=prompt, images=ensure_rgb(img), return_tensors="pt").to(torch.bfloat16).to(model.device)
input_len = model_inputs["input_ids"].shape[-1]

with torch.inference_mode():
    generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
    generation = generation[0][input_len:]
    decoded = processor.decode(generation, skip_special_tokens=True)
    print(decoded)

입력 이미지

query3; Paligemma 2 믹스
입력 이미지의 링크

산출

출력 query3

위의 출력은 모델이 문서에서 의약 이름을 추출했음을 보여 주지만 처방전에 작성된 방식으로 인해 “아스코르브 산”이 철자화되었습니다.

쿼리 4

# URL of the image
url = "

# Send a GET request to the URL
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    # Load the image from the response content
    img = Image.open(BytesIO(response.content))
    img.show()
else:
    print("Failed to retrieve the image.")
    
prompt = "Answer en Which medicines are mentioned in the prescription"
model_inputs = processor(text=prompt, images=ensure_rgb(img), return_tensors="pt").to(torch.bfloat16).to(model.device)
input_len = model_inputs["input_ids"].shape[-1]

with torch.inference_mode():
    generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
    generation = generation[0][input_len:]
    decoded = processor.decode(generation, skip_special_tokens=True)
    print(decoded)

입력 이미지

query4; Paligemma 2 믹스
입력 이미지의 링크

산출

출력 쿼리 4

위의 출력은 모델이 문서에서 의학 이름을 올바르게 추출하지 않았 음을 보여줍니다. 처방전은“Aten-D Tablet”을 언급하지만 불분명 한 필기로 인해 모델이 정확하게 감지되는 것을 막을 수 있습니다.

결론

결론적으로, Paligemma 2 Mix를 사용한 의료 처방 스캐너는 Siglip Vision Encoder 및 Gemma 2 언어 모델의 원활한 통합을 통해 시각 및 텍스트 데이터를 브리징하기위한 고급 및 다목적 솔루션을 비즈니스에 제공합니다. 플러그 앤 플레이 기능은 광범위한 미세 조정이 필요하지 않아 이미지 캡션, OCR 및 객체 감지를 포함한 광범위한 작업에 대한 즉각적인 배포에 이상적입니다. 유연한 구성 및 해상도를 통해 기업은 Paligemma 2 믹스를 사용하여 의료 처방 스캐너를 조정하여 특정 요구를 충족시키고 운영 효율성을 높이고 강력한 멀티 모드 응용 프로그램을 가능하게 할 수 있습니다.

주요 테이크 아웃

  • Paligemma 2는 Siglip Vision 인코더를 Gemma 2 언어 모델과 통합하는 VLM (Vision-Language Model)입니다.
  • 이 모델은 이미지 캡션, OCR, 시각적 질문 응답, 객체 감지 및 세분화와 같은 다양한 작업에서 탁월하며 완벽한 통합으로 탁월한 정확도를 제공합니다.
  • 이전 모델과 달리 Paligemma 2 Mix는 미세 조정이 필요하지 않으므로 여러 작업에서 즉시 적용 할 수 있도록 비즈니스를위한 시간과 노력을 절약 할 수 있습니다.
  • Paligemma 2 믹스는 다양한 모델 크기 (3B, 10B 및 28B 매개 변수) 및 해상도 (224 × 224 및 448 × 448)로 제공되므로 비즈니스는 특정 요구에 가장 적합한 구성을 선택할 수 있습니다.
  • 이 모델은 비전 언어 애플리케이션에서 문서 이해 및 텍스트 추출에 이르기까지 광범위한 작업을 처리 할 수있어 의료 및 자동화와 같은 다양한 산업에 이상적입니다.

자주 묻는 질문

Q1. paligemma2 란 무엇입니까?

A. Paligemma 2는 Siglip Vision 인코더를 Gemma 2 언어 모델과 통합하는 고급 비전 언어 모델입니다. 미세 조정이 필요없이 이미지 캡션, 시각적 질문 응답, OCR, 객체 감지 및 세분화와 같은 작업을 처리합니다.

Q2. Paligemma 2 믹스는 이전 모델과 어떻게 다릅니 까?

A. 광범위한 미세 조정이 필요한 이전 모델과 달리 Paligemma 2 Mix는 플러그 앤 플레이 솔루션으로 다양한 작업에서 즉시 사용할 수 있습니다. 이로 인해 비즈니스가 구현하기에 더 빠르고 편리합니다.

Q3. Paligemma 2 믹스의 다른 구성은 무엇입니까?

A. Paligemma 2 믹스는 3b, 10b 및 28b 매개 변수의 모델 크기와 224 × 224 및 448 × 448의 해상도를 포함하여 여러 구성으로 제공됩니다. 이를 통해 비즈니스는 계산 리소스 및 특정 작업 복잡성을 기반으로 최상의 설정을 선택할 수 있습니다.

Q4. Paligemma 2 믹스 핸들은 어떤 유형의 작업을 수행 할 수 있습니까?

A. Paligemma 2 Mix는 비전 언어 작업 (이미지에 대한 질문에 대한 답변), 문서 이해, 이미지의 텍스트 추출 및 객체 감지 및 이미지 분할과 같은 현지화 작업을 포함하여 광범위한 작업을 처리 할 수 ​​있습니다.

이 기사에 표시된 미디어는 분석 Vidhya가 소유하지 않으며 저자의 재량에 따라 사용됩니다.

Nibedita Dutta

Nibedita는 2014 년 IIT Kharagpur에서 화학 공학 석사 학위를 취득했으며 현재 선임 데이터 과학자로 일하고 있습니다. 그녀는 현재 역량에서 비즈니스 프로세스를 개선하기 위해 지능형 ML 기반 솔루션을 구축하는 작업을합니다.

계속해서 읽고 전문가가 구축 된 콘텐츠를 즐기십시오.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다