私は最近、iOS開発者用の機械学習リリースを自分のアプリケーションに組み込むことを検討しています。 ML関連のものを初めて使用したのはこれが初めてなので、Appleが提供しているさまざまなモデルの説明を読み始めたとき、私は非常に迷っていました。彼らは同じ目的/記述を持っていますが、唯一の違いは実際のファイルサイズです。これらのモデルの違いは何ですか?また、どのモデルが最適であるかはどのように分かりますか?MobileNetとSqueezeNetとResNet50 vs Inception v3とVGG16
答えて
アップルが提供しているモデルは、簡単なデモ用です。ほとんどの場合、これらのモデルはあなた自身のアプリでの使用には十分ではありません。
アップルのダウンロードページのモデルは、ImageNetデータセットの画像分類という非常に特殊な目的のために訓練されています。つまり、ImageNetデータセットの1,000種類のカテゴリのうちの1つである場合に限り、イメージを取得してイメージ内の「メイン」オブジェクトが何であるかを伝えることができます。
通常、これは自分のアプリでやりたいことではありません。アプリが画像分類を行いたい場合は、通常、自分のカテゴリ(食品や車など)でモデルを訓練したいと考えています。その場合は、Inception-v3(Core MLバージョンではなく元のもの)のようなものを取って、独自のデータで再編成することができます。これで新しいモデルが生まれ、コアMLに再度変換する必要があります。
あなたのアプリが画像分類以外のことをしたい場合は、これらの事前トレーニングされたモデルをより大きなニューラルネットワーク構造の「フィーチャエクストラクタ」として使用できます。しかし、これもまた、自分のモデルを訓練してから(通常はゼロから)、その結果をCore MLに変換します。
非常に具体的なユースケース - 1,000のImageNetカテゴリを使用した画像分類 - では、これらのApple提供のモデルがあなたのアプリにとって有益です。
これらのモデルのいずれかを使用する場合は、速度と精度の違いがあります。より小さいモデルは最速ですが、最も正確でもありません。 (私の意見では、VGG16はモバイルでは使用しないでください。それは大きすぎ、インセプションやMobileNetよりも正確ではありません)。
SqueezeNetsは完全に畳み込みで、1x1コンボリューションのスクイーズレイヤー各レイヤーの入力チャンネルの数を制限することができるため、パラメータが大幅に減少します。これにより、SqueezeNetsは密なレイヤーを持たないことに加えて、待ち時間が非常に短くなります。
モバイルネッツは、開始時の開始塔と非常によく似た、深さ方向の分離可能な畳み込みを利用しています。これらはまた、パラメータの数を減らし、したがって待ち時間を減少させる。 MobileNetsには、あなたが望む正確なサイズにするためにトレーニングの前に呼び出すことのできるものよりも、モデルの縮小パラメータがあります。 Kerasの実装では、ImageNetの事前にトレーニングされたウェイトも使用できます。
他のモデルは非常に深くて大きなモデルです。畳み込みのパラメータ/スタイルの数を減らすことは、レイテンシを短くするために使用されるのではなく、本質的に非常に深いモデルを鍛える能力のためにのみ使用されます。 ResNetは、もともと非常に深いモデルを訓練する上で重要と考えられていたレイヤー間に残った接続を導入しました。これらは、前述の低レイテンシモデルでは見られません。
- 1. tensorflowとinception-v3を使用するバウンディングボックス
- 2. Inception V3モジュールのカスタマイズ
- 3. Inception-v3 transfer learning「フリーズ」レイヤー
- 4. Inception v3 retraining error(花の例)
- 5. Inception V3のInception V3の一部をPython 3でTensorFlowでフリーズする
- 6. Reception Inception V3 Conv 0%精度のニューラルネット(テンソルフロー)
- 7. Inception-v3 RMSPropイプシロン= 1を使用して
- 8. テンソルフロー内のinception-v3チェックポイントファイルの使用
- 9. トレーニングTensorflow Inception-v3 Imagenetのハードウェア設定
- 10. Tensorflow Inception TrainとCreate GraphDef
- 11. Inception-v3を畳み込みネットワークとして使用する方法
- 12. Tensorflow inception-V3複数のレイヤーを再編成する
- 13. CoreML - Inception V3をMultiArrayにプリプロセスする方法<Double, 3>?
- 14. Tensorflow Android:retrained Inception v3に時間がかかりすぎる
- 15. TensorflowでRe-trained Inception-V3を予測しているときにエラーが発生しました
- 16. 私はinception-v3モデルをcpuだけで鍛えることは可能でしょうか?
- 17. Openshift Container Platform V3.X vs. Fabric8
- 18. Food101 SqueezeNet Caffe2反復回数
- 19. OpenShift V3とOpenShift V2
- 20. normalizr v3とJSON api
- 21. Glassfish v3キャッシュとワニスキャッシュ
- 22. Glassfish V3.xとリモートスタンドアロンクライアント
- 23. GoogleカレンダーV3とコマンドラインアプリケーション
- 24. resnet50モデルで微調整する方法は?
- 25. 猫と犬のデータセットにKeras組み込みVGG16モデルの結果が悪い
- 26. インストールVS 2008とVS 2010
- 27. tf.image.pad_to_bounding_box VS tf.padとtf.image.crop_to_bounding_box VS tf.slice
- 28. tensorflow import vgg16 failed
- 29. VS 2013 MSTestとnUnitとxUnit
- 30. Unity 5.6.1f1とVS
ありがとう、これは非常に洞察力のある回答でした – notJenny