自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Phi-3-Vision-128K大模型,AI助力OCR,文檔處理更上一層樓

發(fā)布于 2024-10-15 14:17
瀏覽
0收藏

1 Phi-3-Vision-128K-Instruct 簡介

Phi-3-Vision-128K-Instruct 屬于 Phi-3 模型家族,專為多模態(tài)數(shù)據(jù)處理而構(gòu)建,支持長達(dá) 128,000 個(gè)令牌的上下文長度。該模型融合了文本和視覺數(shù)據(jù),非常適合需要同時(shí)解釋文本和圖像的任務(wù)。其開發(fā)涉及 5000 億個(gè)訓(xùn)練令牌,包括高質(zhì)量的合成數(shù)據(jù)和經(jīng)過嚴(yán)格篩選的公開可用資源。此外,通過監(jiān)督微調(diào)和偏好優(yōu)化等精細(xì)訓(xùn)練手段,Phi-3-Vision-128K-Instruct 被打造成能夠提供精確、可靠且安全的人工智能解決方案。

Phi-3-Vision-128K-Instruct 擁有42億個(gè)參數(shù),其架構(gòu)精巧,集成了圖像編碼器、連接器、投影器以及 Phi-3 Mini 語言模型,使其成為輕量級(jí)但功能強(qiáng)大的選擇,適用于廣泛的應(yīng)用。

2 應(yīng)用場景

Phi-3-Vision-128K-Instruct 模型的應(yīng)用范圍廣泛,主要聚焦在以下幾個(gè)核心領(lǐng)域:

1). 文檔提取和OCR技術(shù):能夠高效地將圖像中的文字或掃描的文檔轉(zhuǎn)換成可編輯的格式,尤其擅長處理包含表格、圖表等復(fù)雜布局的文檔。這使其成為數(shù)字化紙質(zhì)文檔或自動(dòng)化數(shù)據(jù)提取工作流程的有價(jià)值工具。

2). 圖像內(nèi)容理解:該模型能夠解析圖像內(nèi)容,識(shí)別出圖像中的對(duì)象,理解場景,并從中提取出有用的信息。

3). 資源受限環(huán)境:即使在計(jì)算能力或內(nèi)存受限的環(huán)境下,Phi-3-Vision-128K-Instruct 也能夠運(yùn)行AI任務(wù),確保性能不打折。

4). 實(shí)時(shí)應(yīng)用場景:能夠減少實(shí)時(shí)應(yīng)用程序中的處理延遲,適用于實(shí)時(shí)數(shù)據(jù)流、聊天助手或流媒體內(nèi)容分析等場景,以提高響應(yīng)速度。

3 部署 Phi-3-Vision-128K-Instruct

要使用 Phi-3-Vision-128K-Instruct,需要設(shè)置所需的庫和工具的開發(fā)環(huán)境。該模型集成在 Hugging Face transformers 庫的開發(fā)版本(4.40.2)中。在深入代碼示例之前,先確保你的 Python 環(huán)境配置了這些包:

# 所需包
flash_attn==2.5.8
numpy==1.24.4
Pillow==10.3.0
Requests==2.31.0
torch==2.3.0
torchvision==0.18.0
transformers==4.40.2

要加載模型,可以更新本地 transformers 庫。

模型加載示例

以下是一個(gè) Python 示例,展示了如何初始化模型并進(jìn)行推理。使用類和函數(shù)來保持代碼的清晰性和結(jié)構(gòu)性:

from PIL import Image
import requests
from transformers import AutoModelForCausalLM, AutoProcessor

class Phi3VisionModel:
    def __init__(self, model_id="microsoft/Phi-3-vision-128k-instruct", device="cuda"):
        """
        Initialize the Phi3VisionModel with the specified model ID and device.
        
        Args:
            model_id (str): The identifier of the pre-trained model from Hugging Face's model hub.
            device (str): The device to load the model on ("cuda" for GPU or "cpu").
        """
        self.model_id = model_id
        self.device = device
        self.model = self.load_model()  # 在初始化期間加載模型
        self.processor = self.load_processor()  # 在初始化期間加載處理器
    
    def load_model(self):
        """
        Load the pre-trained language model with causal language modeling capabilities.
        
        Returns:
            model (AutoModelForCausalLM): The loaded model.
        """
        print("Loading model...")
        # 使用自動(dòng)設(shè)備映射和數(shù)據(jù)類型調(diào)整加載模型
        return AutoModelForCausalLM.from_pretrained(
            self.model_id, 
            device_map="auto",  # 自動(dòng)將模型映射到適當(dāng)?shù)脑O(shè)備
            torch_dtype="auto",  # 根據(jù)設(shè)備使用適當(dāng)?shù)?torch 數(shù)據(jù)類型
            trust_remote_code=True,  # 允許執(zhí)行自定義代碼以加載模型
            _attn_implementation='flash_attention_2'  # 使用優(yōu)化的注意力實(shí)現(xiàn)
        ).to(self.device)  # 將模型移動(dòng)到指定的設(shè)備
    
    def load_processor(self):
        """
        Load the processor associated with the model for processing inputs and outputs.
        
        Returns:
            processor (AutoProcessor): The loaded processor for handling text and images.
        """
        print("Loading processor...")
        # 使用 trust_remote_code=True 加載處理器,以處理任何自定義處理邏輯
        return AutoProcessor.from_pretrained(self.model_id, trust_remote_code=True)
    
    def predict(self, image_url, prompt):
        """
        Perform a prediction using the model given an image and a prompt.
        
        Args:
            image_url (str): The URL of the image to be processed.
            prompt (str): The textual prompt that guides the model's generation.
        
        Returns:
            response (str): The generated response from the model.
        """
        # 從提供的 URL 加載圖像
        image = Image.open(requests.get(image_url, stream=True).raw)
        
        # 為模型格式化輸入提示模板
        prompt_template = f"<|user|>\n<|image_1|>\n{prompt}<|end|>\n<|assistant|>\n"
        
        # 處理輸入,將提示和圖像轉(zhuǎn)換為張量格式
        inputs = self.processor(prompt_template, [image], return_tensors="pt").to(self.device)
        
        # 設(shè)置模型響應(yīng)生成的生成參數(shù)
        generation_args = {
            "max_new_tokens": 500,  # 生成的最大令牌數(shù)
            "temperature": 0.7,     # 生成的采樣溫度,以增加多樣性
            "do_sample": False      # 禁用采樣以獲得確定性輸出
        }
        print("Generating response...")
        # 使用模型生成輸出 ID,跳過輸入令牌
        output_ids = self.model.generate(**inputs, **generation_args)
        output_ids = output_ids[:, inputs['input_ids'].shape[1]:]  # Ignore the input prompt in the output
        
        # 解碼生成的輸出令牌以獲得響應(yīng)文本
        response = self.processor.batch_decode(output_ids, skip_special_tokens=True)[0]
        return response

# 初始化模型
phi_model = Phi3VisionModel()

# 示例預(yù)測
image_url = "https://example.com/sample_image.png"  # 示例圖像的 URL  
prompt = "Extract the data in json format."  # 指導(dǎo)模型的提示  
response = phi_model.predict(image_url, prompt)  # 獲取模型的響應(yīng) 

print("Response:", response)  # 打印生成的響應(yīng)

上述代碼定義了 Phi3VisionModel? 類,它抽象了模型的加載和使用,使其更容易集成到你的應(yīng)用程序中。predict() 方法展示了如何使用自定義提示進(jìn)行基于圖像的推理。

4 OCR 功能測試

為了評(píng)估 Phi-3-Vision-128K-Instruct 模型的 OCR 性能,我們選取了一些真實(shí)掃描的身份證圖像作為測試樣本。這些圖像質(zhì)量參差不齊,清晰度也各不相同,給模型帶來了不同程度的挑戰(zhàn)。目標(biāo)是展示模型如何能夠從具有不同特征的文檔中提取文本信息,例如模糊、復(fù)雜的背景和不同的文本字體。

圖像 1:一本虛構(gòu)的護(hù)照,上面詳細(xì)記錄了個(gè)人資料,包括姓名、國籍、出生地、簽發(fā)日期和有效期。底部有一個(gè)可讀區(qū)域。圖像質(zhì)量高,背景噪音不明顯。

輸出:

{
  "Type/Type": "P",
  "Country code/Code du pays": "UTO",
  "Passport Number/N° de passeport": "L898902C3",
  "Surname/Nom": "ERIKSSON",
  "Given names/Prénoms": "ANNA MARIA",
  "Nationality/Nationalité": "UTOPIAN",
  "Date of Birth/Date de naissance": "12 AUGUST/AOUT 74",
  "Personal No./N° personnel": "Z E 184226 B",
  "Sex/Sexe": "F",
  "Place of birth/Lieu de naissance": "ZENITH",
  "Date of issue/Date de délivrance": "16 APR/AVR 07",
  "Authority/Autorité": "PASSPORT OFFICE",
  "Date of expiry/Date d'expiration": "15 APR/AVR 12",
  "Holder's signature/Signature du titulaire": "anna maria eriksson",
  "Passport/Passeport": "P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<<<<<L898902C36UT07408122F1204159ZE184226B<<<<10"
}

圖像 2:一本荷蘭護(hù)照,上面有清晰的持有人照片和整齊格式化的文本。字段包括護(hù)照號(hào)碼、姓名、出生日期、國籍和有效期。文件以高對(duì)比度呈現(xiàn),文本提取相對(duì)直接。底部的可讀區(qū)域(MRZ)提供了結(jié)構(gòu)化的數(shù)據(jù)格式,有助于驗(yàn)證提取信息的準(zhǔn)確性。

Phi-3-Vision-128K大模型,AI助力OCR,文檔處理更上一層樓-AI.x社區(qū)

輸出:

以下是從護(hù)照中提取的完整數(shù)據(jù),以 JSON 格式呈現(xiàn):

{
  "passport": {
    "issuingCountry": "Netherlands",
    "issuingAuthority": "Koninkrijk der Nederlanden",
    "passportNumber": "SPEC12014",
    "issuingDate": "09 MAR 2014",
    "expiryDate": "09 MAR 2024",
    "holder": {
      "gender": "F",
      "nationality": "Netherlands",
      "placeOfBirth": "SPECIMEN",
      "sex": "WF",
      "firstNames": [
        "Willem",
        "Lieselotte"
      ]
    },
    "physicalDescription": {
      "height": "1.75 m",
      "hairColor": "gray",
      "hairLength": "short"
    },
    "issuingOffice": "Burg. van Stad en Dorp",
    "issuingDateAsInt": "14032014",
    "expiryDateAsInt": "14032024",
    "fieldsExtracted": [
      {
        "code": "NL",
        "dateOfBirth": "10 MAR 1965",
        "dateOfIssue": "09 MAR 2014",
        "dateOfExpiry": "09 MAR 2024",
        "firstNames": [
          "Willem",
          "Lieselotte"
        ],
        "nationality": "Netherlands",
        "passportNumber": "SPEC12014",
        "placeOfBirth": "SPECIMEN",
        "sex": "WF"
      }
    ]
  }
}

5 在線體驗(yàn) Phi-3-Vision-128K-Instruct

如果你想親自嘗試 Phi-3-Vision-128K-Instruct 模型,你可以通過以下鏈接來體驗(yàn):https://ai.azure.com/explore/models/Phi-3-vision-128k-instruct/version/1/registry/azureml。這個(gè)鏈接可以體驗(yàn)?zāi)P偷墓δ埽瑖L試其 OCR 功能。

Phi-3-Vision-128K大模型,AI助力OCR,文檔處理更上一層樓-AI.x社區(qū)

6 架構(gòu)與訓(xùn)練

Phi-3-Vision-128K-Instruct 模型不單是一個(gè)語言模型,它是一個(gè)強(qiáng)大的多模態(tài)工具,能夠同時(shí)處理視覺和文本數(shù)據(jù)。這個(gè)模型經(jīng)歷了包含5000億個(gè)令牌的綜合訓(xùn)練,涵蓋了文本和圖像數(shù)據(jù)。其架構(gòu)巧妙地融合了語言模型和圖像處理模塊,構(gòu)建了一個(gè)能夠理解超過128K令牌上下文的連貫系統(tǒng),使之能夠應(yīng)對(duì)長篇對(duì)話或處理大量內(nèi)容的文檔。

得益于在如512 H100 GPU這樣的高性能硬件上的訓(xùn)練,以及采用flash attention技術(shù)提高內(nèi)存效率,Phi-3-Vision-128K-Instruct 模型能夠輕松駕馭大規(guī)模任務(wù)。它的訓(xùn)練數(shù)據(jù)集是合成數(shù)據(jù)和經(jīng)過篩選的真實(shí)世界數(shù)據(jù)的混合體,特別強(qiáng)調(diào)了數(shù)學(xué)、編碼、常識(shí)推理和一般知識(shí),這使模型具有廣泛的適用性,能夠適應(yīng)各種不同的應(yīng)用場景。

7 性能基準(zhǔn)

Phi-3-Vision-128K-Instruct 模型的性能已在多個(gè)基準(zhǔn)測試中進(jìn)行了測試,這些測試包括 ScienceQA、AI2D、MathVista 和 TextVQA。在涉及文本和視覺信息結(jié)合的任務(wù)上,該模型的得分普遍超越了眾多現(xiàn)有模型,特別是在以下兩個(gè)方面表現(xiàn)突出:

  • 文檔理解能力:Phi-3-Vision-128K-Instruct 能夠從復(fù)雜的文檔如 PDF 或圖像中抽取關(guān)鍵信息。
  • 表格和圖表理解:該模型能夠精確解讀圖形數(shù)據(jù),并將這些數(shù)據(jù)轉(zhuǎn)換成文字描述。

值得一提的是,在 ChartQA 數(shù)據(jù)集上,Phi-3-Vision-128K-Instruct 達(dá)到了 81.4% 的準(zhǔn)確率;在 AI2D 數(shù)據(jù)集上,也取得了 76.7% 的高分。這些成績充分證明了模型在理解數(shù)據(jù)密集型文檔方面的強(qiáng)勁實(shí)力。

結(jié)語

Phi-3-Vision-128K-Instruct 代表的不僅僅是多模態(tài)人工智能領(lǐng)域的一次進(jìn)步,它更是引領(lǐng)我們走向一個(gè)文檔提取、OCR和AI驅(qū)動(dòng)內(nèi)容生成無縫銜接、易于操作的未來。得益于其全面的訓(xùn)練、強(qiáng)大的架構(gòu)和深思熟慮的設(shè)計(jì),這一模型賦予了開發(fā)者在各個(gè)領(lǐng)域革新數(shù)據(jù)處理方式的能力。

本文轉(zhuǎn)載自 ??AI科技論談??,作者: AI科技論談

標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦