Flutter ile Firebase MLKit Entegrasyonu


Görsel Referansı


Flutter ile Makine Öğrenmesi konusuna girmeden önce biraz Flutter'dan bahsetmek istiyorum:


Flutter: Google tarafından üretilen ve geliştirilen açık kaynak kodlu mobil uygulama geliştirme UI framework'tür. Ayrıca web, masaüstü ve gömülü sistemlerde de kullanılmak için Google tarafından geliştirilmeye devam etmektedir.


Makine Öğrenmesin'den kısaca bahsetmek gerekirse yapay zekanın bir alt dalıdır. Öğrenebilen ve verileri üzerinde tahmin yürütebilen ve bu tahminleri kendi kendine uygulayan, algoritmaların inşalarını araştıran bir sistemdir diyebiliriz.


Görsel Referansı


Makine Öğrenmesi yoluyla, makinemizi eğitebiliriz ve kendi başına karar verebilmesini sağlayabiliriz. Cihazlar üzerinde Makine Öğrenmesi birçok uygulamada kullanılmaktadır. Örneğin:

  • Akıllı Asistanlar

  • Akıllı Mesaj cevaplama sistemleri

  • Snapchat Filtreleri

  • Instgram Filtreleri

  • Google Lens

gibi uygulamalar Makine Öğrenmesini kullanarak mobil cihazlarda kullanılıyor.

Flutter kullanarak yaptığımız mobil uygulamalara da Makine Öğrenmesini entegre edebiliriz. Peki bunu nasıl yapacağız?


Firebase ML Kit ile;


ML Kit: Google tarafından üretilmiş, mobil geliştiricilerin uygulamalarına Makine Öğrenmesi yeteneklerini eklemelerini kolaylaştıran bir SDK’dir. ML Kit ile mobil uygulamanıza çeşitli özellikleri ekleyebilirsiniz;

  • Metin tanıma

  • Yüz tanıma

  • Görüntü etiketleme

  • Barkod okuma

  • Dil tanıma

  • Dil çevirme

  • Görselleri yazıya çevirme

  • Yazıları görsellere çevirme

gibi işlemler de kullanılmaktadır. Daha fazla kullanım alanları geliştiricinin hayal gücüne kalmıştır. ML Kit önemli bir SDK dir. Google Cloud Vision ve Cloud Auto ML gibi farklı Google Cloud platform hizmetleri tarafından desteklenmektedir.


Firebase ML Kit Nasıl Kullanılır:


Firebase ML, makine öğrenmesini kullanmak için size bazı seçeneklerden bahsedeceğim.

Bunlar;

  1. Firebase Konsoldan kolay bir şekilde kullanmak

  2. Cloud AutoML Vision kullanmak

  3. Hazır Makine öğrenmesi API’leri kullanmak

1) Firebase Konsoldan kolay bir şekilde kullanmak:

  • Firebase Konsoluna giriş yapın ve yeni proje ekleyin.

  • Proje detayını ve ismini girin ve Android logosuna tıklayın daha sonra kontrol panelinden uygulama ekleyin.



  • Uygulamayı kaydedin; Android klasörünüzdeki /app/build.gradle dosyasına gidin.


  • Google-service.json dosyasını indirin ve uygulama klasörünüze yerleştirin.


  • Aşağıdaki kodları aynı şekilde ekleyin.

buildscript{
   repositories{
     //Aşağıdaki satıra sahip olup olmadığınızı kontrol edin.
     google() //Google maven deposu.
   }
   dependencies{
        }     
    }
    
    allprojects{
        repositories{
     }    
    
}
    

  • Aşağıdaki kodları /app/build.gradle dosyasına ekleyin.

        apply plugin: 'com.android.application'
//Bu  satırı ekleyin.
        apply plugin: 'com.google.gms.google-services'

        dependencies{

}       

daha sonra;

FLUTTER UYGULAMANIZI KODLAYIN

  • Flutter uygulamanızı oluşturun.

  • pubspec.yaml dosyasına bir Firebase ML Kit paketi ekleyin.

dependencies:firebase_ml_vision: ^0.9.3+8

  • Görüntüleri etiketlemek için /app/build.gradle dosya dizinine aşağıdaki kodu ekleyin.

android {
   
     dependencies{
       
             api 'com.google.firebase:firebase-ml-vision-image-label-  
             
     model:17.0.2'
     
         }
}

  • Uygulamanızda yüz algılama için /app/build.gradle dosya dizinine aşağıdaki kodu ekleyin.

android{
    
    dependencies{
   
      api 'com.google.firebase:firebase-ml-vision-face-model:17.0.2'
  
    }
}    

  • /app/src/main/AndroidManifest.xml dizinine aşağıdaki kodu ekleyin.

<application>
   
     <meta-data
     
            android:name="com.google.firebase.ml.vision.DEPENDENCİES"
            android:value="ocr"/>

     </application>    

Projenin devamı için Cloud AutoML Vision kullanmamız gerekiyor. Aynı şekilde yönergelere devam edip projemizin yapımını devam ediyoruz.


2) Cloud AutoML Vision Kullanma: İkinci bölümde hem Coud AutoML Vision'u nasıl kullanıldığını anlatacağım, hem de bu projeye ekleyip projemizi yapımını sağlıklı bir şekilde devam ettireceğiz.


  • İlk olarak Firebase VisionImage oluşturun oluşturmak için bu kodları ekleyin.

final File imageFile = getImageFile();

final FirebaseVisionImage visionImage = 

FirebaseVisionImage.fromFile(imageFile);

  • Barkod, resim, yüz ve metin tanımak için aşağıdaki kodlar ile dedektörleri oluşturun.

final BarcodeDetector barcodeDetector =                                             
    FirebaseVision.instance.barcodeDetector();
final ImageLabeler cloudLabeler = 
    FirebaseVision.instance.cloudImageLabeler();
final FaceDetector faceDetector = 
    FirebaseVision.instance.faceDetector();
final ImageLabeler labeler = FirebaseVision.instance.imageLabeler();
final TextRecognizer textRecognizer = 

    FirebaseVision.instance.textRecognizer();

  • Metin tanıması dışında tüm dedektörleri istediğiniz şekilde aşağıdaki kod ile yapılandırabilirsiniz.

final ImageLabeler labeler = 

FirebaseVision.instance.imageLabler(ImageLabelerOptions(confidenceThreshold: 0.75),

);

  • VisionImage ile ProcessImage ögesini ayıklayın.


final List<Barcode> barcodes = await 
   barcodeDetector.detectInImage(visionImage)   
final List<ImageLabel> cloudLabels = await 
   cloudLabeler.processImage(visionImage);
final List<Face> faces = await faceDetector.processImage(visionImage);
final List<ImageLabel> labels = await 
   labeler.processImage(visionImage);
final VisionText visionText = await 
textRecognizer.processImage(visionImage);



Verileri Ayıklayın:

  • İlk olarak barkodları ayıklıyoruz.

for (Barcode barcode in barcodes) {    
  final Rectangle<int> boundingBox = barcode.boundingBox; 
      final List<Point<int>> cornerPoints = barcode.cornerPoints;
    final String rawValue = barcode.rawValue;  
  final BarcodeValueTypevalueType = barcode.valueType;  

switch (valueType) {

  case BarcodeValueType.wifi:
    final String ssid = barcode.wifi.ssid;
       final String password = barcode.wifi.password;
    final BarcodeWiFiEncryptionType type = barcode.wifi.encryptionType;
   break;
 
 case BarcodeValueType.url:
     final String title = barcode.url.title;
       final String url = barcode.url.url;
   break;
  
   }
 
 }       

  • Yüz tanımayı ayıklayın.

for (Face face in faces) {

     final Rectangle<int> boundingBox = face.boundingBox;
   final double rotY = face.headEulerAngleY; // Bu kod parçası Y ekseninde döndürür
       
  
   final double rotZ = face.headEulerAngleZ; 
 
 FaceDetectorOptions (mouth, ears,
  //Gözleri,yanakları ve burunu tanır):
 
   final FaceLandmark leftEar = 
 face.getLandmark(FaceLandmarkType.leftEar);
    
      if (leftEar != null) {
       final Point<double> leftEarPos = leftEar.position;
     }  
      if (face.smilingProbability != null) {
         final double smileProb = face.smilingProbability;
      }  
      if (face.trackingId != null) {
           final int id = face.trackingId;
      
      }
     
 }

  • Son olarak close() komutu ile verileri serbest bırakın.

barcodeDetector.close();

cloudLabeler.close();

faceDetector.close();

labeler.close();

textRecognizer.close();

Tüm adımları bitirdikten sonra mobil uygulamanız artık hazır haldedir.

Bu uygulamada;

  • Metin Tanıma

  • Yüz Tanıma

  • Görüntü Etiketleme

  • Barkod Okuma

özelliklerinizi kullanabilirsiniz.


3) Hazır Makine Öğrenmesi API’leri kullanımı:


Önceden eğitilmiş hazır Makine Öğrenmesi API'lerinin kullanılmasıdır.

Yüz algılamadan metin tanımaya kadar, veri girişlerini besleyerek bu uygulamaları analiz edebilirsiniz.



Görsel de gördüğünüz gibi tüm Makine Öğrenmesi API'leri hazır olarak verilmiştir. Bunlar fiyatlandırılmaktadır. Ayda 1.000 adet kullanıma kadar ücretsizdir, daha sonra ise ücretlendirilmektedir.



Get Started in ML Kit ikonuna tıklayarak bu API'leri kolay bir şekilde başlatabilirsiniz.


Flutter ile Makine Öğrenmesi konusunu böylelikle tamamlamış olduk. Umarım faydalı olmuştur.


Github: https://github.com/TheMarsocx/FluttterMachineLearning


Teşekkürler.


Kaynaklar:

https://flutter.dev/

https://flutter.dev/docs/development/data-and-backend/firebase

https://firebase.google.com/docs/android/setup

https://firebase.flutter.dev/docs/overview/

https://icml.cc/Conferences/2010/papers/493.pdf

https://ieeexplore.ieee.org/abstract/document/7524469

https://jamanetwork.com/journals/jama/article-abstract/398051

https://aip.scitation.org/doi/abs/10.1063/1.5143373


#flutter #machinelearining #ai #mlkit #firebase #deeplearning



Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
JetBrains Hakkında Detaylı Bilgi Alın

© 2020 by mobiler.dev

mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın