最近では、深層学習といったらpytorchがほぼ一択となってきており(少なくとも機械学習・深層学習系の研究界隈では)、Kerasやtensorflowを使っていたけど、pytorchを使い始めたり、必要に応じてpytorchを勉強する必要性が出てきた人も多いのではないでしょうか。
今回は、pytorchを利用する際に、ほぼ必ずと言っていいほど利用しているtorchvisionに含まれるtransformsモジュールについて解説していきます。
また、transformsモジュールで利用できる関数群についてもできる限り解説をしていきたいと思います。
transformはデータ前処理用のライブラリ
torchvisonのtransformsは、端的にいうと、pytorchで利用することができる、データの前処理用のライブラリです。前処理なので様々な機能が備わっており、基本的に何か処理をしようと思ったら、transformsに含まれてないかな?というのは確認した方が良いかもしれません。
公式ドキュメント内のtransformのページに、transformの解説や実装されている関数群の一覧が掲載されています。
数年前はopencvで前処理をしていたのですが、だいぶ便利になりました…。
だいたい必要と思われる機能はほとんど揃っています。
torchvisonのtransformsライブラリに含まれる機能
- 画像の中央をくりぬく操作(CenterCrop)
- 画像をグレースケール化
- ランダムにアフィン変換
- 画像のリサイズ
- リストからランダムに選んで変換処理を実行
- Tensor形式とPIL形式を相互変換
- DataAugument(データ拡張)
- 画像の標準化