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でも同じです。
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でも同じです。
(補足)JETSON NANOにPYTORCHをインストール [人工知能(ディープラーニング)]
※2019/07/14にNVIDIAのPYTHORCHに関する公式ページを見たところ
情報が更新されていたので、インストール方法を補足しつつ説明します。
印象としては、以前よりも簡単になった気もします。
以下の方法でなんらかのエラーなどが起きた場合には、公式サイトの情報をチェックしてください。
※基本的に2019年5月の補足情報と同じです。
2019/07/14時点での公式サイトはこちらです。
https://devtalk.nvidia.com/default/topic/1049071/jetson-nano/pytorch-for-jetson-nano-with-new-torch2trt-converter/
nVIDIAの公式サイトの情報は、結構な頻度で変わっています。
私がインストールしたときには、 libjpeg-devの情報は記載されていませんでしたが、現在は記載されています。
抜粋すると、以下のようになります。
●python3.6にpytorch1.1をインストールする
WGETとPIP3でインストールします。
wget https://nvidia.box.com/shared/static/j2dn48btaxosqp0zremqqm8pjelriyvs.whl -O torch-1.1.0-cp36-cp36m-linux_aarch64.whl
pip3 install numpy torch-1.1.0-cp36-cp36m-linux_aarch64.whl
●torch visionをインストール
(1)まず画像等の変換作業に必要な他の関連するライブラリーをインストール
sudo apt-get install libjpeg-dev zlib1g-dev
(2)必要なファイルを、torchvisonというフォルダーを作成してgitでダウンロードする
git clone -b v0.3.0 https://github.com/pytorch/vision torchvision
(3)torchvisionのフォルダーに移動
cd torchvision
(4)Python3で設定ファイルを読み込ませて実行(実質的なインストール作業)する
sudo python3 setup.py install
(※公式サイトでは、「python3」ではなく、ver2.7である「python」と記載されていますが、それだとpython3を使う場合には不整合が起こると思います)
このアクリルケース意外と良いです。ただ、組み立ての説明書はないため、仮組みしてどのアクリル板がどこにはまるのかを調べる必要がありますのでご注意ください。
情報が更新されていたので、インストール方法を補足しつつ説明します。
印象としては、以前よりも簡単になった気もします。
以下の方法でなんらかのエラーなどが起きた場合には、公式サイトの情報をチェックしてください。
※基本的に2019年5月の補足情報と同じです。
2019/07/14時点での公式サイトはこちらです。
https://devtalk.nvidia.com/default/topic/1049071/jetson-nano/pytorch-for-jetson-nano-with-new-torch2trt-converter/
nVIDIAの公式サイトの情報は、結構な頻度で変わっています。
私がインストールしたときには、 libjpeg-devの情報は記載されていませんでしたが、現在は記載されています。
抜粋すると、以下のようになります。
●python3.6にpytorch1.1をインストールする
WGETとPIP3でインストールします。
wget https://nvidia.box.com/shared/static/j2dn48btaxosqp0zremqqm8pjelriyvs.whl -O torch-1.1.0-cp36-cp36m-linux_aarch64.whl
pip3 install numpy torch-1.1.0-cp36-cp36m-linux_aarch64.whl
●torch visionをインストール
(1)まず画像等の変換作業に必要な他の関連するライブラリーをインストール
sudo apt-get install libjpeg-dev zlib1g-dev
(2)必要なファイルを、torchvisonというフォルダーを作成してgitでダウンロードする
git clone -b v0.3.0 https://github.com/pytorch/vision torchvision
(3)torchvisionのフォルダーに移動
cd torchvision
(4)Python3で設定ファイルを読み込ませて実行(実質的なインストール作業)する
sudo python3 setup.py install
(※公式サイトでは、「python3」ではなく、ver2.7である「python」と記載されていますが、それだとpython3を使う場合には不整合が起こると思います)
NVIDIA Jetson Nano開発者キットケース用の新しい到着アクリルケースボックス(ジャストボックス)
- 出版社/メーカー: heartbeeps
- メディア: エレクトロニクス
このアクリルケース意外と良いです。ただ、組み立ての説明書はないため、仮組みしてどのアクリル板がどこにはまるのかを調べる必要がありますのでご注意ください。