2017-01-14 5 views
8

有する不均衡なデータセットをバランス(<a href="https://keras.io/preprocessing/image/" rel="nofollow noreferrer">https://keras.io/preprocessing/image/</a>)keras</p> <pre><code>ImageDataGenerator </code></pre> <p>「がリアルタイムデータ増強とテンソル画像データのバッチを生成」するために使用することができるkeras画像生成

でチュートリアル

https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

は小さいながらもバランスの取れたデータセットがImageDataGeneratorを使用して増強することができる方法を示しています。結果として生成されたデータセットがバランスを取るように、このジェネレータを使用して非常に不均衡なデータセットを増やす簡単な方法はありますか?

答えて

11

これはアンバランスなデータを扱うための標準的なアプローチではないでしょう。私はそれが本当に正当化されるとは思っていません - あなたはクラスの分布を大きく変えています。より大きいクラスは豊富なバリエーションを有し、小さなアフィン変換を伴う多くの同様の画像である。彼らは、大部分のクラスよりもはるかに小さいイメージ空間の領域で生きるでしょう。

より標準的なアプローチは次のようになります。

  • あなたはモデルを作るために使用することができますmodel.fitでclass_weights引数は、少数クラスから多くを学びます。
  • 過半数クラスのサイズを小さくすることができます。不均衡を受け入れる
  • 。ディープラーニングはこれに対処できます。多くのデータが必要です(すべてのソリューション、実際には)。

最初の2つのオプションは実際にはハックの種類であり、実際の(不均衡な)データに対処する能力を損なう可能性があります。あまりにも少ないデータを持つことに固有の低い変動性の問題を本当に解決するものでもありません。モデルのトレーニング後の実世界のデータセットへのアプリケーションは問題ではない、あなたはちょうどあなたが持っているデータには良い結果をしたい場合は、これらのオプションは、罰金(および単一のクラスのための発電機を作るよりもはるかに簡単)です。

十分なデータがある場合(例:recent paper from Google about detecting diabetic retinopathyは、正のケースが10%〜30%のデータセットで高い精度を達成しています)、適切な方法です。あなたが本当に別の上で1つのクラスの増強種々の画像を生成する場合

、それはおそらく、前処理でそれを行うのが最も簡単でしょう。マイノリティクラスの画像を取得して、いくつかの拡張版を生成し、それをあなたのデータのすべての部分と呼んでください。私が言うように、これはすべてかなりハッキーです。

+0

あなたの洞察力を共有するためのおかげで多くのことを。私はそのGoogleの紙を調べます。 – user1934212

関連する問題

 関連する問題