1. Giriş
ML Kit, Google'ın makine öğrenimi uzmanlığını Android ve iOS uygulamalarına taşıyan, güçlü ancak kullanımı kolay bir mobil SDK'dır. Makine öğrenimine yeni başlamış olsanız da deneyimli olsanız da ihtiyacınız olan işlevleri yalnızca birkaç satır kodla kolayca uygulayabilirsiniz. Başlamak için nöral ağlar veya model optimizasyonu hakkında derinlemesine bilgi sahibi olmanız gerekmez.
İşleyiş şekli
ML Kit, Mobile Vision ve TensorFlow Lite gibi Google'ın makine öğrenimi teknolojilerini tek bir SDK'da bir araya getirerek uygulamalarınızda makine öğrenimi tekniklerini kolayca uygulamanızı sağlar. İster Mobile Vision'ın cihaz üzerinde modellerinin gerçek zamanlı özelliklerinin gücüne, ister özel TensorFlow Lite görüntü sınıflandırma modellerinin esnekliğine ihtiyacınız olsun, ML Kit yalnızca birkaç satır kodla bunu mümkün kılar.
Bu Codelab'de, bir resimdeki metni ve yüz özelliklerini otomatik olarak algılayabilen kendi iOS uygulamanızı oluşturma adımları açıklanmaktadır.
Ne oluşturacaksınız?
Bu codelab'de ML Kiti ile bir iOS uygulaması oluşturacaksınız. Uygulamanız şunları yapabilecek:
|
|
Neler öğreneceksiniz?
- ML Kit SDK'yı kullanarak metin tanıma ve yüz özelliği algılama gibi gelişmiş makine öğrenimi özelliklerini herhangi bir iOS uygulamasına kolayca ekleme
Gerekenler
- Xcode'un son sürümlerinden biri (v12.4+)
- iOS Simulator veya iOS 10.0 ya da sonraki sürümlerin yüklü olduğu fiziksel bir iOS cihaz
- ML Kiti yalnızca şu iki 64 bit mimariyi destekler:
x86_64vearm64 - Örnek kod
- Swift ile iOS geliştirme hakkında temel bilgiler
- Makine öğrenimi modelleri hakkında temel bilgi
Bu codelab, ML Kit'e odaklanmaktadır. Alakalı olmayan kavramlar ve kod blokları işaretlenmiştir ve yalnızca kopyalayıp yapıştırmanız için paylaşılmıştır.
2. Hazırlanma
Kodu İndirme
Bu codelab'in tüm kodunu indirmek için aşağıdaki bağlantıyı tıklayın:
İndirilen ZIP dosyasını açın. Bu işlem, ihtiyacınız olacak tüm kaynakların bulunduğu bir kök klasör (mlkit-ios-codelab) oluşturur. Bu codelab için yalnızca vision alt dizinindeki kaynaklara ihtiyacınız olacak.
mlkit-ios-codelab deposundaki vision alt dizini iki dizin içerir:
starter: Bu codelab'de temel alacağınız başlangıç kodu.
final: Tamamlanmış örnek uygulamanın kodu.
CocoaPods ile ML Kit bağımlılıklarını ekleme
CocoaPods, ML Kit bağımlılıklarını uygulamanıza eklemek için kullanılır. Makinenizde CocoaPods yüklü değilse yükleme talimatlarını burada bulabilirsiniz. Yüklendikten sonra Podfile'ı favori düzenleyicinizde açın ve ML Kit'i bağımlılık olarak ekleyin:
Podfile
platform :ios, '10.0'
use_frameworks!
pod 'GoogleMLKit/FaceDetection'
pod 'GoogleMLKit/TextRecognition'
target 'MLKit-codelab' do
end
ML Kit Cocoa Pod'larını yükleme
Tüm bağımlılıkların uygulamanızda kullanılabilir olduğundan emin olmak için ML Kit Cocoa Pod'larını yüklemek üzere komut satırını kullanmanız gerekir.
Komut Satırı
# Make sure you are in the root of your app
pod install
xed .
3. Başlangıç uygulamasını çalıştırma
Artık uygulamayı ilk kez çalıştırmaya hazırsınız. Uygulamayı derlemek ve iOS simülatöründe çalıştırmak için Xcode'da
Çalıştır'ı tıklayın.
Uygulama, simülatörünüzde başlatılmalıdır. Bu noktada, 2 resim arasında seçim yapmanıza olanak tanıyan bir seçici içeren temel bir düzen görmelisiniz. Sonraki bölümde, resimlerdeki metinleri tanımlamak için uygulamanıza metin tanıma özelliği ekleyeceksiniz.
4. Cihaz üzerinde metin tanıma ekleme
Bu adımda, uygulamanıza resimlerdeki metinleri tanıma işlevi ekleyeceğiz.
MLVision modülünü içe aktarma
ViewController sınıfınıza aşağıdaki içe aktarma işlemlerinin yapıldığını onaylayın.
ViewController.swift
import MLKit
VisionTextRecognizer oluşturma
ViewController sınıfınıza aşağıdaki geç yükleme özelliklerini ekleyin.
ViewController.swift
private lazy var textRecognizer = TextRecognizer.textRecognizer()
Görüntü üzerinde cihaz üzerinde metin tanıma özelliğini ayarlama ve çalıştırma
ViewController sınıfının runTextRecognition yöntemine aşağıdakileri ekleyin:
ViewController.swift
func runTextRecognition(with image: UIImage) {
let visionImage = VisionImage(image: image)
textRecognizer.process(visionImage) { features, error in
self.processResult(from: features, error: error)
}
}
Yukarıdaki kod, metin tanıma dedektörünü yapılandırır ve yanıtla birlikte processResult(from:, error:) işlevini çağırır.
Metin tanıma yanıtını işleme
Sonuçları ayrıştırmak ve uygulamanızda göstermek için processResult sınıfındaki ViewController öğesine aşağıdaki kodu ekleyin.
ViewController.swift
func processResult(from text: Text?, error: Error?) {
removeDetectionAnnotations()
guard error == nil, let text = text else {
let errorString = error?.localizedDescription ?? Constants.detectionNoResultsMessage
print("Text recognizer failed with error: \(errorString)")
return
}
let transform = self.transformMatrix()
// Blocks.
for block in text.blocks {
drawFrame(block.frame, in: .purple, transform: transform)
// Lines.
for line in block.lines {
drawFrame(line.frame, in: .orange, transform: transform)
// Elements.
for element in line.elements {
drawFrame(element.frame, in: .green, transform: transform)
let transformedRect = element.frame.applying(transform)
let label = UILabel(frame: transformedRect)
label.text = element.text
label.adjustsFontSizeToFitWidth = true
self.annotationOverlayView.addSubview(label)
}
}
}
}
Uygulamayı simülatörde çalıştırma
Şimdi Xcode'da
Run'ı (Çalıştır) tıklayın. Uygulama yüklendikten sonra seçicide Image 1 simgesinin seçili olduğundan emin olun ve Find Text düğmesini tıklayın.
Uygulamanız artık aşağıdaki resimdeki gibi görünmeli, metin tanıma sonuçlarını ve sınırlayıcı kutuları orijinal resmin üzerinde göstermelidir.

Fotoğraf: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
Tebrikler, ML Kit'i kullanarak uygulamanıza cihaz üzerinde metin tanıma özelliğini eklediniz. Cihaz üzerinde metin tanıma, uygulamanız internete bağlı olmasa bile çalıştığı ve hem hareketsiz görüntülerde hem de canlı video karelerinde kullanılabilecek kadar hızlı olduğu için birçok kullanım alanı için idealdir.
5. Cihaz üzerinde yüz konturu algılama özelliği eklendi
Bu adımda, resimlerdeki yüzlerin hatlarını algılayacak işlevleri uygulamanıza ekleyeceğiz.
FaceDetector oluşturma
ViewController sınıfınıza aşağıdaki geç yükleme özelliklerini ekleyin.
ViewController.swift
private lazy var faceDetectorOption: FaceDetectorOptions = {
let option = FaceDetectorOptions()
option.contourMode = .all
option.performanceMode = .fast
return option
}()
private lazy var faceDetector = FaceDetector.faceDetector(options: faceDetectorOption)
Görüntüde cihaz üzerinde yüz konturu algılamayı ayarlama ve çalıştırma
ViewController sınıfının runFaceContourDetection yöntemine aşağıdakileri ekleyin:
ViewController.swift
func runFaceContourDetection(with image: UIImage) {
let visionImage = VisionImage(image: image)
faceDetector.process(visionImage) { features, error in
self.processResult(from: features, error: error)
}
}
Yukarıdaki kod, metin tanıma dedektörünü yapılandırır ve yanıtla birlikte processResult(from:, error:) işlevini çağırır.
Yüz algılayıcı yanıtını işleme
Sonuçları ayrıştırmak ve uygulamanızda göstermek için processResult sınıfındaki ViewController öğesine aşağıdaki kodu ekleyin.
ViewController.swift
func processResult(from faces: [Face]?, error: Error?) {
removeDetectionAnnotations()
guard let faces = faces else {
return
}
for feature in faces {
let transform = self.transformMatrix()
let transformedRect = feature.frame.applying(transform)
UIUtilities.addRectangle(
transformedRect,
to: self.annotationOverlayView,
color: UIColor.green
)
self.addContours(forFace: feature, transform: transform)
}
}
Son olarak, kontur noktalarını çizmek için ViewController sınıfına yardımcı yöntemi addContours ekleyin.
ViewController.swift
private func addContours(forFace face: Face, transform: CGAffineTransform) {
// Face
if let faceContour = face.contour(ofType: .face) {
for point in faceContour.points {
drawPoint(point, in: .blue, transform: transform)
}
}
// Eyebrows
if let topLeftEyebrowContour = face.contour(ofType: .leftEyebrowTop) {
for point in topLeftEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
if let bottomLeftEyebrowContour = face.contour(ofType: .leftEyebrowBottom) {
for point in bottomLeftEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
if let topRightEyebrowContour = face.contour(ofType: .rightEyebrowTop) {
for point in topRightEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
if let bottomRightEyebrowContour = face.contour(ofType: .rightEyebrowBottom) {
for point in bottomRightEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
// Eyes
if let leftEyeContour = face.contour(ofType: .leftEye) {
for point in leftEyeContour.points {
drawPoint(point, in: .cyan, transform: transform)
}
}
if let rightEyeContour = face.contour(ofType: .rightEye) {
for point in rightEyeContour.points {
drawPoint(point, in: .cyan, transform: transform)
}
}
// Lips
if let topUpperLipContour = face.contour(ofType: .upperLipTop) {
for point in topUpperLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
if let bottomUpperLipContour = face.contour(ofType: .upperLipBottom) {
for point in bottomUpperLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
if let topLowerLipContour = face.contour(ofType: .lowerLipTop) {
for point in topLowerLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
if let bottomLowerLipContour = face.contour(ofType: .lowerLipBottom) {
for point in bottomLowerLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
// Nose
if let noseBridgeContour = face.contour(ofType: .noseBridge) {
for point in noseBridgeContour.points {
drawPoint(point, in: .yellow, transform: transform)
}
}
if let noseBottomContour = face.contour(ofType: .noseBottom) {
for point in noseBottomContour.points {
drawPoint(point, in: .yellow, transform: transform)
}
}
}
Uygulamayı simülatörde çalıştırma
Şimdi Xcode'da
Run'ı (Çalıştır) tıklayın. Uygulama yüklendikten sonra seçicide Image 2 simgesinin seçili olduğundan emin olun ve Find Face Contour düğmesini tıklayın. Uygulamanız artık aşağıdaki resimdeki gibi görünmeli ve orijinal resmin üzerine yerleştirilmiş noktalarla Grace Hopper'ın yüzünün hatlarını göstermelidir.

Tebrikler, ML Kiti yüz kontur algılama özelliğini kullanarak uygulamanıza cihaz üzerinde yüz kontur algılama özelliğini eklediniz. Bu özellik, uygulamanızın internet bağlantısı olmasa bile çalıştığı ve hem hareketsiz görüntülerde hem de canlı video karelerinde kullanılabilecek kadar hızlı olduğu için birçok kullanım alanı için idealdir.
6. Tebrikler!
Uygulamanıza kolayca gelişmiş makine öğrenimi özellikleri eklemek için ML Kit'i kullanmış olmanız gerekir.
İşlediğimiz konular
- iOS uygulamanıza ML Kit'i ekleme
- Resimlerdeki metinleri bulmak için ML Kit'te cihaz üzerinde metin tanıma nasıl kullanılır?
- Resimlerdeki yüz özelliklerini belirlemek için ML Kit'teki cihaz üzerinde yüz tanıma özelliğini kullanma
Sonraki Adımlar
- ML Kit'i kendi iOS uygulamanızda kullanın.
Daha Fazla Bilgi
- https://g.co/mlkit

