-
tensorboard:可視化數據
在anaconda安裝:
pip install tensorboard==2.12.0
最好使用這個版本 不然后面調用會報錯 因為版本過高的原因
然后還碰到了安裝的時候 安裝到C盤去了 但是我用的虛擬環境是在E盤:此時去C盤把那些新安裝的復制過來就好了 附錄我C盤的路徑:C:\Users\asus\AppData\Roaming\Python\Python38\Scripts
(搜索了一下有大佬說可能是python版本的問題 以后pip/conda install的時候指定一下python版本 可以先在虛擬環境中python --version查看一下)
-
transforms:數據增強(數據預處理)
transforms是個工具箱 里面有很多工具 可以處理圖片得到一個結果
tool = transforms.totensor()
result = tool(input)
為什么非要轉化成tensor型?因為它里面有很多神經網絡深度學習的參數 想要訓練就需要tensor型
-
常見的transforms工具(按住ctrl可以進入源碼)
-
ToTensor()
code:
from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transformswriter = SummaryWriter('../logs') #tensorboard --logdir=../logs img = Image.open('../images/1.jpg') print(img)# use TOTensor() trans_tensor = transforms.ToTensor() img_tensor = trans_tensor(img) writer.add_image('totensor',img_tensor,dataformats='CHW')writer.close()
logs:
-
Normalize() 標準化
設置Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) (這樣設置可以實現歸一化)
input[channel] = (input[channel] - mean[channel]) / std[channel]
=(input - 0.5) / 0.5
=2 * input - 1
input [0,1]
result [-1,1]
code:(在writer.close()之前加上)
# use Normalize() print(img_tensor[0][0][0]) trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) #trans_norm = transforms.Normalize([1,2,3],[3,2,1]) img_norm = trans_norm(img_tensor) print(img_norm[0][0][0]) writer.add_image('normalize',img_norm) #writer.add_image('normalize',img_norm,1)
logs:
可以換幾個數據試一下:(冬天寒冷小蘇 變成夏天紅溫小蘇了)
-
Resize()
改變圖片大小
code:
#use Resize() print(img.size) trans_resize = transforms.Resize((512,512)) img_resize = trans_resize(img) img_resize = trans_totensor(img_resize) print(img_resize) writer.add_image('resize',img_resize,0)
好吧:是拉伸小餅
-
Compose()
串聯多個圖片變換的操作
code:
#use Compose() - Resize() - 2 trans_resize_2 = transforms.Resize(512) trans_compose = transforms.Compose([trans_resize_2,trans_totensor]) img_resize_2 = trans_compose(img) writer.add_image('resize',img_resize_2,1)
-
RandomCrop()
隨機裁剪
code:
#use RandomCrop() trans_random = transforms.RandomCrop(512) trans_compose_2 = transforms.Compose([trans_random,trans_totensor]) #隨機裁剪十次 for i in range(10):img_crop = trans_compose_2(img)writer.add_image('random_crop',img_crop,i)
還可以根據寬和高裁剪的
code:
trans_random = transforms.RandomCrop((500,1000)) trans_compose_3 = transforms.Compose([trans_random,trans_totensor]) for i in range(10):img_crop = trans_compose_3(img)writer.add_image('random_crophw',img_crop,i)
-
以上完整代碼
先展示目錄結構:
code:
from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transforms import cv2 import numpy as npwriter = SummaryWriter('../logs') #tensorboard --logdir=../logs img = Image.open('../images/1.jpg') print(img)# use TOTensor() trans_totensor = transforms.ToTensor() img_tensor = trans_totensor(img) writer.add_image('totensor',img_tensor,dataformats='CHW')# use Normalize() print(img_tensor[0][0][0]) trans_norm = transforms.Normalize([1,2,3],[3,2,1]) img_norm = trans_norm(img_tensor) print(img_norm[0][0][0]) writer.add_image('normalize',img_norm,1)#use Resize() print(img.size) trans_resize = transforms.Resize((512,512)) img_resize = trans_resize(img) img_resize = trans_totensor(img_resize) print(img_resize) writer.add_image('resize',img_resize,0)#use Compose() - Resize() - 2 trans_resize_2 = transforms.Resize(512) trans_compose = transforms.Compose([trans_resize_2,trans_totensor]) img_resize_2 = trans_compose(img) writer.add_image('resize',img_resize_2,1)#use RandomCrop() trans_random = transforms.RandomCrop(512) trans_compose_2 = transforms.Compose([trans_random,trans_totensor]) for i in range(10):img_crop = trans_compose_2(img)writer.add_image('random_crop',img_crop,i)trans_random = transforms.RandomCrop((500,1000)) trans_compose_3 = transforms.Compose([trans_random,trans_totensor]) for i in range(10):img_crop = trans_compose_3(img)writer.add_image('random_crophw',img_crop,i)writer.close()
-