画像の拡張
モデルの性能向上のために拡張画像を作成します。
画像拡張は、データセット内で「Train」とマークされた既存の画像に拡張処理を適用するステップです。このプロセスは、モデルの汎化能力を向上させ、未知の画像に対してより効果的に動作するのに役立ちます。
プロジェクトを開始する際は、拡張処理を行わずに始めることをお勧めします。これにより、生データセットの品質を評価できます。拡張処理を追加してデータセットのパフォーマンスが期待通りでない場合、モデルのパフォーマンスを比較するためのベースラインがなくなります。
拡張処理なしでモデルのパフォーマンスが良くない場合は、クラスバランス、データの表現、データセットのサイズを調査する必要があるかもしれません。拡張処理なしでモデルの学習に成功したデータセットが用意できたら、さらにモデルのパフォーマンス向上のために拡張処理を追加できます。
拡張処理は、いくつかの重要な理由から、トレーニング時ではなくデータセットバージョン(「オフライン拡張」)を通じて適用されます。
モデルの再現性が向上します。Roboflow では、各画像がどのように拡張されたかのコピーを保持できます。例えば、モデルが暗い画像よりも明るい画像でより良いパフォーマンスを示す場合、より多くの低照度トレーニングデータを収集するべきです。
トレーニング時間が短縮されます。拡張処理はCPUに依存する操作です。GPUでトレーニングしながらオンザフライで拡張処理を行うと、各エポックでGPUがCPUから拡張済みデータが供給されるのを待つことがよくあります。その積み重ねが大きくなります!
トレーニングコストが削減されます。拡張処理はCPUに依存する操作のため、高価なレンタルGPUがトレーニング用画像の供給を待つことがよくあります。
拡張処理の適用方法
拡張処理は常にトレーニング画像に対して 前処理ステップの後に適用されます。選択された拡張処理はまとめて適用され、拡張設定や各設定値はランダム化され、各拡張画像に適用されます。このプロセス中に重複した画像が現れた場合、それらは作成されたバージョンから除外されます。
例えば、「水平方向に反転」と「ソルト&ペッパーノイズ」の拡張処理を選択した場合、ある画像はランダムに水平方向に反転され、ランダムなソルト&ペッパーノイズが加えられます。
拡張処理の制限
拡張処理を含むデータセットバージョンを作成する際、「最大バージョンサイズ」オプションで含める拡張画像の最大数を選択できます。
例えば、3xを選択すると、最終的なデータセットバージョンには各トレーニング元画像が 前処理ステップ 適用され、選択した設定に基づいて各画像のランダムな拡張画像が2つ追加されます。
データセットに100枚の画像があり、train/valid/testの分割が70/20/10で、3x拡張を選択した場合、最終的なデータセットはおおよそ210/20/10の分割になります。

拡張処理オプション
Roboflowの拡張処理は「基本」と「強化」のいずれかであり、2つの異なるレベルで適用できます。
画像レベルの拡張処理
画像レベルの拡張処理は、個々のオブジェクトや領域ではなく画像全体に変換を適用することで新しいトレーニングデータを作成します。画像全体を変更することで、開発者はより広範な視覚条件をシミュレートでき、モデルが新しいデータに対してより良く汎化できるようになります。
バウンディングボックスレベルの拡張処理
バウンディングボックスレベルの拡張処理は、元画像のバウンディングボックスの内容のみを変更することで新しいトレーニングデータを作成します。これにより、開発者は問題の条件により適したトレーニングデータを作成するための制御性が高まります。
A 2019年の論文 Googleの研究者によるこの論文では、バウンディングボックスのみの拡張処理を用いてモデルに最適なデータを作成するというアイデアが紹介されています。この論文では、バウンディングボックスのみの修正が体系的な改善をもたらすこと、特に小規模データセットで学習したモデルに有効であることが示されました。
詳細はこちら
Last updated
Was this helpful?