本文へ移動

G検定(ジェネラリスト検定)

ぶらいとねす

明るさ

Brightness

画像の明るさを無作為に変化させるデータ拡張の手法。PyTorchではColorJitterクラスの引数brightnessで、明るさを変える係数を一様に選ぶ範囲を指定する。

詳しい説明

明るさの調整とは

明るさの調整は、画像の明るさを無作為に変化させるデータ拡張の手法です。学習に使う画像を、元より明るくしたり暗くしたりした画像に変えて与えます。

ColorJitterクラスの中での位置づけ

PyTorchの画像処理ライブラリtorchvisionには、ColorJitterというクラスがあります。公式ドキュメントはこのクラスを、画像の明るさ(brightness)、コントラスト(contrast)、彩度(saturation)、色相(hue)を無作為に変化させるものと説明しています。明るさの調整は、このうち明るさを受け持つ項目です。ドキュメントでは、明るさをどれだけジッター(jitter)させるかという言い方をしています。ジッターは、値を細かく変動させることを指します。4つの項目は同じクラスの引数として並んでおり、1つのクラスでまとめて指定できます。

パラメータの指定方法

明るさの変化の大きさは、引数brightnessで指定します。実際に画像へ当てはめる係数はbrightness_factorと呼ばれ、次の2通りのどちらかの範囲から一様に(範囲内のどの値も同じ確率で)選ばれます。

  • brightnessに1つの数値を渡した場合: max(0, 1 - brightness) から 1 + brightness までの範囲
  • brightnessに(最小値, 最大値)の組を渡した場合: その最小値から最大値までの範囲

例えばbrightnessに0.2を渡すと、係数は0.8から1.2までの範囲から選ばれます。1つの数値を渡した場合、範囲は1を中心に上下へ同じ幅で広がります。ただし下限はmax(0, 1 - brightness)という形になっているため、0より小さくはなりません。brightnessに1以上の値を渡したときは、下限が0で止まり、上下の幅はそろわなくなります。

指定する値は非負の数でなければならないと、ドキュメントに明記されています。

同じクラスの他の項目との違い

コントラストと彩度も、明るさと同じ形の範囲から係数を選びます。一方で色相は、-hueからhueまでの範囲から係数を選び、hueは0以上0.5以下という制約があります。明るさの範囲は1を中心に決まるのに対し、色相の範囲は0を中心に決まる点が異なります。

試験で問われること

G検定

  • 明るさの調整は画像の明るさを無作為に変化させるデータ拡張の手法で、PyTorchではColorJitterクラスの引数brightnessとして、コントラスト、彩度、色相と並んで提供されている。
  • ColorJitterでは、明るさを変える係数brightness_factorが指定した範囲から一様に選ばれる。一様とは範囲内のどの値も同じ確率で選ばれることで、選ばれた係数によって明るさが変わる。
  • brightnessに1つの数値を渡すと、係数はmax(0, 1 - brightness)から1 + brightnessまでの範囲から選ばれる。例えば0.2を渡すと、係数は0.8から1.2までの範囲になる。
  • brightnessには(最小値, 最大値)の組を渡すこともでき、その場合は係数がその最小値から最大値までの範囲から一様に選ばれる。どちらの指定でも、値は非負の数でなければならない。
  • 明るさの範囲は1を中心に決まり、下限はmax(0, 1 - brightness)で0未満にならない。色相は-hueからhueまでで0.5以下という制約があり、明るさとは範囲の決め方が異なる。

最終更新日: 2026/09/23