• Hakkımızda
  • Yazı Gönder
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
No Result
View All Result
Home Yapay Zeka

Akciğer Pnömonisinin Mobil Uygulama İle Tespiti (Google Teachable Machine + TFLite + Flutter)

Ali Murat Çevik by Ali Murat Çevik
Nisan 16, 2021
in Yapay Zeka
7 min read
1
Akciğer Pnömonisinin Mobil Uygulama İle Tespiti (Google Teachable Machine + TFLite + Flutter)
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

Giriş

Tüm dünyayı etkisi altına alan Covid-19 salgını sonrasında günlük hayatımıza pek çok yeni kavram girdi. Maske, mesafe, hijyen üçlüsüyle büyümeye başlayan Covid-19 lügatı ilerleyen dönemlerde zatürre, pnömoni gibi kavramları bünyesine kattı. Dileğim bu salgının daha fazla canlıya zarar gelmeden sona ermesidir. Bu yazının amacı Kaggle’ da akciğer röntgenlerini içeren veri setinden yola çıkarak, Google ürünleriyle bir Tensorflow Lite çıktısı elde edip bu çıktıyı Flutter SDK kullanarak mobil uygulama geliştirmektir. Önemli Not: Bu yazıdaki geliştirilen uygulamanın vereceği sonuçlar kesinlikle teşhis için kullanılmamalıdır. Teknik kısımlara başlamadan önce, pnömoninin ne olduğunu inceleyelim:

Şekil 1: Sağlıklı ve Pnömonili Akciğer Karşılaştırması

Pnömoni Nedir? | COVID-19 Sözlüğü

T.C Sağlık Bakanlığı resmi web sitesinde yer alan COVID-19 sözlüğünde Pnömoni,
“Akciğer dokusunun iltihabı; zatürre.
Açıklama: Koronavirüs ailesinde yer alan virüsler, insanlarda özellikle soğuk algınlığı, pnömoni ve çeşitli solunum yolu enfeksiyonlarına neden olabilmektedir. COVID-19 pnömonisine SARS-CoV-2 neden olmaktadır.”  [1] şeklinde belirtilmiştir.

Veri Seti | Kaggle ❤

Kaggle’da paultimothymoon kullanıcısı tarafından sağlanan veri setinde yer alan açıklama yazısı şu şekilde verilmiştir: “Göğüs röntgeni görüntüleri (ön-arka), Guangzhou Kadın ve Çocuk Tıp Merkezi’nden bir ila beş yaşındaki pediyatrik hastaların retrospektif kohortlarından seçildi. Tüm göğüs röntgeni görüntülemesi, hastaların rutin klinik bakımının bir parçası olarak gerçekleştirildi. Göğüs röntgeni görüntülerinin analizi için, tüm göğüs radyografileri başlangıçta tüm düşük kaliteli veya okunamayan taramalar kaldırılarak kalite kontrol için tarandı. Görüntüler için teşhisler daha sonra AI sistemini eğitmek için temizlenmeden önce iki uzman doktor tarafından derecelendirildi. Herhangi bir not verme hatasını hesaba katmak için, değerlendirme seti de üçüncü bir uzman tarafından kontrol edildi.” [2]

Hazırız!

Veri setini indirildi, şarjımız full ve simulator sorunsuz açıldığına göre artık başlayabiliriz. 🤓

Adım 1: Teachable Machine

Öncelikle https://teachablemachine.withgoogle.com adresine giderek bir Image Project oluşturalım, burada sık karşılaşılan problemlerden birisi veri sayımız çok fazla olduğu için, upload adımında tarayıcının crash olmasıdır. Safari ile denemelerimde 3. seferde upload edebildim. Chrome ile tek seferde sorunsuz yükleme gerçekleştirebildim. Önerim başlamadan önce eğer yoksa Chrome’u edinmeniz yönünde;

1*lg8tBTFzADPdyRI8whZPVA
Şekil 2: Teachable Machine Image Project Seçimi

 

Yeni projeyi yarattıktan sonra sınıflarımızı oluşturmamız gerekiyor. Biz bu örnekte yalnızca sağlıklı veya hastadeğerlendirmesi yapacağız. Bunun için 2 adet class yeterli olacaktır. Sınıfları Pnomoni ve Healthy olarak isimlendirdim:

1*74ciGcQQKecXdkiA9tj6MQ
Şekil 3: Sınıflar

 

İndirmiş olduğumuz veri seti içerisinde train klasöründeki verileri eğitim için kullanacağız. Eğitim verileri içerisinde Pnömoni için 3875 image, sağlıklı akciğer için 1341 image bulunuyor. Klasör içerisindeki görselleri sürükle bırak yöntemiyle ilgili sınıflara yükleyebilirsiniz. Tarayıcınızın crash olma durumu için verileri bölerek yükleme yapabilirsiniz.

1*ZBJQUPg6HpD7NCbT7BgPzQ
Şekil 4: Veri Seti

 

Yükleme işleminin ardından sırada model eğitimi var. Burada karşımıza bazı kavramlar çıkıyor. Bu kavramları kısaca özetlemeye çalışacağım.

Epochs: Epoch sayısı, eğitim gerçekleşirken ağa verilerin kaç defa gösterileceğini belirtir. Kısaca döngü sayısı diyebiliriz. Epoch sayısının düşük olması doğruluğu azaltabileceği gibi çok yüksek olması da yine doğruluk oranını olumsuz yönde etkileyebilmektedir. Buradaki ölçüt, doğruluk oranı düşmeye başlayana kadar epoch sayısının artırılması yönündedir.

Batch Size: Veri sayısının çok olması göz önünde bulundurulduğunda eğitim işleminin ne kadar uzun süreceğini tahmin etmek güç değil. Bu durumda veri setini bölerek eğitim gerçekleştirmek gerekir. Batch boyutu ile modelin aynı anda kaç veriyi işleyeceğini bildiririz. Batch boyutu platformda default olarak 16 verilmiştir. Biz burada Batch sayısını 32 yaparak ilerleyeceğiz.

Learning Rate: Öğrenme oranı, bir ağın parametlerini ne kadar hızlı güncellediğini gösterir. Öğrenme oranının düşük olması eğitimi yavaşlatır ancak sorunsuz bir şekilde birleştirir. [3][4]

Değindiğim bu kavramları eğitim kısmında Epochs: 75 ve Batch Size: 32 olacak şekilde güncelledim. Ardından Train diyerek eğitim işlemini başlattım. Bu kısımda yine “Tarayıcı yanıt vermiyor” hatası ile karşılaşılabilir. Hiçbir müdahalede bulunulmadığı taktirde kendisine gelecektir 🤓

1*N494g91tqmO7pONh etRlA
Şekil 5: Özelleştirme İşlemleri ve Eğitim

 

Eğitim işleminin bitmesinin ardından sağ tarafta yeni bir label oluşacaktır. Input tipini Webcam yerine File olarak değiştirip, test klasörü içerisinde bulunan akciğer görüntülerini bir test edelim:

Şekil 6: Test İşlemleri

 

Test sonucu şaşırtıcı. Birlikte deneyimlediğimiz bu işlemler sırasında çokta profesyonel gibi görünmeyen bir eğitim yöntemi gerçekleştirdik. Sonuçların iyileştirilmesi için epoch sayısını değiştirerek tekrar deneyebilirsiniz ancak aşırı öğrenme durumunda modelin ezberleme riskini göz önünde bulundurarak adım adım epoch sayısını yükseltmek daha faydalı olabilir. Buradaki işlemin bitmesine son bir adım kaldı. Export Model diyerek TFLite çıktımızı alacağımız adıma geçelim. Açılan pencerede Tensorflow Lite sekmesine geçip, Floating pointi seçtikten sonra modeli indirelim. İndirmiş olduğumuz converted_tflite.zip dosyası içerisinde TfLite formatına dönüştürülmüş olan model ve label bilgisi içeren txt dosyası assets klasörüne eklenmek üzere bizleri bekliyor olacak 🙂

1*q1Na9dqhAy PSmcnqaJTmg
Şekil 7: Modelin TfLite Formatına Çevrilip Dışa Aktarılması

 

Adım 2: Flutter İle Mobil Uygulama Geliştirilmesi

Model ile ilgili işlemlerin tamamlanmasının ardından Flutter’ın nimetlerinden faydalanmaya başlıyoruz. Flutter resmi reposunda (pub.dev) yer alan tflite paketi yardımıyla modelimizi mobil uygulama üzerinde çalıştıracağız.

O halde ihtiyacımız olan temel paketleri belirlemekle başlayalım:

tflite: ^1.1.1 
image: ^3.0.2 
image_picker: ^0.7.3
path_provider: ^1.6.1

bu temel paketler uygulamamızın çalışır duruma gelmesi için yeterlidir. Arayüz ve çeşitli işlevler için:

circular_bottom_navigation: ^1.0.1
cupertino_icons: ^0.1.2
 flutter_launcher_icons:
url_launcher:
font_awesome_flutter:

paketlerini de kullandım. Eğitim sonucu aldığımız çıktılar labels.txt ve model_unquant.tflite dosyalarını assets klasörü içerisine kopyalayalım. Pubsec.yaml dosyamıza assets pathlerini vermeyi unutmayalım.

Bir önceki yazımda Flutter ile TfLite kullanımını detaylı olarak anlatmıştım. Burada sadace TFLite kısmına ait dart dosyasını sizinle paylaşacağım. Detaylar için aşağıdaki yazımı inceleyebilirsiniz 🙂

https://medium.com/flutter-türkiye/flutter-ile-tensorflow-lite-kullanimi-b026ff4d101c

Galeriden akciğer röntgeni seçilerek değerlendirmeleri yaptığım dart dosyası şu şekildedir:


loadModel
, classifyImage, pickImage asıl olarak işlevleri yürüttüğüm metodlar. setState yapısını circular progress indicator ve label.txt dosyasından gelen sonucun durumunu yönetmek için kullandım.

loadModel(), TfLite paketi yardımıyla modelimizin uygulama belleğine alınmasını sağlıyor. model ve labelse ait pathleri burada belirtmemiz yeterli olacaktır.

pickImage(), galeriden akciğer röngtenlerine ait fotoğrafları seçmemize yarayacak olan bir metot 👀

classifyImage(), asıl işlevimiz 💁🏻. TfLite paketimize, galeriden veya kamera ile çektiğimiz fotoğrafı göndererek modelin çalışmasını sağlıyor. runModelOnImage() ‘ın result parametlerine baktığımızda tek kümeli bir json dönüyor.

Sonuç json yapımız:

{
  index: 0,
  label: “healthy”,
  confidence: 1.0
}

1*yFrRlZZRL5ILK3Nl5DPTfA
Mobil Uygulamanın Ekran Görüntüleri

 

Projenin kaynak kodlarına buradan ulaşabilirsiniz. İyi çalışmalar 🙅🏻‍♂️

Kaynaklar
[1] T.C Sağlık Bakanlığı, https://covid19.saglik.gov.tr/TR-66493/p.html
[2] Kaggle, https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia
[3] Devhunter, https://devhunteryz.wordpress.com/2018/08/27/yapay-sinir-aglarindaki-hiperparametreler
[4] Deep Learning Türkiye-Medium, https://medium.com/deep-learning-turkiye/derin-ogrenme-uygulamalarinda-en-sik-kullanilan-hiper-parametreler-ece8e9125c4
[5] Flutter-PubDev, www.pub.dev
[6] Freepik, www.freepik.com

alim cevik
Tags: Deep LearningFlutter
SendTweet6Share2Share
Önceki Gönderi

Ethereum 2.0 Geliyor!

Sonraki Gönderi

Genç Bi’Fest Başlıyor!

İlgili Yazılar

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

by Yazılım Karavanı
Şubat 10, 2025
0

Dijital dünyada her gün milyonlarca veri üretilirken, bireyler ve markalar hakkında yapılan yorumlar, haberler ve paylaşımlar büyük bir bilgi havuzu...

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

by Ali Murat Çevik
Haziran 27, 2023
0

Son zamanların popüler araçlarının çoğunlukla yapay zeka tabanlı olduğunu görmekteyiz. Bu tür sistemlerle ilk defa tanışanlar henüz ChatGPT’ nin verdiği...

VGG-19 Transfer Learning ile Görüntü Sınıflandırma

VGG-19 Transfer Learning ile Görüntü Sınıflandırma

by Ali Murat Çevik
Eylül 12, 2022
0

VGG19 Nedir? VGG19, adını Oxford Üniversitesi’nde bulunan “Visual Geometry Group” isimli gruptan almaktadır. Sonda bulunan 19 ise katman sayısını belirtmektedir....

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

by Emre İnaç
Ağustos 23, 2022
0

CHATBOT NEDİR ? Chatbot, bir cihazda, (Siri, Alexa, Google Asistan vb.), uygulamada, web sitesinde veya diğer ağlarda bulunan yapay zeka...

Makine Öğrenimi Nedir?

Makine Öğrenimi Nedir?

by Emre İnaç
Ağustos 4, 2022
0

Makine Öğrenimi (ML), Yapay Zeka(AI)’ nın bir alt sınıfıdır. Makine öğrenimi; insana ait akıllı karar verme ve tahmin davranışlarını taklit...

Next Post
Genç Bi’Fest Başlıyor!

Genç Bi'Fest Başlıyor!

Git Nedir? Nasıl Kullanılır?

Git Nedir? Nasıl Kullanılır?

Yorumlar 1

  1. Frkn says:
    2 sene ago

    Hocam selamlar, ilgili github reposuna ulaşamıyorum. Bu tarz bir projemiz var bazı konularda takıldık size soru sorma imkanımız varmı acaba ?

  • Popüler
  • Yorumlar
  • En Yeniler
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Temmuz 26, 2021
B Ağaçları (B Trees)

B Ağaçları (B Trees)

Ağustos 24, 2020
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ağustos 20, 2020
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

Mayıs 18, 2018
2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

6
Magento 2 Detaylı Kurulum & Hatalar

Magento 2 Detaylı Kurulum & Hatalar

5
Flutter’da TFLite Kullanımı

Flutter’da TFLite Kullanımı

4
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

2
Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Mart 19, 2025
Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Mart 10, 2025
Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Şubat 10, 2025
OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

Aralık 14, 2024

Reklam

Yazılım Karavanı | Bilim – Teknoloji – Mühendislik

Bilgi Teknolojileri alanına meraklı herkesin buluşma noktası!

No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar

© 2020 Yazılım Karavanı Kaynak gösterilmesini rica ederiz.