Merhabalar bu yazımda iOS 11 ile aramıza katılan, yeni nesil uygulamalarda yapay zeka kullanımını teşvik eden kütüphane Core ML kullanımını göstereceğim.
Bu kütüphane içerik olarak kendi içerisinde yapay zeka algoritmaları bulunmamakta. Bilindik yapay zeka kütüphanelerinde yazdığınız modelleri, iOS platformunda kullanmanızı sağlamakta. Bu sayede bi kaç satır kod ile uygulamanıza yapay zeka entregrasyonunu sağlamış oluyorsunuz. Bunun yanı sıra uygulamanızı Vision ve ARKit ile destekleyerek başarılı uygulamalar geliştirebilirsiniz.
Yukardaki tabloda desteklenen makine öğrenmesi modellerini ve bunları kodlayabileceğiniz araçları göstermekte. Kendi mlmodel yapınızı kodlamak için dil olarak Python kullanmanız kaçınılmazdır. Yapay zeka ve veri bilimi alanında kendinizi geliştirmek istiyorsanız Python dilinede bir el atmanız faydanıza olur 🙂
Bunun yanı sıra uygulamamızda kullanacağımız bazı güzel modelleri bu linkten erişebilir ve kullanabilirsiniz.
Aşağıda basit bir şekilde indirdiğiniz model yapısını uygulamanız içinde kullanımını görebilirsiniz.
import UIKit import CoreML class mainVC: UIViewController { @IBOutlet weak var imgView: UIImageView! var picker = UIImagePickerController() var img:UIImage! var model:AgeNet! override func viewDidLoad() { super.viewDidLoad() picker.delegate = self picker.allowsEditing = true picker.sourceType = .photoLibrary } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) model = AgeNet() } @IBAction func photoLibAction(_ sender: Any) { present(picker, animated: true, completion: nil) } @IBAction func startModelAction(_ sender: Any) { do { let prediction = try model.prediction(data: setModelImage(img)!) print(prediction.prob) // } catch { print(error) } } func setModelImage(_ image:UIImage) -> CVPixelBuffer? { UIGraphicsBeginImageContextWithOptions(CGSize(width: 227, height: 227), true, 2.0) image.draw(in: CGRect(x: 0, y: 0, width: 227, height: 227)) let newImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() let attrs = [kCVPixelBufferCGImageCompatibilityKey: kCFBooleanTrue, kCVPixelBufferCGBitmapContextCompatibilityKey: kCFBooleanTrue] as CFDictionary var pixelBuffer : CVPixelBuffer? let status = CVPixelBufferCreate(kCFAllocatorDefault, Int(newImage.size.width), Int(newImage.size.height), kCVPixelFormatType_32ARGB, attrs, &pixelBuffer) guard (status == kCVReturnSuccess) else { return nil } CVPixelBufferLockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0)) let pixelData = CVPixelBufferGetBaseAddress(pixelBuffer!) let rgbColorSpace = CGColorSpaceCreateDeviceRGB() let context = CGContext(data: pixelData, width: Int(newImage.size.width), height: Int(newImage.size.height), bitsPerComponent: 8, bytesPerRow: CVPixelBufferGetBytesPerRow(pixelBuffer!), space: rgbColorSpace, bitmapInfo: CGImageAlphaInfo.noneSkipFirst.rawValue) //3 context?.translateBy(x: 0, y: newImage.size.height) context?.scaleBy(x: 1.0, y: -1.0) UIGraphicsPushContext(context!) newImage.draw(in: CGRect(x: 0, y: 0, width: newImage.size.width, height: newImage.size.height)) UIGraphicsPopContext() CVPixelBufferUnlockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0)) return pixelBuffer } }// extension mainVC: UIImagePickerControllerDelegate,UINavigationControllerDelegate { func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { guard let image = info[UIImagePickerControllerOriginalImage] as? UIImage else { return } imgView.image = image img = image defer {dismiss(animated: true, completion: nil)} } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(animated: true, completion: nil) } }
Not: Model yapısını Xcode projenize aldıktan sonra detaylarını görüntüleyebilir ve belirtilen boyutta ve yapıda resim,yazı kullandığınızdan emin olunuz.
Bu yazı yorumlara kapalı.