paint-brush
Framework AI шуморо дар ҷараёни кории тасвир ба матн фаро гирифтаастаз ҷониби@ritabratamaiti
Таърихи нав

Framework AI шуморо дар ҷараёни кории тасвир ба матн фаро гирифтааст

аз ҷониби ritabratamaiti5m2024/12/31
Read on Terminal Reader

Хеле дароз; Хондан

Чӣ: Тасвирҳои муодилаи математикиро бо истифода аз лӯлаи модули забони AnyModal ба LaTeX табдил диҳед. Чӣ тавр: Барои хулосаи зуд вазнҳои пешакӣ тайёршударо истифода баред ё модели фармоиширо бо маҷмӯи додаҳои худ омӯзед. Дар куҷо: Дар GitHub ва Hugging Face намунаҳои пурра, рамз ва вазнҳои моделиро пайдо кунед. Чаро: ҷузъҳои сершумори AI (биниш + матн) бидуни навиштани рамзи васеъи пулакӣ ба осонӣ ҳамгиро кунед.
featured image - Framework AI шуморо дар ҷараёни кории тасвир ба матн фаро гирифтааст
ritabratamaiti HackerNoon profile picture
0-item
1-item

Дар бораи AnyModal

AnyModal чаҳорчӯбаест, ки барои муттаҳид кардани якчанд "модалиятҳо" (ба монанди тасвирҳо, матн ё маълумоти дигар) ба як ҷараёни кори ягона ва ҳамоҳанг тарҳрезӣ шудааст. Ба ҷои он ки китобхонаҳои ҷудогона ё навиштани коди фармоишӣ барои фарогирии моделҳои биниш ва забон, AnyModal лӯлаи сохториро пешниҳод мекунад, ки дар он ҳар як ҷузъ - рамзгузорҳои тасвирӣ, токенизаторҳо, моделҳои забон - бидуни мутобиқсозии вазнин васл кардан мумкин аст. Бо коркарди робитаҳои аслии байни ин қисмҳо, AnyModal ба шумо имкон медиҳад, ки ба раванди сатҳи баланд тамаркуз кунед: масалан, дар тасвир таъом додан ва ба даст овардани натиҷаи матнӣ.


Дар амал, AnyModal метавонад дар иҷрои вазифаҳо ба монанди сарлавҳаи тасвир, тасниф ё дар ҳолати дар ин ҷо нишон додашуда, LaTeX OCR кӯмак расонад. Азбаски чаҳорчӯба модулӣ аст, иваз кардани як модел ба модели дигар (масалан, шоҳроҳи биниш ё модели нави забон) нисбатан содда аст, ки онро барои таҷриба ё ҳолатҳои махсуси истифода чандир мекунад.


Парвандаи истифодаи LaTeX OCR

Табдил додани тасвири ифодаи математикӣ ба сатри дурусти LaTeX пайванди биниши компютер ва коркарди забони табииро талаб мекунад. Вазифаи рамзгузори тасвир ин аз муодила ҷудо кардани хусусиятҳо ё намунаҳои рамзӣ, ба монанди эътирофи “плюс”, “минус” ва дигар рамзҳо мебошад. Сипас ҷузъи забон ин хусусиятҳоро барои пешгӯии аломатҳои мувофиқи LaTeX бо пайдарпай истифода мебарад.


LaTeX OCR бо AnyModal аслан як намоиши он аст, ки то чӣ андоза шумо метавонед рамзгузори бинишро бо модели забон пайваст кунед. Дар ҳоле, ки ин мисол махсусан муодилаҳоро баррасӣ мекунад, равиши умумиро метавон ба дигар сенарияҳои тасвир ба матн, аз ҷумла қайди риёзии пешрафта ё махсусгардонидашуда васеъ кард.


Дар охири ин дарс, шумо хоҳед донист, ки чӣ тавр истифода бурдани AnyModal, дар якҷоягӣ бо Llama 3.2 1B ва SigLIP-и Google барои сохтани VLM-и хурд барои вазифаҳои LaTeX OCR:

Сарлавҳаи воқеӣ: 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 } \left[ \frac { ( u - \pi ) ^ { n } } { \pi } \right],


Аҳамият диҳед, ки вазнҳое, ки дар AnyModal/LaTeX-OCR-Llama-3.2-1B бароварда шудаанд, бо омӯзиши танҳо 20% unsloth/LaTeX_OCR маҷмӯи маълумот .


Эҳтимол шумо тавассути омӯзиш дар тамоми маҷмӯаи додаҳо ва дар тӯли шумораи бештари давраҳо модели беҳтар ба даст меоред.


Намунаи хулосаи зуд

Барои онҳое, ки пеш аз ҳама ба тавлиди LaTeX аз тасвирҳои мавҷуда таваҷҷӯҳ доранд, дар ин ҷо як намоиш бо истифода аз вазнҳои пешакӣ омодашуда аст. Ин аз зарурати омӯзиши ҳама чиз аз сифр канорагирӣ мекунад ва роҳи зудро барои дидани AnyModal дар амал пешниҳод мекунад. Дар зер шарҳи мухтасари танзими муҳити шумо, зеркашии моделҳои зарурӣ ва иҷро кардани хулоса оварда шудааст.


Анбори 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()


Дар ниҳоят, тасвирро пешниҳод кунед ва баромади LaTeX-ро гиред:

 # 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}")


Илова ба тасдиқи иҷроиш, ин қадами тасдиқкунӣ метавонад ба беҳбудиҳо, аз қабили танзими гиперпараметрҳо, гузариш ба модели асосии дигар ё такмил додани коркарди пешакии маълумоти шумо роҳнамоӣ кунад. Бо риояи ин қадамҳои омӯзишӣ, шумо дарки беҳтари мутақобилаи байни рамзгузори биниш ва модели забонро пайдо мекунед ва шумо метавонед ҷараёни корро ба вазифаҳои иловагӣ ё доменҳои махсусгардонидашуда васеъ кунед.


Захираҳои иловагӣ

  • Анбори GitHub : AnyModal
  • Феҳристи лоиҳаи LaTeX OCR : Папкаи GitHub
  • Вазни модели омӯзонидашудаи рӯи оғӯш : LaTeX-OCR-Llama-3.2-1B
  • Ташкилоти Оғӯши чеҳра : AnyModal on HF (барои навсозиҳо пайравӣ кунед)
  • Ҷамъияти Reddit : r/AnyModal (барои муҳокимаҳо, фикру мулоҳизаҳо ва дастгирии ҷомеа)