web-dev-qa-db-ja.com

MobileNet vs SqueezeNet vs ResNet50 vs Inception v3 vs VGG16

私は最近、アプリにiOS開発者向けの機械学習リリースを組み込むことを検討しています。 MLに関連するものを使用するのはこれが初めてなので、Appleで利用できるようになっているさまざまなモデルの説明を読み始めたとき、私は非常に迷いました。同じ目的/説明があり、唯一の違いは実際のファイルサイズこれらのモデルの違いは何ですか?どのモデルが最適かをどのようにして知ることができますか?

7
notJenny

Appleで利用できるようにするモデルは、単純なデモ目的のためだけです。ほとんどの場合、これらのモデルは、自分のアプリで使用するには十分ではありません。

Appleのダウンロードページのモデルは、ImageNetデータセットでの画像分類という非常に特定の目的のためにトレーニングされています。これは、彼らが画像を取得して、画像内の「メイン」オブジェクトが何であるかを伝えることができることを意味しますが、それがImageNetデータセットからの1,000カテゴリの1つである場合に限られます。

通常、これはあなた自身のアプリでしたいことではありません。アプリで画像の分類を行う場合は、通常、独自のカテゴリ(食べ物や車など)でモデルをトレーニングします。その場合、Inception-v3(Core MLバージョンではなくオリジナル)のようなものを使用して、独自のデータで再トレーニングできます。これにより、新しいモデルが得られます。このモデルを再度Core MLに変換する必要があります。

アプリで画像分類以外の処理を行う場合は、これらの事前学習済みモデルを、より大きなニューラルネットワーク構造の「特徴抽出器」として使用できます。ただし、これには独自のモデルを(通常は最初から)トレーニングし、その結果をCore MLに変換することが含まれます。

したがって、非常に特殊なユースケース(1,000のImageNetカテゴリを使用した画像分類)でのみ、これらのApple提供のモデルがアプリに役立ちます。

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

9

SqueezeNetは完全にたたみ込みであり、1x1たたみ込みのスクイーズレイヤーを持つFireモジュールを使用します。これにより、各レイヤーの入力チャネル数を制限できるため、パラメーターが大幅に減少します。これにより、SqueezeNetsのレイテンシは非常に低くなり、高密度のレイヤーがないことに加えて。

MobileNetsは、開始時の開始タワーと非常によく似た、深さ方向の分離可能な畳み込みを利用します。これらはまた、パラメーターの数を減らし、レイテンシーを減らします。 MobileNetsには、トレーニング前に呼び出すことができる便利なモデル縮小パラメーターもあり、希望する正確なサイズにすることができます。 Kerasの実装では、ImageNetの事前トレーニング済みの重みも使用できます。

他のモデルは非常に深く、大きなモデルです。パラメーターの数/畳み込みのスタイルの数は、低レイテンシではなく、本質的に非常に深いモデルをトレーニングする機能のためにのみ使用されます。 ResNetは、非常に深いモデルをトレーニングする際に重要であると当初は信じられていた、レイヤー間の残余接続を導入しました。これらは、前述の低遅延モデルには見られません。

5
convolutionBoy