# 画像を前処理

前処理により、データセットが標準形式（例: すべての画像のサイズが同じ）になっていることが保証されます。この手順は、モデルを学習させる前にデータセットの一貫性を確保するために不可欠です。

前処理は、Train、Valid、Test セット内のすべての画像に適用されます（ただし [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 データは、画像の向きを決定します。アプリケーション（Mac の Preview など）はこのデータを使用して、ディスク上での保存向きが異なっていても、特定の向きで画像を表示します。

* 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。

これらの重みは CRT 蛍光体で使用されており、同じ重み付けよりも赤・緑・青に対する人間の知覚をより適切に表現します。（Via [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/).

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

## Advanced Preprocessing Features

### 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

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

![「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 Annotation と Null Annotation の違い](https://blog.roboflow.com/missing-and-null-image-annotations/)

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

### Filter by Tag

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

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

* **Require:** Required タグを持つ画像のみがバージョンに含まれます。
* **Exclude**: Excluded タグを持つ画像はバージョンに含まれません。
* **Allow:** Allowed タグを持つ画像は、Exclude および Require のルールに従ってバージョンに含まれます。

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-jp/datasets/dataset-versions/image-preprocessing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
