mybYusuf commited on
Commit
e33f385
·
verified ·
1 Parent(s): dfb9b6a

Update app_huggingface.py

Browse files
Files changed (1) hide show
  1. app_huggingface.py +154 -159
app_huggingface.py CHANGED
@@ -1,160 +1,155 @@
1
- import os
2
- import sys
3
- import numpy as np
4
- import gradio as gr
5
- import tensorflow as tf
6
- from PIL import Image
7
-
8
- # Sabitler
9
- IMAGE_SIZE = 128
10
- MODEL_PATH = "best_model.keras" # Kaydedilmiş model dosyasının yolu
11
-
12
- # Hayvan sınıfları (90 sınıf)
13
- class_names = [
14
- 'antelope', 'badger', 'bat', 'bear', 'bee', 'beetle', 'bison', 'boar', 'butterfly',
15
- 'cat', 'caterpillar', 'chimpanzee', 'cockroach', 'cow', 'coyote', 'crab', 'crow',
16
- 'deer', 'dog', 'dolphin', 'donkey', 'dragonfly', 'duck', 'eagle', 'elephant', 'flamingo',
17
- 'fly', 'fox', 'goat', 'goldfish', 'goose', 'gorilla', 'grasshopper', 'hamster', 'hare',
18
- 'hedgehog', 'hippopotamus', 'hornbill', 'horse', 'hummingbird', 'hyena', 'jellyfish',
19
- 'kangaroo', 'koala', 'ladybugs', 'leopard', 'lion', 'lizard', 'lobster', 'mosquito',
20
- 'moth', 'mouse', 'octopus', 'okapi', 'orangutan', 'otter', 'owl', 'ox', 'oyster',
21
- 'panda', 'parrot', 'pelecaniformes', 'penguin', 'pig', 'pigeon', 'porcupine',
22
- 'possum', 'raccoon', 'rat', 'reindeer', 'rhinoceros', 'sandpiper', 'seahorse',
23
- 'seal', 'shark', 'sheep', 'snake', 'sparrow', 'squid', 'squirrel', 'starfish',
24
- 'swan', 'tiger', 'turkey', 'turtle', 'whale', 'wolf', 'wombat', 'woodpecker', 'zebra'
25
- ]
26
-
27
- # Model yükleme fonksiyonu
28
- def load_model():
29
- try:
30
- if os.path.exists(MODEL_PATH):
31
- model = tf.keras.models.load_model(MODEL_PATH)
32
- print("Model başarıyla yüklendi!")
33
- return model
34
- else:
35
- print("Model dosyası bulunamadı. Demo modunda çalışılacak.")
36
- return None
37
- except Exception as e:
38
- print(f"Model yüklenirken hata oluştu: {e}")
39
- return None
40
-
41
- # Görüntü ön işleme
42
- def preprocess_image(img):
43
- img = img.convert('RGB')
44
- img = img.resize((IMAGE_SIZE, IMAGE_SIZE))
45
- img_array = np.array(img)
46
- img_array = img_array / 255.0 # [0,1] aralığına normalizasyon
47
- img_array = np.expand_dims(img_array, axis=0) # Batch boyutu ekleme
48
- return img_array
49
-
50
- # Tahmin fonksiyonu
51
- def predict(img):
52
- model = load_model()
53
-
54
- if model is None:
55
- # Demo modu - rastgele tahminler üret
56
- import random
57
- predictions = np.zeros(len(class_names))
58
- for i in range(len(predictions)):
59
- predictions[i] = random.random()
60
- predictions = predictions / np.sum(predictions) # 1'e normalize et
61
- else:
62
- # Gerçek tahmin
63
- img_array = preprocess_image(img)
64
- predictions = model.predict(img_array)[0]
65
-
66
- # En iyi 3 tahmini al
67
- top_indices = predictions.argsort()[-3:][::-1]
68
- top_predictions = predictions[top_indices]
69
- top_classes = [class_names[i] for i in top_indices]
70
-
71
- # Sonuçları formatla
72
- results = {}
73
- for i, (label, prob) in enumerate(zip(top_classes, top_predictions)):
74
- results[label] = float(prob)
75
-
76
- return results
77
-
78
- # Örnek görseller için bilgi
79
- examples_info = """
80
- ### Örnek Görüntüler
81
- Eğer kendi görüntünüzü yüklemek istemiyorsanız, aşağıdaki örnek görüntülerden birini kullanabilirsiniz:
82
- - Kedi: Evcil kedi görüntüsü
83
- - Köpek: Evcil köpek görüntüsü
84
- - Kelebek: Renkli bir kelebek görüntüsü
85
- """
86
-
87
- # Proje başlığı
88
- title = "🦁 Hayvan Görüntü Sınıflandırıcı"
89
-
90
- # Proje açıklaması
91
- description = """
92
- <div style="text-align: center;">
93
- <h2>Hayvan Görüntü Sınıflandırma Uygulaması</h2>
94
- <p>Bu uygulama, derin öğrenme modeli kullanarak hayvan türlerini tanıyabilen bir sınıflandırıcıdır.</p>
95
- <p>Basitçe bir görüntü yükleyin veya webcam kullanarak fotoğraf çekin, model hangi hayvan olduğunu tahmin edecek!</p>
96
- <p>Model, <strong>90 farklı hayvan sınıfını</strong> tanıyabilmektedir.</p>
97
- <hr>
98
- <p><strong>Nasıl Kullanılır:</strong></p>
99
- <ol>
100
- <li>Bir hayvan resmi yükleyin veya webcam ile çekin</li>
101
- <li>Sonuçları anında görün!</li>
102
- </ol>
103
- </div>
104
- """
105
-
106
- # Özel CSS stilleri
107
- css = """
108
- .gradio-container {
109
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
110
- background-color: #f8f9fa;
111
- }
112
- .footer {
113
- margin-top: 30px;
114
- text-align: center;
115
- color: #666;
116
- border-top: 1px solid #eee;
117
- padding-top: 20px;
118
- }
119
- .examples {
120
- margin-top: 20px;
121
- border: 1px solid #ddd;
122
- border-radius: 10px;
123
- padding: 15px;
124
- background-color: #f5f5f5;
125
- }
126
- h1 {
127
- color: #2C3E50;
128
- }
129
- """
130
-
131
- # Sayfa altı bilgisi
132
- footer = """
133
- <div class="footer">
134
- <p>Bu uygulama TensorFlow ve Gradio kullanılarak geliştirilmiştir.</p>
135
- <p>Derin öğrenme modeli, hayvan görüntülerinden oluşan kapsamlı bir veri seti üzerinde eğitilmiştir.</p>
136
- <p>© 2023 Hayvan Sınıflandırıcı</p>
137
- </div>
138
- """
139
-
140
- # Gradio arayüzü oluşturma
141
- demo = gr.Interface(
142
- fn=predict,
143
- inputs=gr.Image(type="pil", label="Hayvan Görüntüsü Yükle"),
144
- outputs=gr.Label(num_top_classes=3, label="En İyi 3 Tahmin"),
145
- title=title,
146
- description=description,
147
- article=footer,
148
- examples=[
149
- ["example_images/cat.jpg"],
150
- ["example_images/dog.jpg"],
151
- ["example_images/butterfly.jpg"]
152
- ],
153
- css=css,
154
- theme="huggingface",
155
- allow_flagging="never"
156
- )
157
-
158
- # Uygulamayı başlat
159
- if __name__ == "__main__":
160
  demo.launch()
 
1
+ import os
2
+ import sys
3
+ import numpy as np
4
+ import gradio as gr
5
+ import tensorflow as tf
6
+ from PIL import Image
7
+
8
+ # Sabitler
9
+ IMAGE_SIZE = 128
10
+ MODEL_PATH = "best_model.keras" # Kaydedilmiş model dosyasının yolu
11
+
12
+ # Hayvan sınıfları (90 sınıf)
13
+ class_names = [
14
+ 'antelope', 'badger', 'bat', 'bear', 'bee', 'beetle', 'bison', 'boar', 'butterfly',
15
+ 'cat', 'caterpillar', 'chimpanzee', 'cockroach', 'cow', 'coyote', 'crab', 'crow',
16
+ 'deer', 'dog', 'dolphin', 'donkey', 'dragonfly', 'duck', 'eagle', 'elephant', 'flamingo',
17
+ 'fly', 'fox', 'goat', 'goldfish', 'goose', 'gorilla', 'grasshopper', 'hamster', 'hare',
18
+ 'hedgehog', 'hippopotamus', 'hornbill', 'horse', 'hummingbird', 'hyena', 'jellyfish',
19
+ 'kangaroo', 'koala', 'ladybugs', 'leopard', 'lion', 'lizard', 'lobster', 'mosquito',
20
+ 'moth', 'mouse', 'octopus', 'okapi', 'orangutan', 'otter', 'owl', 'ox', 'oyster',
21
+ 'panda', 'parrot', 'pelecaniformes', 'penguin', 'pig', 'pigeon', 'porcupine',
22
+ 'possum', 'raccoon', 'rat', 'reindeer', 'rhinoceros', 'sandpiper', 'seahorse',
23
+ 'seal', 'shark', 'sheep', 'snake', 'sparrow', 'squid', 'squirrel', 'starfish',
24
+ 'swan', 'tiger', 'turkey', 'turtle', 'whale', 'wolf', 'wombat', 'woodpecker', 'zebra'
25
+ ]
26
+
27
+ # Model yükleme fonksiyonu
28
+ def load_model():
29
+ try:
30
+ if os.path.exists(MODEL_PATH):
31
+ model = tf.keras.models.load_model(MODEL_PATH)
32
+ print("Model başarıyla yüklendi!")
33
+ return model
34
+ else:
35
+ print("Model dosyası bulunamadı. Demo modunda çalışılacak.")
36
+ return None
37
+ except Exception as e:
38
+ print(f"Model yüklenirken hata oluştu: {e}")
39
+ return None
40
+
41
+ # Görüntü ön işleme
42
+ def preprocess_image(img):
43
+ img = img.convert('RGB')
44
+ img = img.resize((IMAGE_SIZE, IMAGE_SIZE))
45
+ img_array = np.array(img)
46
+ img_array = img_array / 255.0 # [0,1] aralığına normalizasyon
47
+ img_array = np.expand_dims(img_array, axis=0) # Batch boyutu ekleme
48
+ return img_array
49
+
50
+ # Tahmin fonksiyonu
51
+ def predict(img):
52
+ model = load_model()
53
+
54
+ if model is None:
55
+ # Demo modu - rastgele tahminler üret
56
+ import random
57
+ predictions = np.zeros(len(class_names))
58
+ for i in range(len(predictions)):
59
+ predictions[i] = random.random()
60
+ predictions = predictions / np.sum(predictions) # 1'e normalize et
61
+ else:
62
+ # Gerçek tahmin
63
+ img_array = preprocess_image(img)
64
+ predictions = model.predict(img_array)[0]
65
+
66
+ # En iyi 3 tahmini al
67
+ top_indices = predictions.argsort()[-3:][::-1]
68
+ top_predictions = predictions[top_indices]
69
+ top_classes = [class_names[i] for i in top_indices]
70
+
71
+ # Sonuçları formatla
72
+ results = {}
73
+ for i, (label, prob) in enumerate(zip(top_classes, top_predictions)):
74
+ results[label] = float(prob)
75
+
76
+ return results
77
+
78
+ # Örnek görseller için bilgi
79
+ examples_info = """
80
+ ### Örnek Görüntüler
81
+ Eğer kendi görüntünüzü yüklemek istemiyorsanız, aşağıdaki örnek görüntülerden birini kullanabilirsiniz:
82
+ - Kedi: Evcil kedi görüntüsü
83
+ - Köpek: Evcil köpek görüntüsü
84
+ - Kelebek: Renkli bir kelebek görüntüsü
85
+ """
86
+
87
+ # Proje başlığı
88
+ title = "🦁 Hayvan Görüntü Sınıflandırıcı"
89
+
90
+ # Proje açıklaması
91
+ description = """
92
+ <div style="text-align: center;">
93
+ <h2>Hayvan Görüntü Sınıflandırma Uygulaması</h2>
94
+ <p>Bu uygulama, derin öğrenme modeli kullanarak hayvan türlerini tanıyabilen bir sınıflandırıcıdır.</p>
95
+ <p>Basitçe bir görüntü yükleyin veya webcam kullanarak fotoğraf çekin, model hangi hayvan olduğunu tahmin edecek!</p>
96
+ <p>Model, <strong>90 farklı hayvan sınıfını</strong> tanıyabilmektedir.</p>
97
+ <hr>
98
+ <p><strong>Nasıl Kullanılır:</strong></p>
99
+ <ol>
100
+ <li>Bir hayvan resmi yükleyin veya webcam ile çekin</li>
101
+ <li>Sonuçları anında görün!</li>
102
+ </ol>
103
+ </div>
104
+ """
105
+
106
+ # Özel CSS stilleri
107
+ css = """
108
+ .gradio-container {
109
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
110
+ background-color: #f8f9fa;
111
+ }
112
+ .footer {
113
+ margin-top: 30px;
114
+ text-align: center;
115
+ color: #666;
116
+ border-top: 1px solid #eee;
117
+ padding-top: 20px;
118
+ }
119
+ .examples {
120
+ margin-top: 20px;
121
+ border: 1px solid #ddd;
122
+ border-radius: 10px;
123
+ padding: 15px;
124
+ background-color: #f5f5f5;
125
+ }
126
+ h1 {
127
+ color: #2C3E50;
128
+ }
129
+ """
130
+
131
+ # Sayfa altı bilgisi
132
+ footer = """
133
+ <div class="footer">
134
+ <p>Bu uygulama TensorFlow ve Gradio kullanılarak geliştirilmiştir.</p>
135
+ <p>Derin öğrenme modeli, hayvan görüntülerinden oluşan kapsamlı bir veri seti ��zerinde eğitilmiştir.</p>
136
+ <p>© 2023 Hayvan Sınıflandırıcı</p>
137
+ </div>
138
+ """
139
+
140
+ # Gradio arayüzü oluşturma
141
+ demo = gr.Interface(
142
+ fn=predict,
143
+ inputs=gr.Image(type="pil", label="Hayvan Görüntüsü Yükle"),
144
+ outputs=gr.Label(num_top_classes=3, label="En İyi 3 Tahmin"),
145
+ title=title,
146
+ description=description,
147
+ article=footer,
148
+ css=css,
149
+ theme="huggingface",
150
+ allow_flagging="never"
151
+ )
152
+
153
+ # Uygulamayı başlat
154
+ if __name__ == "__main__":
 
 
 
 
 
155
  demo.launch()