[실습] 2-4 여러 Pipeline

* 웹 서버에 파이프라인 사용

1. 시각적 파이프라인

시각적 작업에 pipeline()을 사용하는 방법도 이전 방법들과 거의 동일합니다. 작업을 지정하고 이미지 분류기에 이미지를 전달합니다. 이미지는 링크, 로컬 경로 또는 base64로 인코딩된 이미지일 수 있습니다.

pipeline() 을 사용하여 아래 고양이사진을 어떻게 판단하는지 분류해보겠습니다.

>>> from transformers import pipeline

>>> vision_classifier = pipeline(model="google/vit-base-patch16-224")
>>> preds = vision_classifier(
...     images="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> preds
[{'score': 0.4335, 'label': 'lynx, catamount'}, {'score': 0.0348, 'label': 'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor'}, {'score': 0.0324, 'label': 'snow leopard, ounce, Panthera uncia'}, {'score': 0.0239, 'label': 'Egyptian cat'}, {'score': 0.0229, 'label': 'tiger cat'}]

모델은 위 사진을 링스(스라소니), 고양이과의 야생 동물, 고양이일 확률이 43% 확률이라고 예측했습니다.


2. 텍스트 파이프라인

자연어처리(NLP) 작업에 pipeline()을 사용하는 것도 거의 동일합니다.

>>> from transformers import pipeline

>>> # This model is a `zero-shot-classification` model.
>>> # It will classify text, except you are free to choose any label you might imagine
>>> classifier = pipeline(model="facebook/bart-large-mnli")
>>> classifier(
...     "I have a problem with my iphone that needs to be resolved asap!!",
...     candidate_labels=["urgent", "not urgent", "phone", "tablet", "computer"],
... )
{'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['urgent', 'phone', 'computer', 'not urgent', 'tablet'], 'scores': [0.504, 0.479, 0.013, 0.003, 0.002]}

3. 멀티모달 파이프라인

pipeline()은 둘 이상의 모달리티를 지원합니다. 예를 들어, 시각적 질문 답변(VQA) 작업은 텍스트와 이미지를 결합합니다. 원하는 이미지 링크와 이미지에 대해 묻고 싶은 질문을 자유롭게 사용할 수 있습니다. 이미지는 이미지의 URL 또는 로컬 경로일 수 있습니다.

>>> from transformers import pipeline

>>> vqa = pipeline(model="impira/layoutlm-document-qa")
>>> vqa(
...     image="https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png",
...     question="What is the invoice number?",
... )
[{'score': 0.42515, 'answer': 'us-001', 'start': 16, 'end': 16}]

위의 예제를 실행하려면 Transformers 외에도 pytesseract가 설치되어 있어야 합니다:

sudo apt install -y tesseract-ocr
pip install pytesseract

 

 Hugging Face 공식문서 인용 - https://huggingface.co/docs

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유