livadies commited on
Commit
436a48c
·
verified ·
1 Parent(s): 28ea3bd

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -0
app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+ from transformers import VisionEncoderDecoderModel, ViTImageProcessor, AutoTokenizer
4
+ from PIL import Image
5
+
6
+ # Это точное имя вашей модели, которое мы нашли!
7
+ MODEL_ID = "livadies/Russian-Radiologist-ruGPT-ViT"
8
+
9
+ print("Загрузка модели с Hugging Face (это займет около минуты)...")
10
+ # Бесплатные серверы (Spaces) работают на процессоре (CPU)
11
+ device = "cpu"
12
+
13
+ try:
14
+ model = VisionEncoderDecoderModel.from_pretrained(MODEL_ID).to(device)
15
+ feature_extractor = ViTImageProcessor.from_pretrained(MODEL_ID)
16
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
17
+ print("✅ Модель успешно загружена в память!")
18
+ except Exception as e:
19
+ print(f"❌ ОШИБКА ЗАГРУЗКИ МОДЕЛИ: {e}")
20
+ print("Возможно, имя модели указано неверно или файлы не догрузились.")
21
+
22
+ def analyze_xray(image):
23
+ if image is None:
24
+ return "Пожалуйста, загрузите снимок."
25
+
26
+ try:
27
+ # Подготовка картинки
28
+ image = image.convert("RGB")
29
+ pixel_values = feature_extractor(images=image, return_tensors="pt").pixel_values.to(device)
30
+
31
+ # Генерация текста
32
+ with torch.no_grad():
33
+ generated_ids = model.generate(
34
+ pixel_values,
35
+ max_length=128,
36
+ num_beams=4,
37
+ repetition_penalty=2.0
38
+ )
39
+
40
+ # Расшифровка текста
41
+ prediction = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
42
+ return prediction
43
+ except Exception as e:
44
+ return f"Произошла ошибка при анализе: {str(e)}"
45
+
46
+ # Настройка красивого веб-интерфейса
47
+ interface = gr.Interface(
48
+ fn=analyze_xray,
49
+ inputs=gr.Image(type="pil", label="Загрузите рентгеновский снимок (X-Ray)"),
50
+ outputs=gr.Textbox(label="Заключение Нейро-Радиолога", lines=6),
51
+ title="🩻 Русский Нейро-Радиолог (AI Assistant)",
52
+ description="Загрузите рентгеновский снимок грудной клетки. Искусственный интеллект, обученный на 6500 снимках, проанализирует его и сгенерирует медицинское заключение на русском языке.\n\n*Внимание: Модель носит исключительно исследовательский характер и не заменяет консультацию врача.*",
53
+ theme="huggingface",
54
+ allow_flagging="never"
55
+ )
56
+
57
+ if __name__ == "__main__":
58
+ interface.launch()