CoreML Ruang nama
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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:
Jenis | Varian | Diproduksi oleh: |
---|---|---|
Jaringan neural | Konvolusional, feed-forward, berulang | Caffe, Keras, Azure Custom Vision |
Ansambel pohon | Hutan acak, pohon yang didorong, pohon keputusan | scikit-learn, XGBoost |
SVM | Skalar dan multikelas | scikit-learn, LIBSVM |
Model linier umum | Regresi linier dan logistik | scikit-learn |
Model alur | Model berantai berurutan | scikit-learn |
Apple memiliki alat python sumber terbuka (Lisensi BSD 3 klausa) untuk membuat model CoreML: https://pypi.python.org/pypi/coremltools