2017-10-22 14 views
0

私はCoreML(Appleの機械学習ライブラリ)を使い始めようとしています。私は、これらのチュートリアルはVNCoreMLModelとInceptionv3.model()の違いは?

1)https://www.appcoda.com/coreml-introduction/

2)https://www.raywenderlich.com/164213/coreml-and-vision-machine-learning-in-ios-11-tutorial

最初のチュートリアルでは、インセプションV3使用し、第二のチュートリアルは、説明のためのPlaces205-GoogLeNetモデルを使用し始めるために、次のです。

すべての基本的な設定までの手順

後Places205-GoogLeNetチュートリアルでは、以下のコード

func detectScene(image: CIImage) { 
    answerLabel.text = "detecting scene..." 

    // Load the ML model through its generated class 
    guard let model = try? VNCoreMLModel(for: GoogLeNetPlaces().model) else { 
     fatalError("can't load Places ML model") 
    } 
    } 

を使用し、第二のコードは、この

guard let prediction = try? model.prediction(image: pixelBuffer!) else { 
    return 
} 

これらの違いは何ですかを使用しています2つのアプローチがあります。どちらのタイプを使うと、ピクセルバッファを渡して結果を表示することができますか?

答えて

2

最初のチュートリアルでは、画像を299×299にリサイズする必要があります。 2番目のチュートリアルでは、自動的にそれを行うVisionフレームワークを使用しています。 私はビジョンのアプローチがよりクリーンだと思っています

+0

コアMLとビジョンフレームワークの間のAPIが互いにどのように関連しているのかについての記事[ここ](http://deepdojo.com/mlmodel-api)があります。 – otto

0

Visionフレームワークは、すべての画像処理パイプラインを設定するのに役立つ一連のツールです。これらのツールの中にはCoreMLというモデルがありますが、機械学習だけに限定されません。 Visionは、前処理、再スケーリング、画像のトリミング、長方形、バーコード、顔の検出などを支援します。詳細についてはdocsを確認してください。イメージ上で直接実行される作業とは別に、モデルへの要求を実行するのにも役立ちます。複雑な一連の要求がある場合や、これらの操作を他の処理と連結したい場合は非常に重要です。

純粋なCoreMLでは、CoreMLの責任はあなたのモデルを設定しており、単純なAPIを取得するだけなので、これらの機能をすべて実装する必要があります。それは、モデルを実行し、初期化要求よりもはるかに多くを行い、それは( - VNCoreMLRequestに特異的であるように)、その機能の一部についてCoreMLを使用するため

VisionCoreML周りに純粋ラッパーではありません。

あなたが提供するリンクでは、1st(appcoda)は純粋なCoreML、2nd(Ray)はVisionについてのものです。

関連する問題