SSブログ

pytorchで画像を読み込んでTENSORにする他 [人工知能(ディープラーニング)]

PYTORCHを使って画像処理をしようとして、最初に躓くのが画像を読み込んでどうやってtensorに変換するかということです。

torchvisionを使うと、簡単に出来てしまいます。

たとえば、画像(hanio.jpg)を読み込んで、tensorに変換してhanihaniに代入する場合はこんな感じです。

import torch
import torchvision
from PIL import Image
img=Image.open('hanio.jpg')
hanihani=torchvision.transforms.functional.to_tensor(img)

これで、hanihaniというtensorに代入が完了です。
ちなみに、ここで hanihani.show() と打ち込んでも、すでにtensorに変換されているので、エラーとなって表示できません。
エラーはこんな感じです:AttributeError: 'Tensor' object has no attribute 'show'

tensorをもう一度PILイメージに変換する場合には、
hani2=torchvision.transforms.functional.to_pil_image(hanihani)
とすればイメージ形式に変換できます。
hani2.show()
という具合に、show()を使っても大丈夫です。

画像を保存したいならば、
hani2.save('newhanio.jpg')
という感じで保存も出来てしまいます。
実はこんな感じで、TORCHVISIONはいろんな変換機能もあって便利なんです。
データセットのライブラリーだけじゃないんです。

●tensor形式のデータhanihaniを画像として保存する場合には、
torchvision.utils.save_image(hanihani,'newconthani.jpg')
これで、tensor形式のデータをそのまま保存できるので便利です。

詳しくはhttps://pytorch.org/docs/stable/torchvision/transforms.htmlの下の方に書かれています。

たとえば、tensorに代入しなくとも、上下反転なんかならば、
(imgはPILイメージかnumpy配列です)
hani2=torchvision.transforms.functional.vflip(img)
これで完了です。

●カラーを白黒のグレースケール画像に変換するなら、
hani2=torchvision.transforms.functional.to_grayscale(img)

●画像を任意の角度で傾けるならば(たとえば45度なら)
hani2=torchvision.transforms.functional.rotate(img,45)

●画像のリサイズ(縦合わせ)ならば
hani2=torchvision.transforms.functional.resize(img,300)
※画像の縦を300の画像としてリサイズ

●画像の一部の切りぬきならば
hani2=torchvision.transforms.functional.crop(img,20,0,300,200)
※画像の縦20,横0を始点として、高さ300,横幅200で画像を切り抜き

●画像の一部を切り抜いてリサイズするなら
hani2=torchvision.transforms.functional.resized_crop(img,20,0,300,200,500)
※画像の縦20,横0を始点として、高さ300,横幅200で画像を切り抜き、縦の長さを500ピクセルとしてリサイズ

●画像のコントラストを変更
hani2=torchvision.transforms.functional.adjust_contrast(img,1.5)
パラメーターは0〜2で。1がオリジナルで、0方向はコントラストが低く、1以上がコントラストが強くなります。

●画像の色相を変更
hani2=torchvision.transforms.functional.adjust_hue(img,0.2)
パラメーターは−0.5 〜 0.5で。


torchvisionは便利です。

ちなみに、この文章もJETSON nanoで作成していたりします。JETSON nano
面白いですよ。
ちなみにこのPYTORCHの記事はJETSONだけでなく普通のPCでも同じです。
windowsでもmacでもLINUXでも同じです。

nice!(1)  コメント(0) 
共通テーマ:学問

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。