paint-brush
AI فریم ورک نے آپ کو امیج ٹو ٹیکسٹ ورک فلو کا احاطہ کیا ہے۔کی طرف سے@ritabratamaiti
نئی تاریخ

AI فریم ورک نے آپ کو امیج ٹو ٹیکسٹ ورک فلو کا احاطہ کیا ہے۔

کی طرف سے ritabratamaiti5m2024/12/31
Read on Terminal Reader

بہت لمبا؛ پڑھنے کے لئے

کیا: AnyModal کی ماڈیولر وژن – لینگویج پائپ لائن کا استعمال کرتے ہوئے ریاضی کی مساوات کی تصاویر کو LaTeX میں تبدیل کریں۔ کیسے: فوری اندازہ لگانے کے لیے پہلے سے تربیت یافتہ وزن کا استعمال کریں یا اپنے ڈیٹا سیٹ کے ساتھ حسب ضرورت ماڈل کو تربیت دیں۔ کہاں: GitHub اور Hugging Face پر مکمل مثالیں، کوڈ، اور ماڈل وزن تلاش کریں۔ کیوں: وسیع برجنگ کوڈ لکھے بغیر متعدد AI اجزاء (وژن + متن) کو آسانی سے مربوط کریں۔
featured image - AI فریم ورک نے آپ کو امیج ٹو ٹیکسٹ ورک فلو کا احاطہ کیا ہے۔
ritabratamaiti HackerNoon profile picture
0-item
1-item

AnyModal کے بارے میں

AnyModal ایک فریم ورک ہے جو متعدد "طریقوں" (جیسے تصاویر، متن، یا دیگر ڈیٹا) کو ایک واحد، مربوط ورک فلو میں یکجا کرنے کے لیے ڈیزائن کیا گیا ہے۔ وژن اور لینگویج ماڈلز کو برج کرنے کے لیے علیحدہ لائبریریوں کو جگانے یا اپنی مرضی کے مطابق کوڈ لکھنے کے بجائے، AnyModal ایک سٹرکچرڈ پائپ لائن فراہم کرتا ہے جہاں ہر ایک جزو — امیج انکوڈرز، ٹوکنائزرز، لینگویج ماڈل — کو بھاری حسب ضرورت کے بغیر پلگ ان کیا جا سکتا ہے۔ ان ٹکڑوں کے درمیان بنیادی رابطوں کو سنبھال کر، AnyModal آپ کو اعلیٰ سطحی عمل پر توجہ مرکوز کرنے دیتا ہے: مثال کے طور پر، تصویر میں کھانا کھلانا، اور متنی نتیجہ نکالنا۔


عملی طور پر، AnyModal تصویر کیپشننگ، درجہ بندی، یا یہاں دکھائے گئے معاملے میں، LaTeX OCR جیسے کاموں میں مدد کر سکتا ہے۔ چونکہ فریم ورک ماڈیولر ہے، اس لیے ایک ماڈل کو دوسرے کے لیے تبدیل کرنا نسبتاً آسان ہے (مثلاً، ایک مختلف وژن ریڑھ کی ہڈی یا زبان کا ایک نیا ماڈل)، یہ تجربہ یا خصوصی استعمال کے معاملات کے لیے لچکدار بناتا ہے۔


LaTeX OCR استعمال کیس

ریاضی کے اظہار کی تصویر کو درست LaTeX سٹرنگ میں تبدیل کرنے کے لیے کمپیوٹر ویژن اور قدرتی زبان کی پروسیسنگ کی ضرورت ہوتی ہے۔ امیج انکوڈر کا کام مساوات سے خصوصیات یا علامتی نمونوں کو نکالنا ہے، جیسے کہ "پلس،" "مائنس" اور دیگر علامتوں کو پہچاننا۔ زبان کا جزو پھر ترتیب میں مناسب لیٹیکس ٹوکن کی پیشین گوئی کرنے کے لیے ان خصوصیات کا استعمال کرتا ہے۔


AnyModal کے ساتھ LaTeX OCR بنیادی طور پر اس بات کا مظاہرہ ہے کہ آپ زبان کے ماڈل کے ساتھ وژن انکوڈر کو کتنی جلدی جوڑ سکتے ہیں۔ اگرچہ یہ مثال خاص طور پر مساوات کو حل کرتی ہے، مجموعی نقطہ نظر کو تصویر سے متن کے دوسرے منظرناموں تک بڑھایا جا سکتا ہے، بشمول زیادہ جدید یا خصوصی ریاضیاتی اشارے۔


اس ٹیوٹوریل کے اختتام تک، آپ جان لیں گے کہ AnyModal، Llama 3.2 1B اور Google کے SigLIP کے ساتھ ساتھ LaTeX OCR کاموں کے لیے ایک چھوٹا VLM بنانے کے لیے:

اصل کیپشن: f ( u ) = u + \ sum _ { n = o d d } \ alpha _ { n } \ Left[ \ frac { ( u - \pi ) } { \pi } \ right] ^ { n } , تیار کردہ AnyModal/LaTeX-OCR-Llama-3.2-1B کا استعمال کرتے ہوئے کیپشن: f ( u ) = u + \sum _ { n = o o d } \ alpha _ { n } \ بائیں[ \ frac { ( u - \ pi ) ^ { n } } { \ pi } \ right],


نوٹ کریں کہ AnyModal/LaTeX-OCR-Llama-3.2-1B پر جاری کردہ وزن صرف 20% پر تربیت کے ذریعے حاصل کیے جاتے ہیں۔ unsloth/LaTeX_OCR ڈیٹاسیٹ ۔


ممکنہ طور پر آپ کو پورے ڈیٹاسیٹ پر تربیت دے کر اور زیادہ سے زیادہ عہدوں سے بہتر ماڈل مل جائے گا۔


فوری اندازہ کی مثال

ان لوگوں کے لیے جو بنیادی طور پر موجودہ تصاویر سے LaTeX بنانے میں دلچسپی رکھتے ہیں، یہاں پہلے سے تربیت یافتہ وزن کا استعمال کرتے ہوئے ایک مظاہرہ ہے۔ یہ کسی بھی چیز کو شروع سے تربیت دینے کی ضرورت سے گریز کرتا ہے، کسی بھی موڈل کو عمل میں دیکھنے کے لیے ایک تیز راستہ پیش کرتا ہے۔ ذیل میں آپ کے ماحول کو ترتیب دینے، ضروری ماڈلز کو ڈاؤن لوڈ کرنے، اور اندازہ لگانے کا ایک مختصر جائزہ ہے۔


AnyModal ذخیرہ کلون کریں:

 git clone https://github.com/ritabratamaiti/AnyModal.git


ضروری لائبریریاں انسٹال کریں:

 pip install torch torchvision huggingface_hub PIL


اس کے بعد، Hugging Face Hub پر میزبان پہلے سے تربیت یافتہ وزن ڈاؤن لوڈ کریں:

 from huggingface_hub import snapshot_download snapshot_download("AnyModal/Image-Captioning-Llama-3.2-1B", local_dir="latex_ocr_model")


یہ مخصوص وزن یہاں پایا جا سکتا ہے: گلے لگانے والے چہرے پر LaTeX-OCR-Llama-3.2-1B


اگلا، وژن انکوڈر اور لینگویج ماڈل لوڈ کریں:

 import llm import anymodal import vision from PIL import Image # Load language model and tokenizer tokenizer, model = llm.get_llm("meta-llama/Llama-3.2-1B") # Load vision-related components image_processor, vision_model, vision_hidden_size = vision.get_image_encoder('google/vit-base-patch16-224') vision_encoder = vision.VisionEncoder(vision_model) # Configure the multimodal pipeline multimodal_model = anymodal.MultiModalModel( input_processor=None, input_encoder=vision_encoder, input_tokenizer=vision.Projector(vision_hidden_size, llm.get_hidden_size(tokenizer, model), num_hidden=1), language_tokenizer=tokenizer, language_model=model, prompt_text="The LaTeX expression of the equation in the image is:" ) # Load the pretrained model weights multimodal_model._load_model("latex_ocr_model") multimodal_model.eval()


آخر میں، تصویر فراہم کریں اور لیٹیکس آؤٹ پٹ حاصل کریں:

 # Replace with the path to your equation image image_path = "path_to_equation_image.png" image = Image.open(image_path).convert("RGB") processed_image = image_processor(image, return_tensors="pt") processed_image = {k: v.squeeze(0) for k, v in processed_image.items()} latex_output = multimodal_model.generate(processed_image, max_new_tokens=120) print("Generated LaTeX:", latex_output)


اقدامات کا یہ سادہ سلسلہ پوری پائپ لائن کو چلاتا ہے — تصویر کا تجزیہ کرنا، اسے زبان کے ماڈل کی جگہ میں پیش کرنا، اور متعلقہ LaTeX تیار کرنا۔


ٹریننگ ٹیوٹوریل

ان لوگوں کے لیے جو زیادہ کنٹرول چاہتے ہیں، جیسے کہ ماڈل کو نئے ڈیٹا کے مطابق ڈھالنا یا وژن لینگوئج پائپ لائن کے میکانکس کو تلاش کرنا، تربیت کا عمل گہری بصیرت فراہم کرتا ہے۔ ذیل کے حصے اس بات کی وضاحت کرتے ہیں کہ ڈیٹا کیسے تیار کیا جاتا ہے، ماڈل کے اجزاء کیسے مربوط ہوتے ہیں، اور انہیں مشترکہ طور پر کیسے بہتر بنایا جاتا ہے۔


صرف پہلے سے تربیت یافتہ اجزاء پر انحصار کرنے کے بجائے، آپ جوڑی والی تصاویر اور LaTeX لیبلز کا تربیتی ڈیٹاسیٹ حاصل کر سکتے ہیں۔ ایک مثال unsloth/LaTeX_OCR ڈیٹاسیٹ ہے، جس میں مساوات کی تصاویر ان کے LaTeX تاروں کے ساتھ شامل ہیں۔ انحصار کو انسٹال کرنے اور اپنے ڈیٹاسیٹ کو ترتیب دینے کے بعد، تربیت دینے کے اقدامات میں ڈیٹا پائپ لائن بنانا، ماڈل کو شروع کرنا، اور دوروں کے ذریعے لوپ کرنا شامل ہے۔


ڈیٹاسیٹ کی تیاری اور اسے لوڈ کرنے کے لیے یہاں ایک خاکہ ہے:

 from torch.utils.data import Subset import vision # Load training and validation sets train_dataset = vision.ImageDataset("unsloth/LaTeX_OCR", image_processor, split='train') val_dataset = vision.ImageDataset("unsloth/LaTeX_OCR", image_processor, split='test') # Optionally use a smaller subset for faster iteration subset_ratio = 0.2 train_dataset = Subset(train_dataset, range(int(subset_ratio * len(train_dataset)))) val_dataset = Subset(val_dataset, range(int(subset_ratio * len(val_dataset))))


اس مقام پر، آپ پہلے بیان کردہ اسی AnyModal پائپ لائن کی تعمیر یا دوبارہ استعمال کریں گے۔ پہلے سے تربیت یافتہ وزن لوڈ کرنے کے بجائے، آپ ماڈل کو شروع کریں گے تاکہ یہ شروع سے یا جزوی طور پر پہلے سے تربیت یافتہ چوکیوں سے سیکھ سکے۔

 multimodal_model = anymodal.MultiModalModel( input_processor=None, input_encoder=vision_encoder, input_tokenizer=vision.Projector(vision_hidden_size, llm.get_hidden_size(tokenizer, model), num_hidden=1), language_tokenizer=tokenizer, language_model=model, prompt_text="The LaTeX expression of the equation in the image is:" )


اس کے بعد آپ ماڈل کے پیرامیٹرز کو بہتر بنانے کے لیے ایک ٹریننگ لوپ بنا سکتے ہیں۔ ایک عام نقطہ نظر PyTorch کے AdamW آپٹیمائزر کا استعمال کرتا ہے اور اختیاری طور پر کارکردگی کے لیے مخلوط صحت سے متعلق تربیت کا استعمال کرتا ہے:

 from tqdm import tqdm import torch optimizer = torch.optim.AdamW(multimodal_model.parameters(), lr=1e-4) scaler = torch.cuda.amp.GradScaler() train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, shuffle=True) num_epochs = 5 for epoch in range(num_epochs): for batch_idx, batch in tqdm(enumerate(train_loader), desc=f"Epoch {epoch+1} Training"): optimizer.zero_grad() with torch.cuda.amp.autocast(): logits, loss = multimodal_model(batch) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update()


ہر دور کے بعد یا کم از کم جب تربیت ختم ہوتی ہے، توثیق کے سیٹ پر ماڈل کا جائزہ لینے سے یہ یقینی بنانے میں مدد ملتی ہے کہ یہ نئے ڈیٹا کو عام کرتا ہے:

 val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=16, shuffle=False) for batch_idx, batch in enumerate(val_loader): predictions = multimodal_model.generate(batch['input'], max_new_tokens=120) for idx, prediction in enumerate(predictions): print(f"Actual LaTeX: {batch['text'][idx]}") print(f"Generated LaTeX: {prediction}")


کارکردگی کی تصدیق کے علاوہ، توثیق کا یہ مرحلہ ہائپر پیرامیٹر کو ایڈجسٹ کرنے، مختلف بیس ماڈل پر سوئچ کرنے، یا آپ کے ڈیٹا کی پری پروسیسنگ کو بہتر کرنے جیسی بہتری کی رہنمائی کر سکتا ہے۔ ان تربیتی مراحل پر عمل کرنے سے، آپ وژن انکوڈر اور لینگویج ماڈل کے درمیان انٹرپلے کی بہتر سمجھ حاصل کرتے ہیں، اور آپ ورک فلو کو اضافی کاموں یا مزید خصوصی ڈومینز تک بڑھا سکتے ہیں۔


اضافی وسائل