スポンサーリンク

画像の標準化について

画像の正規化

画像は、通常、各画素、各色、0〜255の値で構成されています。それを、0.0〜1.0にすることを正規化(Normalization)と呼びます。

入力画像は、0〜255の値をそのまま使用すると、学習が発散してしまうこともあるので、それを防ぐためにも0.0〜1.0への正規化をしてから入力することが多いです。

画像の標準化

各画素、各色について、平均を0.0、分散を1.0にするように調整することを標準化(Standardization)と呼びます。

CNNの入力画像として、正規化するより標準化した方が、学習が効率的に進むことが知られています。そのため、特に問題がなければ、フレームワークで用意されている画像毎の標準化を行うAPIを利用するのが良いと思います。TensorFlowであれば、tf.image.per_image_standardizationというAPIが用意されているので、それを通すだけで標準化を行うことができます。もちろん、学習側で標準化を行ったら、推論側でも標準化を行った画像を入力する必要があります。その点は注意する必要があります。

まとめ

CNNなどへの入力画像は、できれば標準化、できない場合は正規化する必要があることを述べました。私は、正規化も標準化も行わずに学習させたこともありますが、学習があまり安定しなかった経験があります。画像をCNNに入力する場合は、必ず標準化か正規化を行うようにしましょう。

※標準化のことを正規化と呼ぶこともあるようなので、用語についてはご注意ください。

タイトルとURLをコピーしました