基于Qwen2-VL模型針對LaTeX OCR任務進行微調訓練 - 多圖推理

基于Qwen2-VL模型針對LaTeX OCR任務進行微調訓練 - 多圖推理

flyfish

基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_LoRA配置如何寫
基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_單圖推理
基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_原模型_單圖推理
基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_原模型_多圖推理
基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_多圖推理
基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_數據處理
基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_訓練
基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_訓練過程
輸入兩張圖像

請添加圖片描述
請添加圖片描述
輸出
請添加圖片描述
可視化
Image 1:
E m m ˉ = 2 7 Q c π 1 / 2 Γ ( 1 / 4 ) 2 log ? ( L 0 / L ) L ∫ 1 ∞ d y y 2 y 4 ? 1 . E _ { m \bar { m } } = \frac { 2 ^ { 7 } \sqrt { Q _ { c } } \pi ^ { 1 / 2 } } { \Gamma ( 1 / 4 ) ^ { 2 } } \frac { \log \left( L _ { 0 } / L \right) } { L } \int _ { 1 } ^ { \infty } d y \frac { y ^ { 2 } } { \sqrt { y ^ { 4 } - 1 } } . Emmˉ?=Γ(1/4)227Qc? ?π1/2?Llog(L0?/L)?1?dyy4?1 ?y2?.

Image 2:
u ( τ )  ̄ = u ( ? τ ˉ ) , u ( τ + 1 ) = ? u ( τ ) , \overline { { u ( \tau ) } } = u ( - \bar { \tau } ) , \qquad \qquad u ( \tau + 1 ) = - u ( \tau ) , u(τ)?=u(?τˉ),u(τ+1)=?u(τ),

import argparse
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info
from peft import PeftModel, LoraConfig, TaskType
import torchclass LaTeXOCR:def __init__(self, local_model_path, lora_model_path):self.local_model_path = local_model_pathself.lora_model_path = lora_model_pathself._load_model_and_processor()def _load_model_and_processor(self):config = LoraConfig(task_type=TaskType.CAUSAL_LM,target_modules=["q_proj", "k_proj", "v_proj", "o_proj","gate_proj", "up_proj", "down_proj",],inference_mode=True,r=64,lora_alpha=16,lora_dropout=0.05,bias="none",)self.model = Qwen2VLForConditionalGeneration.from_pretrained(self.local_model_path, torch_dtype=torch.float16, device_map="auto")self.model = PeftModel.from_pretrained(self.model, self.lora_model_path, config=config)self.processor = AutoProcessor.from_pretrained(self.local_model_path)def generate_latex_from_images(self, test_image_paths, prompt):"""根據給定的測試圖像路徑列表和提示信息,生成對應的LaTeX格式文本。參數:test_image_paths (list of str): 包含數學公式的測試圖像路徑列表。prompt (str): 提供給模型的提示信息。返回:list of str: 轉換后的LaTeX格式文本列表。"""results = []for image_path in test_image_paths:messages = [{"role": "user","content": [{"type": "image","image": image_path,"resized_height": 100,"resized_width": 500,},{"type": "text", "text": prompt},],}]text = self.processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)image_inputs, video_inputs = process_vision_info(messages)inputs = self.processor(text=[text],images=image_inputs,videos=video_inputs,padding=True,return_tensors="pt",)inputs = inputs.to("cuda" if torch.cuda.is_available() else "cpu")with torch.no_grad():generated_ids = self.model.generate(**inputs, max_new_tokens=8192)generated_ids_trimmed = [out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)]output_text = self.processor.batch_decode(generated_ids_trimmed,skip_special_tokens=True,clean_up_tokenization_spaces=False,)results.append(output_text[0])return resultsdef parse_arguments():parser = argparse.ArgumentParser(description="LaTeX OCR using Qwen2-VL")parser.add_argument("--local_model_path",type=str,default="./Qwen/Qwen2-VL-7B-Instruct",help='Path to the local model.',)parser.add_argument("--lora_model_path",type=str,default="./output/Qwen2-VL-7B-LatexOCR/checkpoint-1500",help='Path to the LoRA model checkpoint.',)parser.add_argument("--test_image_paths",nargs='+',  # 接受多個參數type=str,default=["./LaTeX_OCR/987.jpg", "./LaTeX_OCR/986.jpg"],  # 設置默認值為兩個圖像路徑help='Paths to the test images.',)return parser.parse_args()if __name__ == "__main__":args = parse_arguments()prompt = ("尊敬的Qwen2VL大模型,我需要你幫助我將一張包含數學公式的圖片轉換成LaTeX格式的文本。\n""請按照以下說明進行操作:\n""1. **圖像中的內容**: 圖像中包含的是一個或多個數學公式,請確保準確地識別并轉換為LaTeX代碼。\n""2. **公式識別**: 請專注于識別和轉換數學符號、希臘字母、積分、求和、分數、指數等數學元素。\n""3. **LaTeX語法**: 輸出時使用標準的LaTeX語法。確保所有的命令都是正確的,并且可以被LaTeX編譯器正確解析。\n""4. **結構保持**: 如果圖像中的公式有特定的結構(例如多行公式、矩陣、方程組),請在輸出的LaTeX代碼中保留這些結構。\n""5. **上下文無關**: 不要嘗試解釋公式的含義或者添加額外的信息,只需嚴格按照圖像內容轉換。\n""6. **格式化**: 如果可能的話,使輸出的LaTeX代碼易于閱讀,比如適當添加空格和換行。")latex_ocr = LaTeXOCR(args.local_model_path, args.lora_model_path)results = latex_ocr.generate_latex_from_images(args.test_image_paths, prompt)for i, result in enumerate(results):print(f"Image {i + 1}:")print(result)print("-" * 80)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62609.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62609.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62609.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序,GUI界面。附詳細的運行說明。

圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序,GUI界面。附詳細的運行說明。 目錄 圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序,GUI界面。附詳細的運行說明。預測效果基本介紹程序設計參考資料 預測效果 基本介紹 Matlab基…

設置IMX6ULL開發板的網卡IP的兩種方法(臨時生效和永久有效兩種方法)

設置開發板網卡的IP,有兩種方法。 方法一:臨時生效 第一種方式是臨時設置,只有本次有效,重啟后又要重新設,命令為: ifconfig eth0 192.168.5.9設置成功后可以使用ifconfig命令來查看已設置的 IP 地址。 …

22. Three.js案例-創建旋轉的圓環面

22. Three.js案例-創建旋轉的圓環面 實現效果 知識點 WebGLRenderer (WebGL渲染器) THREE.WebGLRenderer 是Three.js中最常用的渲染器,用于將場景渲染到WebGL畫布上。 構造器 new THREE.WebGLRenderer(parameters) 參數類型描述parametersObject可選參數對象&…

【D3.js in Action 3 精譯_044】5.1 餅圖和環形圖的創建(四):數據標簽的添加

當前內容所在位置: 第五章 餅圖布局與堆疊布局 ?? 5.1 餅圖和環形圖的創建 ?? 5.1.1 準備階段(一)5.1.2 餅圖布局生成器(二)5.1.3 圓弧的繪制(三) ??5.1.4 數據標簽的添加(四&…

java全棧day13-后端Web實戰2

接上述查詢部門實現,完成后續要求 一、統一響應結果 1.1步驟 資料如下 對一開始的代碼修改如下 結果如下 1.2測試 指定請求方式 結果 小結 二、前后端聯調測試 資料如下: (不行,一定要不帶空格和不帶中文,要不然啟動不了試了半天…

AWS sdk for s3 - S3 client

背景 在產品環境上通過 http 的方式訪問 aws s3 是不安全的,需要使用aws sdk 提供的接口來訪問 技術實現 項目中使用的是java 1. 在gradel 中引用對應的aws 包 implementation ‘software.amazon.awssdk:s3:2.20.80’ // aws sdk implementation ‘software.am…

Android的SurfaceView和TextureView介紹

文章目錄 前言一、什么是SurfaceView ?1.1 SurfaceView 使用示例1.2 SurfaceView 源碼概述1.3 SurfaceView 的構造與初始化1.4 SurfaceHolder.Callback 回調接口1.5 SurfaceView 渲染機制 二、什么是TextureView?2.1 TextureView 使用示例2.2 TextureVie…

vscode 排除文件夾搜索

排除的文件夾 node_modules/,dist/

優雅的@ObservedV2和@Trace裝飾器

Hello,大家好,我是 V 哥。在HarmonyOS NEXT開發中,ObservedV2裝飾器和Trace裝飾器是用于狀態管理的兩個裝飾器,它們在HarmonyOS應用開發中用于增強對類對象中屬性的觀測能力。如果你學過觀察者模式的原理,你會更容易理…

備戰藍橋第一天 驗證回文串 楊輝三角

LCR 018. 驗證回文串 - 力扣(LeetCode) 涉及的函數: int isalnum ( int c ); 檢查字符是否為字母數字 int tolower ( int c ); 將大寫字母轉換為小寫 void reverse (BidirectionalIterator first, BidirectionalIterator last); 反轉區域中…

【實戰】提升List性能方法有幾何

在內存中的 List<T> 上使用 LINQ 查詢時&#xff0c;加索引并不像數據庫那樣有內置支持&#xff0c;但可以通過以下方式提高查詢性能&#xff1a; 1. 手動構建索引 可以手動構建一個字典 (Dictionary<TKey, TValue>)&#xff0c;將需要查詢的字段作為鍵&#xff0…

一款免費、簡單、快速的JS打印插件,web 打印組件,基于JavaScript開發,支持數據分組,快速分頁批量預覽,打印,轉pdf,移動端,PC端

前言 在數字化辦公時代&#xff0c;打印需求呈現多樣化和復雜化的趨勢。現有的打印軟件往往存在cao作繁瑣、兼容性差、功能單一等問題&#xff0c;難以滿足現代企業高效、靈活的打印需求。 為了解決這些痛點&#xff0c;一款簡單、高效、多功能的打印插件成為了迫切需求。 介…

Python pywin32庫詳解

一、引言 在Python編程中&#xff0c;有時候需要與Windows操作系統進行交互&#xff0c;執行一些特定的系統操作或操作 Windows 應用程序。這時&#xff0c;pywin32庫就成為了一個非常強大的工具。pywin32庫提供了對Windows API的訪問&#xff0c;使得Python開發者能夠在Windo…

Uniapp的vue、nvue、uvue后綴名區別

在 UniApp 中&#xff0c;.vue、.nvue 和 .uvue 是不同的文件后綴名&#xff0c;每個文件格式的使用場景和兼容性略有不同。下面是每個文件后綴的詳細解釋以及它們的兼容性&#xff1a; 1. .vue 文件 定義&#xff1a;.vue 是標準的 Vue 單文件組件格式&#xff0c;主要用于基…

TCP/IP雜記

TCP三次握手、四次揮手 從應用角度&#xff0c;不用多考慮為什么有三次&#xff0c;遵循標準即可。 ubuntu 下 wireshark安裝&#xff1a; sudo add-apt-repository universe sudo apt install wireshark 三次握手實證&#xff1a; 第一次握手的情況如下&#xff1a;&#…

Vue前端開發-接收跳轉參數

路由攜帶參數跳轉到目標頁面后&#xff0c;頁面組件可以接收到攜帶傳入的參數&#xff0c;接收的方式與攜帶的方式相關&#xff0c;如果是采用查詢字符串方式攜帶&#xff0c;那么可以通過路由中的query對象獲取到參數&#xff0c;如果是其他方式&#xff0c;通常都是通過路由中…

力扣--LCR 177.撞色搭配

題目 整數數組 sockets 記錄了一個襪子禮盒的顏色分布情況&#xff0c;其中 sockets[i] 表示該襪子的顏色編號。禮盒中除了一款撞色搭配的襪子&#xff0c;每種顏色的襪子均有兩只。請設計一個程序&#xff0c;在時間復雜度 O(n)&#xff0c;空間復雜度O(1) 內找到這雙撞色搭配…

[ComfyUI]批量生成圖片的節點:輸入一個prompt列表批量生成圖像

文章目錄 1.參考資料2.兩個節點的部署FizzNodes節點comfyui-mixlab-nodes 生成的結果展示 1.參考資料 如何使用ComfyUI一次批量生成不同內容的圖片 ComfyUI工作流】隨機提示詞批量出圖&#xff0c;懶人刷圖福音&#xff0c;根據提示 2.兩個節點的部署 FizzNodes節點 fizzn…

【實操GPT-SoVits】聲音克隆模型圖文版教程

項目github地址&#xff1a;https://github.com/RVC-Boss/GPT-SoVITS.git官方教程&#xff1a;https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/tkemqe8vzhadfpeu本文旨在迅速實操GPT-SoVits項目&#xff0c;不闡述技術原理&#xff08;后期如果有時間研究&#…

5G模組AT命令腳本-關閉模組的IP過濾功能

關閉模組的IP過濾功能 關閉模組的IP過濾功能 5G 模組通常使用nat方式為 下掛設備或上位機提供上網服務&#xff0c;默認情況&#xff0c;不做NAt的包無法經由 模組轉發&#xff0c;如果禁掉這個限制 &#xff0c;可使用本文中的配置命令本腳本用于關閉模組的IP過濾功能&#xf…