najicreator90856 commited on
Commit
428ea8f
·
verified ·
1 Parent(s): 2151f45

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -18
app.py CHANGED
@@ -4,38 +4,79 @@ from transformers import AutoImageProcessor, AutoModelForImageClassification
4
  from PIL import Image
5
  import torch.nn.functional as F
6
 
7
- # Загружаем ТВОЮ модель
8
  model_id = "najicreator90856/is-it-nsfw_ai-moderator"
 
 
9
  processor = AutoImageProcessor.from_pretrained(model_id)
10
  model = AutoModelForImageClassification.from_pretrained(model_id)
 
11
 
12
  def predict_nsfw(img):
13
  if img is None:
14
- return None
15
-
16
- # Подготовка изображения
17
  inputs = processor(images=img, return_tensors="pt")
18
 
 
19
  with torch.no_grad():
20
  logits = model(**inputs).logits
21
  probs = F.softmax(logits, dim=-1)[0]
22
 
23
- # Формируем словарь с результатами для Gradio
24
- results = {model.config.id2label[i]: float(probs[i]) for i in range(2)}
 
 
 
 
25
  return results
26
 
27
- # Интерфейс Gradio
28
- demo = gr.Interface(
29
- fn=predict_nsfw,
30
- inputs=gr.Image(type="pil", label="Загрузите изображение"),
31
- outputs=gr.Label(num_top_classes=2, label="Вердикт"),
32
- title="🔞 Is It NSFW? AI Moderator",
33
- description="Ультра-быстрый детектор NSFW контента на базе ResNet-18. Точность 99.44%.",
34
- article="### Поддержите проект\nЕсли вам нравится модель, вы можете поддержать автора:\n\n"
35
- "- [DonationAlerts](https://www.donationalerts.com/r/najicreator)\n"
36
- "- **USDT TON:** `UQDcC3o7u4LS07pr-cQI-Gxx3hPjXKrRrNQdGBj0WV7SADe3`",
37
- examples=[["example1.jpg"], ["example2.jpg"]] # Можно добавить свои примеры
38
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  if __name__ == "__main__":
 
41
  demo.launch()
 
4
  from PIL import Image
5
  import torch.nn.functional as F
6
 
7
+ # 1. Загрузка модели
8
  model_id = "najicreator90856/is-it-nsfw_ai-moderator"
9
+ print(f"Загрузка модели {model_id}...")
10
+
11
  processor = AutoImageProcessor.from_pretrained(model_id)
12
  model = AutoModelForImageClassification.from_pretrained(model_id)
13
+ model.eval()
14
 
15
  def predict_nsfw(img):
16
  if img is None:
17
+ return "Пожалуйста, загрузите изображение."
18
+
19
+ # Подготовка
20
  inputs = processor(images=img, return_tensors="pt")
21
 
22
+ # Предсказание
23
  with torch.no_grad():
24
  logits = model(**inputs).logits
25
  probs = F.softmax(logits, dim=-1)[0]
26
 
27
+ # Формируем словарь для компонента Label
28
+ # Он автоматически покажет полоски вероятности
29
+ results = {
30
+ "SFW": float(probs[0]),
31
+ "NSFW": float(probs[1])
32
+ }
33
  return results
34
 
35
+ # 2. Создание интерфейса через Blocks
36
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
37
+ gr.Markdown("# 🔞 Is It NSFW? AI Moderator")
38
+ gr.Markdown("Быстрая проверка контента на базе ResNet-18 (Точность 99.44%)")
39
+
40
+ with gr.Row():
41
+ # Левая колонка - Ввод
42
+ with gr.Column(scale=1):
43
+ input_img = gr.Image(
44
+ type="pil",
45
+ label="Перетащите фото сюда",
46
+ height=400
47
+ )
48
+ submit_btn = gr.Button("Проверить", variant="primary")
49
+
50
+ # Правая колонка - Результат
51
+ with gr.Column(scale=1):
52
+ output_label = gr.Label(
53
+ num_top_classes=2,
54
+ label="Результат анализа"
55
+ )
56
+
57
+ gr.Markdown("""
58
+ ### О модели:
59
+ Данная нейросеть обучена различать NSFW и SFW контент.
60
+ - **SFW**: Безопасно для работы/просмотра.
61
+ - **NSFW**: Контент 18+ (Порнография, Хентай).
62
+ """)
63
+
64
+ # Ссылки на донаты
65
+ gr.Markdown("---")
66
+ with gr.Row():
67
+ gr.Markdown("""
68
+ ### Поддержать автора:
69
+ [DonationAlerts](https://www.donationalerts.com/r/najicreator) |
70
+ **USDT TON:** `UQDcC3o7u4LS07pr-cQI-Gxx3hPjXKrRrNQdGBj0WV7SADe3`
71
+ """)
72
+
73
+ # Логика работы кнопки
74
+ submit_btn.click(
75
+ fn=predict_nsfw,
76
+ inputs=input_img,
77
+ outputs=output_label
78
+ )
79
 
80
  if __name__ == "__main__":
81
+ # Убираем примеры (examples), чтобы не было ошибок с путями файлов
82
  demo.launch()