2017-12-17 21 views
1

私は、VGG/Inceptionを使用してMNISTデータセットの転送学習を使用しようとしています。しかし、これらのネットワークはどちらも少なくとも224x224x3サイズの画像を受け入れます。どのように私は28x28x1のMNIST画像を224x224x3にリサイズして、転送を行うことができますか?MNISTデータセットの転送学習方法

答えて

1

あなたが求めていることをする一般的な方法は、CNNへの入力レイヤーに必要な解像度に画像を単純にサイズ変更することです。あなたの質問にというタグが付いているので、kerasには画像を読み込み、必要に応じて画像を拡大縮小したいサイズを指定するための前処理モジュールがあります。メソッドの実際のソース:https://github.com/keras-team/keras/blob/master/keras/preprocessing/image.py#L321を見ると、内部的にピロー補間法を使用してイメージを希望の解像度に再スケーリングします。

さらに、MNISTディジットはもともとグレースケールであるため、人工的にRGBになるように、単一チャネルイメージをマルチチャネルイメージに複製する必要があります。これは、赤、緑、青のチャンネルがすべて同じで、MNISTグレースケールの対応物であることを意味します。 load_imgメソッドには、追加のフラグgrayscaleがあります。このフラグをFalseに設定すると、イメージにRGBイメージとして読み込むことができます。

これらの画像をRGBに変換して読み込み、再スケーリングしたら、VGG19で転送学習を行うことができます。実際、それは前に行われています。 https://www.analyticsvidhya.com/blog/2017/06/transfer-learning-the-art-of-fine-tuning-a-pre-trained-model/を参照し、セクション6を参照してください。の数字の識別には、事前に訓練されたモデルを使用してください。

私は、28×28イメージを取って224×224イメージにリサイズすると、重大な補間アーチファクトが発生するという公平な警告をしたいと思います。アップサンプリングによるノイズを含む画像データに対して転送学習を実行しますが、これは前にリンクしたブログ記事で行われました。補間をbilinearまたはbicubicのように変更することをお勧めします。デフォルトでは、最近隣を使用します。アップサンプリング画像の場合はひどいです。

YMMVですので、画像を入力レイヤーの希望のサイズにリサイズし、3つのチャンネルで画像をパッディングしてRGBにして何が起こるかを確認してください。

+0

ポインタに感謝します。私はこのようなことを試みた。 https://pastebin.com/Gmcb97y8 と私が得た はTypeError:「テンソル」オブジェクトは、私は見てみましょう項目の割り当て – user1159517

+0

をサポートしていません。私はあなたに戻ってみましょう。 – rayryeng

0

これは、使用するモデルによって大きく異なります。 VGGネットワ​​ークには一定の数のダウンサンプル後にイメージのサイズに一致するFCレイヤが含まれているため、VGGNetには予想されるターゲットサイズへの入力のリスケーリングを行う必要があります。パラメータの共有のために、畳み込みレイヤーはいずれもイメージサイズを取ることができます。

しかし、現代のCNNは全畳み込みに切り替える傾向にあり、任意の転送学習の問題を解決しています。このパスを選択する場合は、最新のInception modelsのいずれかを取る。この場合、モデル外のモデルは、小さな28x28x1の画像でさえも受け入れることができるはずです。

関連する問題