2017-06-11 19 views
7

Xcode 9 BetaでCoreMLとSwift 4.0を使用しています。なぜエラーが発生しますか?CoreMLドキュメントをデコードしていますか?

あなたは、プロジェクトナビゲータでファイルVGG16.mlmodelを選択した場合、私はエラーを取得する:またThere was an problem decoding this document CoreML

、コード内の結果として、私はUse of unresolved identifier 'VGG16'Use of undeclared type 'VGG16'

VGG16.mlmodelエラーが発生しますここからダウンロードhttps://developer.apple.com/machine-learning/

何が問題なのですか?

PS for models Places205-GoogLeNet、ResNet50、Inception v3はすべて正常に動作します。

+0

サンプルプロジェクトはこちらhttps://medium.com/towards-data-science/welcoming-core-ml-8ba325227a28、https://github.com/alaphao/CoreMLExample –

+1

わからない(おそらく、VGG16.mlmodelは正しくダウンロードされていませんでしたが)とにかくモバイルデバイスでVGG16を使いたくないのです。それは大きすぎる(500MB以上)、遅すぎて、あまりにも多くのエネルギーを食べる。 –

+0

私はこのモデルをアップルのウェブサイトから数回ダウンロードしました。 Appleのウェブサイトにファイルが壊れている可能性があります... はい、私はこのモデルのサイズが非常に大きいことを知っています。 研究の興味を言う。 –

答えて

8

を参照してください、VGG16.mlmodelため./setup.sh

  • 選択ターゲットを実行し、私は答えに私のコメントを肉付けます。

    他にもこのことが言及されていますが、ダウンロードが破損している可能性があります。モデル自体が壊れている可能性があります。まず、VGG16モデルやそれに関連するモデルを、そのサイズのせいで(VGG16の場合は500 MB)、モバイルデバイスで使用しないことを強くお勧めします。モデルをロードするだけでiPhone 6でメモリを使い切ると、アプリケーションサイズが巨大になり、そのウェイトがロードされると長時間の初期化時間が必要になります。

    小さい(〜5 MB)SqueezeNetのようなものを使用することをお勧めします。ImageNetでトレーニングを受けた方が正確であり、Inceptionファミリほど計算コストが高くありません。 AppleはCore ML WWDCセッションの1つでこれらのいずれかを使用することについて言及しています。

    Xcodeプロジェクトにモデルを追加するときに、実際にターゲットに登録されていることを確認してください。 Xcodeの現在のベータ版では、これをターゲットに追加することを忘れることがあるので、モデルを強調表示し、ファイルインスペクタをチェックしてアプリケーションターゲットの一部であることを確認します。モデルがターゲットにない場合、XcodeはSwiftヘッダを自動生成しません。

  • +0

    実際に私はこれらの問題の両方を持っていました: アップルサイトhttps://developer.apple.com/machine-learning/ modelファイルからダウンロードすると、VGG16.mlmodelは250-270 MBでカットされました。 モデルVGG16はこちらからダウンロードできます - https://yadi.sk/d/DLr99UZs3KGJqu 第2に、ターゲットにモデルを追加するには、本当にチェックする必要があります。 さらに、iPhone 6(IOS 11ベータ版)では、このモデルは非常に遅く実行され、電話機を加熱します。 ありがとう、Brad(@BradLarson)。 –

    +0

    @ A.Kant - 速度に関しては、少なくとも初期ベータではCore MLはiPhone 6でこれらのネットワークを実行するためにAccelerateのBNNS操作(Metal以外)を使用しているようです。ベンチマークでは、iPhone 6 AlexNetNetとMetal Extender Shadersを使用して同じデバイスに実装された全く同じネットワークとの比較で、Core MLは約3.5倍遅くなりました。ハードウェアが明らかにそれらをサポートしているので、iPhone 6上でMPS操作を使用しない理由は不明です。 –

    +0

    また、次のバージョンのiPhone 6でMPSをサポートしているか、そのAppleが新しいiPhoneを購入することを奨励しています:) @BradLarson –

    0

    ドロップアウトがあるモデルでも同じことが起こります。ウェイトをコピーしないで新しいモデルにコピーして、これらのレイヤーを削除してみてください。

    関連する問題