G検定(ジェネラリスト検定)
のいじんぐ
ノイズ付加
Noising
画像や動画の画素値に、正規分布(ガウス分布)からサンプリングしたノイズを足すデータ拡張の手法。正規分布の平均と標準偏差で、足すノイズの中心とばらつきを決める。
詳しい説明
ノイズ付加とは
ノイズ付加は、画像や動画の画素値に、正規分布(ガウス分布)からサンプリングしたノイズを足すデータ拡張の手法です。PyTorchの画像処理ライブラリであるtorchvisionでは、torchvision.transforms.v2.GaussianNoiseというクラスとして用意されています。公式ドキュメントはこのクラスを、画像または動画にガウシアンノイズを加えるものと説明しています。
入力として想定される形
入力はテンソルで、末尾の3つの次元がチャネル数(1または3)、高さH、幅Wの順に並んだ形を想定しています。その前には任意の数の次元を置けるため、複数の画像をまとめたバッチや、フレームが並んだ動画も同じように扱えます。なお、PILの画像形式には対応していません。
画像ごとに独立したノイズ
バッチの中の各画像や各フレームは、それぞれ独立に変換されます。つまり同じバッチに含まれていても、画像ごとに加えられるノイズは異なります。すべての画像に同じ模様のノイズが乗るわけではない点を押さえておきましょう。
データ型と値の尺度
入力のデータ型は2通りを想定しています。浮動小数点型なら値は0から1の範囲、uint8型なら0から255の範囲です。
注意したいのは、パラメータが入力のデータ型に関わらず同じ尺度で扱われることです。例えば平均のパラメータを0.5にすると、浮動小数点の画像では平均して0.5だけ値が増え、uint8の画像では平均して127.5だけ値が増えます。127.5は255の半分なので、どちらの型でも、値の範囲全体に対して同じ割合の変化になります。
3つのパラメータ
- mean: サンプリングする正規分布の平均です。既定値は0で、この場合ノイズは平均すると値を増やしも減らしもしません。
- sigma: サンプリングする正規分布の標準偏差です。既定値は0.1で、大きくするほどノイズのばらつきが大きくなります。
- clip: ノイズを加えた後の値を、入力のデータ型に応じて0から1または0から255の範囲に切り詰めるかどうかを指定するオプションです。
試験との関係
ノイズ付加は、G検定のシラバス2024のキーワードに含まれるデータ拡張の手法の一つです。正規分布からノイズをサンプリングして画素値に足すという仕組みと、平均と標準偏差という2つのパラメータの意味を結び付けて理解しておくとよいでしょう。
試験で問われること
G検定
- ノイズ付加は、画像や動画の画素値に正規分布(ガウス分布)からサンプリングしたノイズを足すデータ拡張の手法で、PyTorchではtorchvision.transforms.v2.GaussianNoiseとして提供されている。
- バッチ内の各画像や各フレームは独立に変換されるため、同じバッチに含まれる画像どうしでも加えられるノイズはそれぞれ異なり、全画像に同一のノイズを乗せる処理ではない点に注意する。
- 入力は浮動小数点型なら0から1、uint8型なら0から255の範囲を想定し、パラメータはデータ型に関わらず同じ尺度で扱われるため、平均0.5は浮動小数点では0.5、uint8では127.5の増加になる。
- meanはサンプリングする正規分布の平均で既定値は0、sigmaは同じ正規分布の標準偏差で既定値は0.1であり、この2つの値によって加えるノイズの中心とばらつきの大きさが決まる。
- clipは、ノイズを加えた後の値を入力のデータ型に応じて0から1または0から255の範囲に切り詰めるかどうかを指定するオプションで、値が有効な範囲からはみ出すのを防ぐために使う。
最終更新日: 2026/09/23