web-dev-qa-db-ja.com

ニューラルネットワークをトレーニングするためにトレーニングされた画像を変更する

私は現在、腐ったオレンジと食用オレンジを外観だけで区別するプログラムを作ろうとしています。これを行うために、畳み込みニューラルネットワークを使用して腐ったオレンジと通常のオレンジでトレーニングすることを計画しています。いくつか検索した後、私は約1つのデータベースしか見つけることができませんでした。黒の背景に150個の腐ったオレンジと150個の通常のオレンジ( http://www.cofilab.com/downloads/ )。明らかに、機械学習モデルでは、90%以上の精度を達成するために、少なくとも数千個のオレンジが必要になります。ただし、これらの150個のオレンジを何らかの方法で変更して、オレンジの写真をさらに作成することはできますか?変更とは、柑橘系の果物にさまざまな色合いのオレンジを追加して、「さまざまなオレンジ」を作ることを意味します。これはニューラルネットワークをトレーニングする効果的な方法でしょうか?

35
Rehaan Ahmad

それはあなたが持っている日付の数を増やすための非常に良い方法です。何をするかはデータによって異なります。たとえば、センサーから取得したデータでトレーニングを行っている場合、データセットを増やすことができるように、トレーニングデータにノイズを追加することができます。結局のところ、後でセンサーからノイズが発生することが予想されます。

画像でトレーニングすることを前提として、これらの手法を使用する手段を提供する非常に優れたgithubリポジトリを次に示します。このpythonライブラリは、機械学習プロジェクトの画像を拡張するのに役立ちます。入力画像のセットを、わずかに変更された新しい画像のセットに変換します。リンク: https: //github.com/aleju/imgaug

特徴:

  • 利用可能な最も標準的な増強技術。

  • テクニックは、画像と画像のキーポイント/ランドマークの両方に適用できます。実験の開始時に1回拡張シーケンスを定義し、それを何度も適用します。

  • 各拡張に対して柔軟な確率的範囲を定義します。 「各画像を-45〜45度の値で回転させる」または「各画像を正規分布N(0、5.0)からサンプリングした値で回転させる」。

  • すべての確率的範囲を決定論的値に簡単に変換して、まったく同じ方法で画像のさまざまなバッチを拡張します(画像とそのヒートマップなど)。

enter image description here

9
Dellein

データ拡張はあなたが探しているものです。あなたの場合、あなたはさまざまなことをすることができます:

  1. ガウスぼかしを使用できると言われているように、フィルターを適用してわずかに異なる画像を取得します。

  2. オレンジをカットして、さまざまな背景に配置します。

  3. さまざまなスケール係数でオレンジをスケーリングします。

  4. 画像を回転させます。

  5. 合成腐ったオレンジを作成します。

  6. 前述のすべての異なる組み合わせを混ぜます。この種の増強により、何千もの異なるオレンジを簡単に作成できます。

12.000の画像のデータセットを使用してそのようなことを行い、630.000のサンプルを作成できます

3
crodriguezo

それは確かにあなたのデータセットを増やす良い方法です。たとえば、画像にガウスぼかしを適用できます。ぼやけますが、オリジナルとは異なります。画像を反転することもできます。または、最後のケースでは、新しい画像を探して、引用された手法を適用します。

2
Lucas Borsatto

データ拡張はトレーニングセットを強化するための本当に良い方法ですが、それでも過剰適合する可能性があるため、ディープネットワークをエンドツーエンドでトレーニングするには十分ではありません。 imagenetデータセットでトレーニングされた開始のような事前トレーニングされたモデルを取得し、問題に合わせて微調整するドメイン適応を検討する必要があります。ユースケースを分類するために必要なパラメーターのみを学習する必要があるため、利用可能なトレーニングデータが比較的少なくても、優れた精度を実現できます。私はこのテクニックで分類のデモを主催しました ここ 。データセットで試してみて、役立つかどうかを確認してください。デモでは、事前にトレーニングされたモデルと、アップロードするデータセットのデータ拡張を処理します。

0
pratsJ