> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/roboflow/roboflow-jp/datasets/dataset-versions/image-preprocessing.md).

# 画像を前処理する

前処理により、データセットが標準形式になります（例：すべての画像が同じサイズになる）。このステップは、モデルを学習する前にデータセットの一貫性を確保するために不可欠です。

前処理は Train、Valid、Test セット内のすべての画像に適用されます（Augmentations とは異なり [Augmentations](/roboflow/roboflow-jp/datasets/dataset-versions/image-augmentation.md)、これは Train セットにのみ適用されます）。

Roboflow プラットフォームでは、次の前処理オプションを利用できます：

* Auto-Orient
* Resize
* Grayscale
* Auto-Adjust Contrast
* Isolate Objects
* Static Crop
* Tile
* Modify Classes
* Filter Null
* Filter by Tag

各オプションについては以下で説明します。

### Auto-Orient

Auto-Orient は画像から EXIF データを取り除くことで、ディスク上に保存されているのと同じ向きで画像が表示されるようにします。

EXIF データは、与えられた画像の向きを決定します。Preview on Mac のようなアプリケーションは、このデータを使って、ディスク上の保存向きが異なっていても、特定の向きで画像を表示します。

* Roboflow では、基本的にこれを有効にしたままにし、推論時に画像がモデルへどのように入力されているかを確認することを推奨しています。
* 画像を Auto-Orient すべきかどうかについてもっと知りたい場合は、 [ブログをご覧ください](https://blog.roboflow.com/exif-auto-orientation/).

### Resize

Resize は画像サイズを変更し、必要に応じて指定したサイズへスケールします。アノテーションは比例的に調整されます（ただし下記の「fill」の場合を除く）。

現在、サポートしているのは縮小のみです。以下についてのガイダンスを提供しています [あなたのユースケースに最適な resize オプション](https://blog.roboflow.com/you-might-be-resizing-your-images-incorrectly/).

* **Stretch to:** 画像を希望するピクセル単位のサイズに引き伸ばします。アノテーションは比例してスケールされます。画像は正方形になり、歪みますが、元画像データは失われません。
* **Fill (with center crop) in:** 生成された画像は、希望する出力サイズの中央を切り出したものになります。たとえば、元画像が 2600x2080 で、resize オプションが 640x640 に設定されている場合、出力される resize は元画像の中央 640x640 になります。アスペクト比は維持されますが、元画像データは失われます。
* **Fit within:** 元画像の寸法は、元画像のアスペクト比を維持したまま出力画像の寸法になるようにスケールされます。たとえば、元画像が 2600x2080 で、resize オプションが 640x640 に設定されている場合、長い辺（2600）は 640 にスケールされ、もう一方の辺（2080）は約 512 ピクセルにスケールされます。画像のアスペクト比と元データは維持されますが、正方形にはなりません。
* **Fit (reflect edges) in:** 元画像の寸法は、元画像のアスペクト比を維持したまま出力画像の寸法になるようにスケールされ、追加されるパディングは元画像の反射になります。たとえば、元画像が 2600x2080 で、resize オプションが 416x416 に設定されている場合、長い辺（2600）は 416 にスケールされ、もう一方の辺（2080）は約 335.48 ピクセルにスケールされます。残りのピクセル領域（416-335.48、つまり 80.52 ピクセル）は元画像の反射ピクセルになります。特筆すべき点として、Roboflow はデフォルトでアノテーションも反射します。画像は正方形になり、パディングが追加され、アスペクト比と元データは維持されます。
* **Fit (black edges) in:** 元画像の寸法は、元画像のアスペクト比を維持したまま出力画像の寸法になるようにスケールされ、追加されるパディングは黒い領域になります。たとえば、元画像が 2600x2080 で、resize オプションが 416x416 に設定されている場合、長い辺（2600）は 416 にスケールされ、もう一方の辺（2080）は約 335.48 ピクセルにスケールされます。残りのピクセル領域（416-335.48、つまり 80.52 ピクセル）は黒いピクセルになります。画像は正方形になり、黒のパディングが付き、アスペクト比と元データは維持されます。
* **Fit (white edges) in:** 元画像の寸法は、元画像のアスペクト比を維持したまま出力画像の寸法になるようにスケールされ、追加されるパディングは白い領域になります。たとえば、元画像が 2600x2080 で、resize オプションが 416x416 に設定されている場合、長い辺（2600）は 416 にスケールされ、もう一方の辺（2080）は約 335.48 ピクセルにスケールされます。残りのピクセル領域（416-335.48、つまり 80.52 ピクセル）は白いピクセルになります。画像は正方形になり、白のパディングが付き、アスペクト比と元データは維持されます。

### Grayscale

RGB チャネルを持つ画像を単一のグレースケールチャネルを持つ画像に変換し、メモリを節約できます。各グレースケールピクセルの値は、対応する赤・緑・青のピクセルの加重和として計算されます：Y = 0.2125 R + 0.7154 G + 0.0721 B。

Scikit-Image [Scikit-Image](https://scikit-image.org/docs/dev/auto_examples/color_exposure/plot_rgb_to_gray.html).)

### Auto-Adjust Contrast

コントラストの低い画像を強調します。私たちは [コントラストを前処理ステップとして使うべきかどうかを](https://blog.roboflow.com/when-to-use-contrast-as-a-preprocessing-step/).

* **コントラストストレッチ**：画像は、第 2 パーセンタイルと第 98 パーセンタイルの間に入るすべての輝度値を含むように再スケールされます。 [詳細を見る](http://homepages.inf.ed.ac.uk/rbf/HIPR2/stretch.htm).
* **ヒストグラム平坦化**：画像内で最も頻繁に現れる輝度値を「広げる」処理です。平坦化された画像はおおむね均一な分布となり、すべてのピクセル色がほぼ同程度に表現されます。 [詳細を見る](https://en.wikipedia.org/wiki/Histogram_equalization).
* **適応的平坦化**：Contrast Limited Adaptive Histogram Equalization（CLAHE）。画像の異なるタイル領域ごとに計算されたヒストグラムを使って、局所コントラストを強調するアルゴリズムです。そのため、画像の大部分より暗い領域や明るい領域でも、細部を強調できます。（Via [Scikit-Image](https://scikit-image.org/docs/dev/api/skimage.exposure.html#skimage.exposure.equalize_adapthist).)

## 高度な前処理機能

### Isolate Objects

Isolate Objects 変換では、各バウンディングボックスを個別の画像として切り出して抽出します。このステップにより、Object Detection データセットが Classification データセットに変換されます。

データセット内の多くのクラスが似ている場合、2 つのモデルを順番に使うのが一般的です。最初のモデル（object detection）がオブジェクトを見つけ、2 つ目のモデル（classification）がそれが何であるかを識別します。Isolate Objects 変換は、2 つ目のモデルを学習するために必要なデータセットを作成する際に役立ちます。

### Static Crop

![static crop 機能と出力例。](/files/eafd79083277dcc27493824b0b060bf42d13cf50)

### Tile

Tiling は、小さなオブジェクトの検出に役立ちます（特に航空画像や顕微鏡画像のようなケースで）。デフォルト設定は 2x2 の tiling ですが、必要に応じて調整できます。Tiling は *前に* 前処理パイプラインでの resizing。

![tiling ツールと、出力のプレビュー（「grid」で表示）。](/files/e177cd35a913d209f010faee49ff8f3dc4dfbd10)

### Modify Classes

データセットの新しい Version を生成する際に、特定のクラスを除外したり、クラスを再マッピング（名前変更）したりするための前処理ツールです。これらの変更は、生成した Version にのみ適用されます。元のデータセット自体は変更されません。

![「Apple leaf」クラスを除外する。](/files/b563cce20c9f96a2be336dfbc75e189dbbe82261)

![クラス「scratches」を「scratch」に再マッピングする。](/files/afcfb906eb143aa512e68e4c2c3cc63db4e5b5ab)

### Filter Null

Filter Null 変換では、データセット内の一定割合の画像にアノテーションを付けることを必須にできます。null annotation とマークされた画像、または Modify Classes ツール適用後に「unannotated」となった画像のみが、Filter Null の影響を受けます。

この変換は、データセットの大部分に目的のオブジェクトが含まれていない場合に有用です。

![Filter Null の前処理ステップを適用する。](/files/beaf2e1947a6d259059228ed767d2bfd8fb73222)

{% hint style="warning" %}
このツールを使用する前に、データセット内のすべての画像に正しくアノテーションを付け、適切な画像を null annotation として指定し、必要のないクラスは除外しておいてください。
{% endhint %}

{% hint style="info" %}
[Missing アノテーションと Null アノテーションの違い](https://blog.roboflow.com/missing-and-null-image-annotations/)

「Missing Annotations」は、画像にアノテーションが付いていない場合に発生します（画像を未アノテーションのままにすると、学習済みデータセットのパフォーマンスに問題が生じ、学習失敗につながる可能性があります）。Null アノテーションは、 *何も* モデルに検出してほしいものがその画像内に存在しない場合にのみ適用してください。
{% endhint %}

### Filter by Tag

Filter by Tag 変換では、どの画像を Version に含めるか／含めないかを、どの [Tags](https://docs.roboflow.com/datasets/add-tags-to-images) が適用されているかに基づいてフィルタできます。この変換は、新しいデータのサブセットでモデルを学習したり、トレーニングから不要な画像を除外したりするのに役立ちます。

各 Tag には 3 つのオプションがあります：

* **Require:** Require タグの付いた画像のみが Version に含まれます。
* **Exclude**：Exclude タグの付いた画像は Version に含まれません。
* **Allow:** Allow タグの付いた画像は、Exclude と Require のルールに従って Version に含まれます。

<figure><img src="/files/7d3de324d6b8e0b340104bcac35e98d5027966c2" alt=""><figcaption><p>この例では、生成される Version には、 <code>do-not-include</code> タグが付いていない画像のみが含まれます。</p></figcaption></figure>
