Bagikan melalui


CoreML Ruang nama

Namespace Layanan CoreML menyediakan akses tingkat yang relatif tinggi ke runtime model pembelajaran mesin.

Kelas

MLArrayBatchProvider

Didukung IMLBatchProvider oleh array.

MLCustomLayer_Extensions

Implementasi default untuk metode opsional dalam IMLCustomLayer protokol.

MLCustomModel

Implementasi default .IMLCustomModel

MLCustomModel_Extensions

Implementasi default untuk metode opsional dalam MLCustomModel protokol.

MLDictionaryConstraint

Berisi nilai yang membatasi jenis kunci kamus.

MLDictionaryFeatureProvider

Implementasi IMLFeatureProvider yang didukung oleh NSDictionary.

MLFeatureDescription

Deskripsi fitur yang MLModel bermakna pengembang.

MLFeatureValue

Nilai yang tidak dapat diubah dan MLFeatureType untuk fitur.

MLImageConstraint

Berisi batasan untuk fitur gambar.

MLImageSize

Menjelaskan satu ukuran gambar yang dapat diterima untuk input model CoreML.

MLImageSizeConstraint

Deskripsi batasan pada ukuran gambar untuk model CoreML.

MLModel

Merangkum model pembelajaran mesin terlatih.

MLModelConfiguration

Namespace Layanan CoreML menyediakan akses tingkat yang relatif tinggi ke runtime model pembelajaran mesin.

MLModelDescription

Deskripsi yang bermakna pengembang dari MLModel.

MLModelErrorExtensions

Metode ekstensi untuk enumerasi CoreML.MLModelError.

MLModelMetadata

DictionaryContainer yang menyimpan metadata yang terkait dengan MLModel.

MLMultiArray

Mewakili array multidimensi yang efisien.

MLMultiArrayConstraint

Berisi batasan untuk fitur array multidimensi.

MLMultiArrayShapeConstraint

Menjelaskan batasan pada bentuk array multidimensi yang diizinkan oleh model.

MLPredictionOptions

Berisi nilai yang menunjukkan apakah akan membatasi komputasi prediksi ke CPU.

MLSequence

Mengodekan urutan sebagai input tunggal.

MLSequenceConstraint

Batasan pada urutan fitur.

Antarmuka

IMLBatchProvider

Antarmuka yang menentukan protokol untuk menyediakan data dalam batch ke model.

IMLCustomLayer

Antarmuka mendefinisikan metode yang diperlukan untuk lapisan model kustom.

IMLCustomModel

Antarmuka yang menentukan model CoreML kustom.

IMLFeatureProvider

Antarmuka yang menentukan fitur input atau output dan memungkinkan akses ke nilainya.

Enum

MLComputeUnits

Namespace Layanan CoreML menyediakan akses tingkat yang relatif tinggi ke runtime model pembelajaran mesin.

MLFeatureType

Menghitung jenis fitur yang didukung oleh CoreML.

MLImageSizeConstraintType

Menghitung bentuk MLImageSizeConstraint.

MLModelError

Menghitung kesalahan yang mungkin terjadi dalam penggunaan Core ML.

MLMultiArrayDataType

Menghitung jenis nilai yang disimpan dalam MLMultiArray.

MLMultiArrayShapeConstraintType

Menghitung bentuk MLMultiArrayShapeConstraint.

Keterangan

Namespace CoreML, yang diperkenalkan di iOS 11, memungkinkan kueri runtime dari berbagai model pembelajaran mesin yang dihasilkan oleh kerangka kerja seperti scipy-learn, TensorFlow, dan layanan kognitif Azure Custom Vision. CoreML tidak mendukung modifikasi model atau bobot pada perangkat, namun mendukung pemuatan model dari URL, sehingga pengembang dapat menggunakannya untuk mengunduh model yang diperbarui.

CoreML mengandalkan "model" yang didistribusikan sebagai satu file .mlmodel. Model ini dikompilasi ke dalam bentuk yang dapat digunakan dengan menggunakan alat terintegrasi di Xcode, Xamarin Studio, atau di baris perintah. Pada baris perintah, file .mlmodel dapat dikompilasi dengan xcrun coremlcompiler compile model.mlmodel outputfolder . Model yang dikompilasi mengambil bentuk direktori yang disebut modelname.mlmodelc . Model kemudian dimuat pada runtime dengan kode yang mirip dengan:

var bundle = NSBundle.MainBundle;
var assetPath = bundle.GetUrlForResource("MarsHabitatPricer", "mlmodelc");
NSError mlErr;
model = MLModel.Create(assetPath, out mlErr);

Model di CoreML cukup "kotak buram" dan tidak memiliki API yang luas. Sebaliknya, pengembang iOS harus mengetahui nama input dan output dan jenis yang diharapkan model. Misalnya, model pengenalan gambar mungkin mengharapkan CVPixelBuffer ukuran 227x227 yang diidentifikasi sebagai "gambar" dan mungkin memiliki dua output: string yang diidentifikasi sebagai "classLabel" dan NSDictionary dengan NSString kunci dan double

nilai dalam rentang [0,1] mewakili keyakinan prediksi.

Pengembang harus mengonversi representasi asli mereka menjadi instans yang kompatibel dengan CoreML dari IMLFeatureProvider . Cara term mudah untuk melakukan ini adalah dengan MLDictionaryFeatureProvider :

CVPixelBuffer pixelBuffer = // from image or video stream
var imageValue = MLFeatureValue.Create(pixelBuffer);

var inputs = new NSDictionary<NSString, NSObject>(new NSString("image"), imageValue);

NSError error, error2;
var inputFp = new MLDictionaryFeatureProvider(inputs, out error);
if(error != null)
{
	ErrorOccurred(this, new EventArgsT<string>(error.ToString()));
	return;
}
var outFeatures = model.GetPrediction(inputFp, out error2);
if(error2 != null)
{
	ErrorOccurred(this, new EventArgsT<string>(error2.ToString()));
	return;
}

var predictionsDictionary = outFeatures.GetFeatureValue("classLabelProbs").DictionaryValue;

Cara yang lebih kompleks, tetapi lebih fleksibel, adalah dengan mengimplementasikan IMLFeatureProvider :

public class MarsHabitatPricerInput : NSObject, IMLFeatureProvider
{
	public double SolarPanels { get; set; }
	public double Greenhouses { get; set; }
	public double Size { get; set; }

	public NSSet<NSString> FeatureNames => new NSSet<NSString>(new NSString("solarPanels"), new NSString("greenhouses"), new NSString("size"));

	public MLFeatureValue GetFeatureValue(string featureName)
	{
		switch (featureName)
		{
			case "solarPanels":
				return MLFeatureValue.Create(SolarPanels);
			case "greenhouses":
				return MLFeatureValue.Create(Greenhouses);
			case "size":
				return MLFeatureValue.Create(Size);
			default:
				return MLFeatureValue.Create(0);
		}
	}
}

Mendapatkan prediksi terjadi secara sinkron, dengan panggilan ke GetPrediction :

NSError prErr;
IMLFeatureProvider outFeatures = model.GetPrediction(pricerInput, out prErr);
double result = outFeatures.GetFeatureValue("price").DoubleValue;

CoreML saat ini mendukung:

JenisVarianDiproduksi oleh:
Jaringan neuralKonvolusional, feed-forward, berulang Caffe, Keras, Azure Custom Vision
Ansambel pohonHutan acak, pohon yang didorong, pohon keputusan scikit-learn, XGBoost
SVMSkalar dan multikelas scikit-learn, LIBSVM
Model linier umumRegresi linier dan logistikscikit-learn
Model alurModel berantai berurutan scikit-learn

Apple memiliki alat python sumber terbuka (Lisensi BSD 3 klausa) untuk membuat model CoreML: https://pypi.python.org/pypi/coremltools

Lihat juga