CoreML 名前空間
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
CoreML 名前空間は、機械学習モデル ランタイムへの比較的高レベルのアクセスを提供します。
クラス
MLArrayBatchProvider |
IMLBatchProvider配列によってサポートされる 。 |
MLCustomLayer_Extensions |
プロトコルの省略可能なメソッドの既定の IMLCustomLayer 実装。 |
MLCustomModel |
IMLCustomModel の既定の実装。 |
MLCustomModel_Extensions |
プロトコルの省略可能なメソッドの既定の MLCustomModel 実装。 |
MLDictionaryConstraint |
ディクショナリ キーの種類を制限する値を格納します。 |
MLDictionaryFeatureProvider |
によってNSDictionaryサポートされる のIMLFeatureProvider実装。 |
MLFeatureDescription |
機能の開発者向けの MLModel わかりやすい説明。 |
MLFeatureValue |
変更できない値と MLFeatureType 機能の 。 |
MLImageConstraint |
イメージ フィーチャーの制約を含みます。 |
MLImageSize |
CoreML モデル入力に使用できる 1 つのイメージ サイズについて説明します。 |
MLImageSizeConstraint |
CoreML モデルのイメージ サイズに関する制約の説明。 |
MLModel |
トレーニング済みの機械学習モデルをカプセル化します。 |
MLModelConfiguration |
CoreML 名前空間は、機械学習モデル ランタイムへの比較的高レベルのアクセスを提供します。 |
MLModelDescription |
の開発者向けのわかりやすい説明 MLModel。 |
MLModelErrorExtensions |
CoreML.MLModelError 列挙の拡張メソッド。 |
MLModelMetadata |
DictionaryContainerに関連するメタデータを保持する MLModel。 |
MLMultiArray |
効率的な多次元配列を表します。 |
MLMultiArrayConstraint |
多次元配列特徴量の制約を含みます。 |
MLMultiArrayShapeConstraint |
モデルで許可される多次元配列の形状に対する制約について説明します。 |
MLPredictionOptions |
予測計算を CPU に制限するかどうかを示す値を格納します。 |
MLSequence |
シーケンスを 1 つの入力としてエンコードします。 |
MLSequenceConstraint |
一連の特徴に対する制約。 |
インターフェイス
IMLBatchProvider |
モデルにバッチでデータを提供するためのプロトコルを定義するインターフェイス。 |
IMLCustomLayer |
カスタム モデル レイヤーに必要なメソッドを定義するインターフェイス。 |
IMLCustomModel |
カスタム CoreML モデルを定義するインターフェイス。 |
IMLFeatureProvider |
入力または出力機能を定義し、その値へのアクセスを許可するインターフェイス。 |
列挙型
MLComputeUnits |
CoreML 名前空間は、機械学習モデル ランタイムへの比較的高レベルのアクセスを提供します。 |
MLFeatureType |
CoreML でサポートされている機能の種類を列挙します。 |
MLImageSizeConstraintType |
の形式を MLImageSizeConstraint列挙します。 |
MLModelError |
Core ML の使用中に発生する可能性があるエラーを列挙します。 |
MLMultiArrayDataType |
に格納されている値の型を MLMultiArray列挙します。 |
MLMultiArrayShapeConstraintType |
の形式を MLMultiArrayShapeConstraint列挙します。 |
注釈
iOS 11 で導入された CoreML 名前空間を使用すると、scipy-learn、TensorFlow、Azure Custom Vision Cognitive Services などのフレームワークによって生成されるさまざまな機械学習モデルのランタイム クエリを実行できます。 CoreML では、モデルや重みのデバイス上の変更はサポートされていませんが、URL からのモデルの読み込みがサポートされているため、開発者はそれを使用して更新されたモデルをダウンロードできます。
CoreML は、単一の .mlmodel ファイルとして配布される "モデル" に依存しています。 このモデルは、Xcode、Xamarin Studio、またはコマンド ラインの統合ツールを使用して、使用可能な形式にコンパイルされます。 コマンド ラインでは、 を使用して .mlmodel ファイルを xcrun coremlcompiler compile model.mlmodel outputfolder
コンパイルできます。 コンパイル済みモデルは、 という modelname.mlmodelc
名前のディレクトリの形式をとります。 その後、モデルは実行時に次のようなコードで読み込まれます。
var bundle = NSBundle.MainBundle;
var assetPath = bundle.GetUrlForResource("MarsHabitatPricer", "mlmodelc");
NSError mlErr;
model = MLModel.Create(assetPath, out mlErr);
CoreML のモデルはかなり "不透明なボックス" であり、広範な API を持っていません。 代わりに、iOS 開発者は、モデルが期待する入力と出力の名前と型を知っている必要があります。 たとえば、画像認識モデルでは、"image" として識別されるサイズ 227 x 227 の が想定 CVPixelBuffer され、"classLabel" として識別される文字列と NSDictionary キーを持つ NSString と の 2 つの出力が含まれます。 double
予測の信頼度を表す範囲 [0,1] の値。
開発者は、ネイティブ表現を の CoreML 互換インスタンスに変換する IMLFeatureProvider 必要があります。 これを行う最も簡単な方法は、 です 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;
より複雑ですが、より柔軟な方法は、 を実装 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);
}
}
}
予測の取得は、 の呼び出しで同期的に GetPrediction 行われます。
NSError prErr;
IMLFeatureProvider outFeatures = model.GetPrediction(pricerInput, out prErr);
double result = outFeatures.GetFeatureValue("price").DoubleValue;
CoreML では現在、次の機能がサポートされています。
種類 | バリアント | 作成者: |
---|---|---|
ニューラル ネットワーク | 畳み込み、フィードフォワード、リカレント | Caffe、Keras、Azure Custom Vision |
ツリー アンサンブル | ランダム フォレスト、ブースト ツリー、デシジョン ツリー | scikit-learn、XGBoost |
SVM | スカラーと多クラス | scikit-learn、LIBSVM |
一般化された線形モデル | 線形回帰とロジスティック回帰 | scikit-learn |
パイプライン モデル | シーケンシャル チェーン モデル | scikit-learn |
Apple には、CoreML モデルを作成するためのオープンソース (3 句 BSD ライセンス) Python ツールがあります。 https://pypi.python.org/pypi/coremltools