```python import torch from PIL import Image from transformers import AutoProcessor, AutoModelForImageTextToText import os # --- 1. Model və Prosessoru Hugging Face Hub-dan yükləyin --- # Modelinizin Hugging Face repozitoriya ID-si hf_repo_id = "nijatzeynalov/azmedgemma-4b-lung-cxr-1ep" print(f"'{hf_repo_id}' model və prosessoru yüklənir...") # GPU varsa, onu istifadə edin device = "cuda" if torch.cuda.is_available() else "cpu" # Modeli bfloat16 dəqiqliyində yükləyərək yaddaşa qənaət edin model = AutoModelForImageTextToText.from_pretrained( hf_repo_id, torch_dtype=torch.bfloat16, device_map=device ) processor = AutoProcessor.from_pretrained(hf_repo_id) print("Model və prosessor uğurla yükləndi.") CLASSES = [ 'Atelektazi', 'Ağciyər Bulanıqlığı', 'Ağciyər Lezyonu', 'Böyümüş Kardiomediastinum', 'Digər Plevral Tapıntılar', 'Dəstək Qurğuları', 'Heç bir tapıntı yoxdur', 'Kardiomeqaliya', 'Konsolidasiya', 'Plevral Maye Toplanması', 'Pnevmatik döş qəfəsi (Pnevmotoraks)', 'Sınıq', 'Sətəlcəm', 'Ödəm' ] # Təlim zamanı istifadə etdiyiniz prompt formatını eynilə tətbiq edin options = "\\n".join(f"- {label}" for label in CLASSES) prompt_text = ( "Bu, bir ağciyər MRT (və ya rentgen) şəkilidir.\\n" "Aşağıdakı siyahıdakı diaqnozlardan hansı(lar) bu şəkildə ehtimal olunur?\\n" "Bir və ya bir neçə variantı seçə bilərsiniz.\\n" f"{options}\\n" ) # Chat formatına uyğun mesajlar siyahısı yaradın messages = [ { "role": "user", "content": [ {"type": "image"}, {"type": "text", "text": prompt_text}, ], } ] # Prosessor vasitəsilə tam promptu hazırlayın templated_prompt = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=False ) # --- 3. Lokal şəkli yükləyin --- local_image_path = "image (2).jpg" image = Image.open(local_image_path).convert("RGB") # --- 4. Model ilə nəticəni yaradın (Inference) --- inputs = processor(images=[image], text=templated_prompt, return_tensors="pt").to(device, torch.bfloat16) input_ids_len = inputs["input_ids"].shape[1] print("\nNəticə yaradılır...") generated_ids = model.generate( **inputs, max_new_tokens=50, do_sample=False, # Modeli cümlənin sonunda dayanmağa məcbur et eos_token_id=processor.tokenizer.eos_token_id ) # --- 5. Nəticəni deşifrə edin və göstərin (DƏYİŞİKLİK) --- newly_generated_ids = generated_ids[:, input_ids_len:] assistant_response_raw = processor.batch_decode(newly_generated_ids, skip_special_tokens=True)[0] # Təkrarlanan hissələri təmizlə: "\nmodel" sözündən əvvəlki ilk hissəni götür clean_response = assistant_response_raw.split("\n")[0].strip() print("\n--- Modelin Diaqnozu ---") print(clean_response) ```