現在、腐ったオレンジと食用オレンジを外観に基づいて区別するためのプログラムを作成しようとしています。これを行うために、私は畳み込みニューラルネットワークを使って腐ったオレンジとノーマルオレンジを訓練することを計画しています。いくつかの検索の後、私は約1つのデータベースしか見つけることができませんでした。黒い背景に150個の腐ったオレンジと150個のノーマルオレンジ(http://www.cofilab.com/downloads/)。明らかに、機械学習モデルでは、90%以上の精度を達成するためには少なくとも数千のオレンジが必要です。しかし、これらの150個のオレンジを何らかの方法で変更して、さらに多くのオレンジ色の写真を作成できますか?変更することで、私は柑橘系の果実に異なるオレンジの色合いを加えて「異なるオレンジ」にすることを意味します。これはニューラルネットワークを訓練する効果的な方法でしょうか?ニューラルネットワークを訓練するために訓練された画像を変更する
答えて
それはあなたが持っている日付の数を増やすために非常に良い方法ですを作成することができます。あなたがすることはあなたのデータに依存します。たとえば、センサから取得したデータを訓練する場合、訓練データにノイズを追加して、データセットを増やすことができます。結局のところ、センサーからのノイズが後で出ることが予想されます。
画像でトレーニングすると仮定すると、これらのテクニックを使用する手段を提供する非常に優れたgithubリポジトリがあります。このPythonライブラリは、機械学習プロジェクトの画像を増やすのに役立ちます。これは、入力画像のセットを、少し大きく変更された新しいセットに変換します。 リンク:https://github.com/aleju/imgaug
特長:
最も標準的な増強技術利用できます。
技術は イメージのイメージとキーポイント/ランドマークの両方に適用できます。増補シーケンスを 実験の開始時に1回定義してから、何度も適用してください。
各増強のための柔軟な確率的範囲を定義する。 「 各画像を-45〜45度の値で回転する」または「 画像を正規分布N(0、5.0)からサンプリングした値だけ回転する」。
は簡単に、正確に同じ方法 (例えば、画像およびそのヒートマップ)の画像の異なるバッチを増強 に決定論的値にすべての確率的範囲に変換します。
これは確かにあなたのデータセットを増やすための良い方法です。たとえば、画像にガウスぼかしを適用することができます。それらはぼやけてしまいますが、オリジナルとは異なります。あなたも画像を反転することができます。あるいは最後に、新しい画像を探し、引用されたテクニックを適用します。
あなたが探しているものがデータ増強です。あなたのケースでは、別のことを行うことができます:あなたはガウスぼかしを使用することができると言われているよう
は、わずかに異なる画像を取得するためにフィルタを適用します。
オレンジを切り、別の背景に置きます。
さまざまなスケールファクターでオレンジをスケールします。
画像を回転します。
合成腐敗オレンジを作ります。
上記のさまざまな組み合わせをすべて混ぜてください。この種の増強によって、簡単に千種類の異なるオレンジを作り出すことができます。
私は12.000画像のデータセットでそのような何かをしたと私は630.000サンプル
データの増強は本当に良いトレーニングセットを後押しするための方法が、まだそれがオーバーフィットする可能性与えられた自分自身で終了する深いネットワーク側を訓練するのに十分ではありません。あなたは、imagenetデータセットで訓練され、あなたの問題のためにそれを微調整するような、あらかじめ訓練されたモデルをとるドメイン適応を見なければなりません。ユースケースを分類するために必要なパラメータだけを学習する必要があるため、比較的少ないトレーニングデータで適切な精度を達成することができます。私はこのテクニックで分類のデモを開催しましたhere。あなたのデータセットを使って試してみましょう。このデモでは、アップロードするデータセットの事前追加モデルとデータ拡張を扱います。
- 1. フルバッチ訓練を用いたニューラルネットワークへの手紙画像の訓練
- 2. 訓練用ニューラルネットワーク
- 3. 訓練されたニューラルネットワークを格納して使用する
- 4. 訓練されたニューラルネットワークを確認する方法
- 5. 訓練されたニューラルネットワーク(画像からの認識)の保存方法
- 6. CNTK:訓練されたモデルデータへのアクセス
- 7. Keras訓練されたVGGエラー
- 8. テンソルフロースリム事前訓練されたアレックスネット
- 9. MATLAB - 訓練されたニューラルネットワークを新しいデータセットで保持する方法
- 10. KeyError例外私は2つの機能を備えたLinearRegressorを訓練している訓練されたモデル
- 11. Kerraで事前に訓練されたAlexNet分類を変更する
- 12. XORマッピングを解決するニューラルネットワークを訓練できません
- 13. 手の動きの訓練セットに基づいて動きを生成するためにニューラルネットワークを訓練する方法は?
- 14. Azureマシンスタジオから訓練されたモデルをダウンロードするには?
- 15. 訓練されたSVMをscikit-learnからOpenCVにインポートする
- 16. Mxnetで事前訓練されたモデルのレイヤーを変更する方法
- 17. TensorflowでCNNで画像を訓練する方法
- 18. OpenCV 3.1.0:訓練されたSVMを保存してロードする
- 19. 私の訓練されたTensorフローモデルをテストする方法
- 20. Python scikit-learn:訓練されたクラシファイアをエクスポートする
- 21. トーチで訓練されたVGG顔を使用する
- 22. クラシファイアが訓練された後、wekaでテキストを分類する
- 23. 2048ゲームをするためにニューラルネットワークを訓練するにはどうすればよいですか?
- 24. 訓練されたKerasモデルをロードしてトレーニングを続ける
- 25. Theano/lasagne:訓練されたモデルで予測する方法
- 26. 特異性を訓練する
- 27. CNTKの予め訓練されたResnetモデルの画像入力解像度の更新
- 28. Naive Bayesの訓練されたクラシファイアをNLTKに保存
- 29. テンソルフローチュートリアルで深いニューラルネットワークを訓練するときに損失する
- 30. Tensorflow:訓練ステップ上の遅延変数