2017-09-13 68 views
2

私は最近、iOS開発者用の機械学習リリースを自分のアプリケーションに組み込むことを検討しています。 ML関連のものを初めて使用したのはこれが初めてなので、Appleが提供しているさまざまなモデルの説明を読み始めたとき、私は非常に迷っていました。彼らは同じ目的/記述を持っていますが、唯一の違いは実際のファイルサイズです。これらのモデルの違いは何ですか?また、どのモデルが最適であるかはどのように分かりますか?MobileNetとSqueezeNetとResNet50 vs Inception v3とVGG16

答えて

2

アップルが提供しているモデルは、簡単なデモ用です。ほとんどの場合、これらのモデルはあなた自身のアプリでの使用には十分ではありません。

アップルのダウンロードページのモデルは、ImageNetデータセットの画像分類という非常に特殊な目的のために訓練されています。つまり、ImageNetデータセットの1,000種類のカテゴリのうちの1つである場合に限り、イメージを取得してイメージ内の「メイン」オブジェクトが何であるかを伝えることができます。

通常、これは自分のアプリでやりたいことではありません。アプリが画像分類を行いたい場合は、通常、自分のカテゴリ(食品や車など)でモデルを訓練したいと考えています。その場合は、Inception-v3(Core MLバージョンではなく元のもの)のようなものを取って、独自のデータで再編成することができます。これで新しいモデルが生まれ、コアMLに再度変換する必要があります。

あなたのアプリが画像分類以外のことをしたい場合は、これらの事前トレーニングされたモデルをより大きなニューラルネットワーク構造の「フィーチャエクストラクタ」として使用できます。しかし、これもまた、自分のモデルを訓練してから(通常はゼロから)、その結果をCore MLに変換します。

非常に具体的なユースケース - 1,000のImageNetカテゴリを使用した画像分類 - では、これらのApple提供のモデルがあなたのアプリにとって有益です。

これらのモデルのいずれかを使用する場合は、速度と精度の違いがあります。より小さいモデルは最速ですが、最も正確でもありません。 (私の意見では、VGG16はモバイルでは使用しないでください。それは大きすぎ、インセプションやMobileNetよりも正確ではありません)。

+0

ありがとう、これは非常に洞察力のある回答でした – notJenny

2

SqueezeNetsは完全に畳み込みで、1x1コンボリューションのスクイーズレイヤー各レイヤーの入力チャンネルの数を制限することができるため、パラメータが大幅に減少します。これにより、SqueezeNetsは密なレイヤーを持たないことに加えて、待ち時間が非常に短くなります。

モバイルネッツは、開始時の開始塔と非常によく似た、深さ方向の分離可能な畳み込みを利用しています。これらはまた、パラメータの数を減らし、したがって待ち時間を減少させる。 MobileNetsには、あなたが望む正確なサイズにするためにトレーニングの前に呼び出すことのできるものよりも、モデルの縮小パラメータがあります。 Kerasの実装では、ImageNetの事前にトレーニングされたウェイトも使用できます。

他のモデルは非常に深くて大きなモデルです。畳み込みのパラメータ/スタイルの数を減らすことは、レイテンシを短くするために使用されるのではなく、本質的に非常に深いモデルを鍛える能力のためにのみ使用されます。 ResNetは、もともと非常に深いモデルを訓練する上で重要と考えられていたレイヤー間に残った接続を導入しました。これらは、前述の低レイテンシモデルでは見られません。

関連する問題