alibayram commited on
Commit
67f2c7b
·
1 Parent(s): 477bcdf

Initial commit for Hugging Face Spaces deployment

Browse files
.gitignore ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ *.egg-info/
24
+ .installed.cfg
25
+ *.egg
26
+
27
+ # PyInstaller
28
+ *.manifest
29
+ *.spec
30
+
31
+ # Installer logs
32
+ pip-log.txt
33
+ pip-delete-this-directory.txt
34
+
35
+ # Unit test / coverage reports
36
+ htmlcov/
37
+ .tox/
38
+ .coverage
39
+ .coverage.*
40
+ .cache
41
+ nosetests.xml
42
+ coverage.xml
43
+ *.cover
44
+ .hypothesis/
45
+
46
+ # Jupyter Notebook
47
+ .ipynb_checkpoints
48
+
49
+ # Environment
50
+ .env
51
+ .venv
52
+ env/
53
+ venv/
54
+ ENV/
55
+ env.bak/
56
+ venv.bak/
57
+
58
+ # IDE
59
+ .idea/
60
+ .vscode/
61
+ *.swp
62
+ *.swo
63
+
64
+ # OS specific
65
+ .DS_Store
66
+ .DS_Store?
67
+ ._*
68
+ .Spotlight-V100
69
+ .Trashes
70
+ ehthumbs.db
71
+ Thumbs.db
72
+
73
+ # Project specific
74
+ örnek görüntüler/
.huggingface-space ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ title: Tümör Tespit Sistemi
2
+ emoji: 🧠
3
+ colorFrom: blue
4
+ colorTo: green
5
+ sdk: streamlit
6
+ sdk_version: 1.40.2
7
+ app_file: app.py
8
+ pinned: false
README.md CHANGED
@@ -1,4 +1,50 @@
1
- # TUMOR DETECTION ANALYSIS SYSTEM
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  # Beyin Tümörü Tespit Projesi
4
 
 
1
+ # Tümör Tespit Sistemi
2
+
3
+ Bu uygulama, MR görüntüleri üzerinden tümör tespiti ve analiz yapmaktadır. Streamlit kullanılarak geliştirilmiş bir web uygulamasıdır.
4
+
5
+ ## Özellikler
6
+
7
+ - MR görüntülerinde tümör tespiti
8
+ - Örnek analizler
9
+ - Hasta bilgilerinin kaydedilmesi
10
+ - Kullanıcı dostu arayüz
11
+
12
+ ## Kullanım
13
+
14
+ Uygulama, sol taraftaki menü çubuğu ile farklı bölümlere erişim sağlar:
15
+
16
+ 1. **Anasayfa**: Uygulamanın genel tanıtımı
17
+ 2. **Hakkımızda**: Uygulama ve ekip hakkında bilgiler
18
+ 3. **Tümör Tespiti**: MR görüntüsü yükleyerek tümör analizi yapma
19
+ 4. **Örnek Analizlerimiz**: Örnek MR görüntüleri ve analizleri
20
+ 5. **Hasta Yorumları**: Kullanıcı yorumları ve geri bildirimleri
21
+ 6. **Bize Ulaşın**: İletişim bilgileri ve iletişim formu
22
+
23
+ ## Teknik Detaylar
24
+
25
+ Uygulama aşağıdaki teknolojileri kullanmaktadır:
26
+
27
+ - Python 3.9+
28
+ - Streamlit
29
+ - Pillow (PIL)
30
+ - NumPy
31
+ - Pandas
32
+ - Matplotlib
33
+ - OpenCV
34
+ - TensorFlow
35
+
36
+ ## Kurulum
37
+
38
+ Uygulamayı yerel olarak çalıştırmak için:
39
+
40
+ ```bash
41
+ pip install -r requirements.txt
42
+ streamlit run tumor_detection_app.py
43
+ ```
44
+
45
+ ## Lisans
46
+
47
+ Bu proje MIT lisansı altında lisanslanmıştır.
48
 
49
  # Beyin Tümörü Tespit Projesi
50
 
app.py ADDED
@@ -0,0 +1 @@
 
 
1
+ import tumor_detection_app
packages.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ libgl1-mesa-glx
2
+ libglib2.0-0
requirements.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ streamlit
2
+ Pillow
3
+ numpy
4
+ pandas
5
+ h5py
6
+ matplotlib
7
+ opencv-python
8
+ scikit-learn
9
+ tensorflow
sample_images/beyintumor1.jpg ADDED
sample_images/images.jpeg ADDED
sample_images/index.jpeg ADDED
sample_images/indir (1).jpeg ADDED
sample_images/indir (2).jpeg ADDED
sample_images/indir (3).jpeg ADDED
sample_images/indir (4).jpeg ADDED
sample_images/indir (5).jpeg ADDED
sample_images/indir (6).jpeg ADDED
sample_images/indir (7).jpeg ADDED
sample_images/indir (8).jpeg ADDED
sample_images/indir.jpeg ADDED
sample_images/tumor23.webp ADDED
setup.sh ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Install Python dependencies
4
+ pip install -r requirements.txt
5
+
6
+ # Create directories if they don't exist
7
+ mkdir -p sample_images
8
+
9
+ # Print completion message
10
+ echo "Setup completed successfully!"
tumor_detection_app.py CHANGED
@@ -1,4 +1,3 @@
1
-
2
  import streamlit as st
3
  from PIL import Image
4
  import numpy as np
@@ -91,15 +90,19 @@ st.title("Tümör Tespit Sistemi")
91
 
92
  # Menü çubuğu oluştur, her seçenek için benzersiz key parametresi ekle
93
  # Sidebar menu
94
- menu = st.sidebar.selectbox("Menü", ["Anasayfa", "Hakkımızda", "Tümör Tespiti","Örnek Hasta Analizlerimiz", "Hasta Yorumları", "Bize Ulaşın"], key="menu_selectbox")
95
 
96
  # Menüye göre sayfaların içeriğini değiştir
97
  if menu == "Anasayfa":
98
  st.markdown('<div class="header"><h2>Hoş Geldiniz!</h2></div>', unsafe_allow_html=True)
99
  st.write("Bu uygulama, MR görüntüleri üzerinden tümör tespiti ve analiz yapmaktadır.")
100
  # Resmi yükleyin
101
- image = Image.open("/Users/eceguney/Desktop/veri bilimi/kod calismalarim/mri/index.jpeg")
102
- st.image(image, caption="Beyin Tümörü Tespiti", use_container_width=True)
 
 
 
 
103
 
104
  elif menu == "Hakkımızda":
105
  st.markdown('<div class="header"><h2>Hakkımızda</h2></div>', unsafe_allow_html=True)
@@ -118,95 +121,69 @@ elif menu == "Hakkımızda":
118
  """)
119
 
120
  # "Örnek Analizlerimiz" sekmesi
121
- elif menu == "Örnek Hasta Analizlerimiz":
122
  st.markdown('<div class="header"><h2>Örnek Analizlerimiz</h2></div>', unsafe_allow_html=True)
123
- folder_path = "/Users/eceguney/Desktop/veri bilimi/kod calismalarim/mri/dataset/data/"
124
-
125
- # Dizin içindeki .mat dosyalarını listeleme
126
- mat_files = [f for f in os.listdir(folder_path) if f.endswith('.mat')]
127
-
128
- # İlk 20 görüntü ile sınırlama
129
- mat_files = mat_files[:20]
130
-
131
- # Görüntülerde tümör olup olmadığını kontrol etmek için sayaç
132
- tumor_found_count = 0
133
- non_tumor_count = 0
134
-
135
- # Her bir .mat dosyasını işlemek için döngü
136
- for mat_file in mat_files:
137
- file_path = os.path.join(folder_path, mat_file)
138
-
139
- # Dosyayı açma
140
- with h5py.File(file_path, 'r') as data:
141
- cjdata = data['cjdata']
142
-
143
- # Görüntü verisini alma
144
- image = np.array(cjdata['image']) # Görüntü
145
-
146
- # 'tumorBorder' verisini alma
147
- tumor_border = None
148
- if 'tumorBorder' in cjdata:
149
- tumor_border = np.array(cjdata['tumorBorder'])
150
- tumor_found_count += 1 # Tümör bulunan görüntü sayısını artır
151
-
152
- # 'tumorMask' verisini alma (Tümör maskesi var mı?)
153
- tumor_mask = None
154
- if 'tumorMask' in cjdata:
155
- tumor_mask = np.array(cjdata['tumorMask'])
156
-
157
- # Görüntüyü matplotlib ile hazırlama
158
- fig, ax = plt.subplots()
159
- ax.imshow(image, cmap='gray') # Siyah-beyaz görüntü
160
-
161
- # Eğer tümör sınırı varsa, bunu kırmızı renkte çizme
162
- if tumor_border is not None:
163
- ax.plot(tumor_border[:, 0], tumor_border[:, 1], color='red', label="Tümör Sınırları", linewidth=2)
164
- else:
165
- non_tumor_count += 1 # Tümör olmayan görüntü sayısını artır
166
-
167
- # Maskeyi kırmızı olarak ekleme (şeffaflık ile)
168
- if tumor_mask is not None:
169
- ax.imshow(tumor_mask, cmap='Reds', alpha=0.5) # Kırmızı tonlarında ve şeffaf olarak eklenmiş
170
-
171
- # Tümörün boyutunu hesaplama (maskedeki piksel sayısı)
172
- tumor_area = np.sum(tumor_mask) # Tümör maskesindeki beyaz piksel sayısı (tümör alanı)
173
-
174
- # Risk analizi
175
- if tumor_area < 500:
176
- risk_message = "Düşük risk: Küçük tümör. Düzenli takip gereklidir."
177
- elif tumor_area < 2000:
178
- risk_message = "Orta risk: Orta büyüklükte tümör. Hekiminizle görüşün."
179
- else:
180
- risk_message = "Yüksek risk: Büyük tümör. Acil müdahale gerekebilir."
181
-
182
- # Mesaj kutusunda tümör durumu ve risk bilgisini gösterme
183
- message = f"Tümör Alanı: {tumor_area} piksel\n{risk_message}"
184
- else:
185
- # Tümör bulunmayan görüntüler için mesaj
186
- message = "Tümör bulunmamaktadır.\nSağlıklı günler dileriz."
187
-
188
- # Başlık ve etiket ekleme
189
- ax.set_title(f"MR Görüntüsü ve Tümör Sınırları ({mat_file})")
190
- ax.legend()
191
-
192
- # Görüntüyü Streamlit'te gösterme
193
- st.pyplot(fig)
194
- st.markdown(f"**{message}**")
195
-
196
- # Açıklama metnini ekleyelim
197
- st.markdown(f"### Açıklama: {mat_file}")
198
- st.write("""
199
- Bu görüntü, beyin MR'ı üzerinde yapılan tümör tespiti analizinin bir örneğidir.
200
- Görüntüdeki tümör sınırları (eğer varsa) kırmızı renkte gösterilmektedir.
201
- Ayrıca, tümör alanı hesaplanarak risk analizi yapılmaktadır.
202
- Eğer tümör alanı küçükse, düşük risk kategorisinde değerlendirilir;
203
- orta büyüklükte ise orta risk, büyük bir tümör var ise yüksek risk kategorisinde yer alır.
204
- Eğer görüntüde tümör yoksa, bu da açıkça belirtilir.
205
- """)
206
-
207
- # Sonuçları yazdırma
208
- st.write(f"Tümör Bulunan Görüntüler: {tumor_found_count}")
209
- st.write(f"Tümör Olmayan Görüntüler: {non_tumor_count}")
210
 
211
  elif menu == "Tümör Tespiti":
212
  st.markdown('<div class="header"><h2>Tümör Tespiti</h2></div>', unsafe_allow_html=True)
 
 
1
  import streamlit as st
2
  from PIL import Image
3
  import numpy as np
 
90
 
91
  # Menü çubuğu oluştur, her seçenek için benzersiz key parametresi ekle
92
  # Sidebar menu
93
+ menu = st.sidebar.selectbox("Menü", ["Anasayfa", "Hakkımızda", "Tümör Tespiti","Örnek Analizlerimiz", "Hasta Yorumları", "Bize Ulaşın"], key="menu_selectbox")
94
 
95
  # Menüye göre sayfaların içeriğini değiştir
96
  if menu == "Anasayfa":
97
  st.markdown('<div class="header"><h2>Hoş Geldiniz!</h2></div>', unsafe_allow_html=True)
98
  st.write("Bu uygulama, MR görüntüleri üzerinden tümör tespiti ve analiz yapmaktadır.")
99
  # Resmi yükleyin
100
+ try:
101
+ image = Image.open("sample_images/index.jpeg")
102
+ st.image(image, caption="Beyin Tümörü Tespiti", use_container_width=True)
103
+ except FileNotFoundError:
104
+ st.warning("Örnek görüntü dosyası bulunamadı.")
105
+ st.info("Kendi MR görüntünüzü yükleyerek tümör tespiti yapabilirsiniz.")
106
 
107
  elif menu == "Hakkımızda":
108
  st.markdown('<div class="header"><h2>Hakkımızda</h2></div>', unsafe_allow_html=True)
 
121
  """)
122
 
123
  # "Örnek Analizlerimiz" sekmesi
124
+ elif menu == "Örnek Analizlerimiz":
125
  st.markdown('<div class="header"><h2>Örnek Analizlerimiz</h2></div>', unsafe_allow_html=True)
126
+
127
+ # Check if the data directory exists
128
+ folder_path = "sample_images"
129
+ if not os.path.exists(folder_path):
130
+ st.warning("Örnek görüntüler klasörü bulunamadı.")
131
+ st.info("Kendi MR görüntünüzü yükleyerek tümör tespiti yapabilirsiniz.")
132
+ else:
133
+ # Dizin içindeki görüntü dosyalarını listeleme
134
+ try:
135
+ image_files = [f for f in os.listdir(folder_path) if f.endswith(('.jpg', '.jpeg', '.png', '.webp'))]
136
+
137
+ # İlk 20 görüntü ile sınırlama
138
+ image_files = image_files[:20]
139
+
140
+ # Görüntülerde tümör olup olmadığını kontrol etmek için sayaç
141
+ tumor_found_count = 0
142
+ non_tumor_count = 0
143
+
144
+ # Her bir görüntü dosyasını işlemek için döngü
145
+ for img_file in image_files:
146
+ file_path = os.path.join(folder_path, img_file)
147
+
148
+ # Görüntüyü açma
149
+ try:
150
+ image = Image.open(file_path)
151
+ st.image(image, caption=f"MR Görüntüsü: {img_file}", use_container_width=True)
152
+
153
+ # Basit bir analiz: Görüntünün ortalama parlaklık değerini alalım
154
+ image_array = np.array(image)
155
+ average_brightness = np.mean(image_array)
156
+
157
+ # Tümör var mı yok mu tahmini (basit bir yaklaşım)
158
+ if average_brightness < 100: # Bu eşik değeri tamamen örnektir
159
+ tumor_status = "Tümör Tespit Edildi"
160
+ explanation = "Görüntüde yüksek kontrastlı alanlar tespit edildi, bu da tümör olasılığını artırıyor."
161
+ tumor_found_count += 1
162
+ else:
163
+ tumor_status = "Tümör Yok"
164
+ explanation = "Görüntüde belirgin bir kontrast farkı bulunmamaktadır, bu da tümör olmadığına işaret edebilir."
165
+ non_tumor_count += 1
166
+
167
+ # Sonuçları göster
168
+ st.markdown(f"**Sonuç: {tumor_status}**")
169
+ st.write(explanation)
170
+
171
+ # Açıklama metnini ekleyelim
172
+ st.markdown(f"### Açıklama: {img_file}")
173
+ st.write("""
174
+ Bu görüntü, beyin MR'ı üzerinde yapılan tümör tespiti analizinin bir örneğidir.
175
+ Görüntüdeki kontrast değerleri analiz edilerek tümör varlığı tahmin edilmektedir.
176
+ Bu basit bir analiz olup, gerçek tıbbi teşhis için uzman görüşü gereklidir.
177
+ """)
178
+
179
+ except Exception as e:
180
+ st.error(f"Görüntü işlenirken bir hata oluştu: {e}")
181
+
182
+ # Sonuçları yazdırma
183
+ st.write(f"Tümör Bulunan Görüntüler: {tumor_found_count}")
184
+ st.write(f"Tümör Olmayan Görüntüler: {non_tumor_count}")
185
+ except Exception as e:
186
+ st.error(f"Örnek görüntüler işlenirken bir hata oluştu: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
 
188
  elif menu == "Tümör Tespiti":
189
  st.markdown('<div class="header"><h2>Tümör Tespiti</h2></div>', unsafe_allow_html=True)