1.p6.dataset类实战
数据集:
代码
from torch.utils.data import Dataset # Ctrl+点击函数即可跳转
from PIL import Image
import os
class MyData(Dataset):
def __init__(self, root_dir, label_dir):
self.root_dir = root_dir
self.label_dir = label_dir
self.path = os.path.join(self.root_dir, self.label_dir)
self.img_path = os.listdir(self.path)
def __getitem__(self, idx):
img_name = self.img_path[idx]
img_item_name = os.path.join(self.root_dir, self.label_dir, img_name)
img = Image.open(img_item_name)
label = self.label_dir
return img, label
def __len__(self):
return len(self.img_path)
root_dir = "D:\\pycharmprojects\\openmmlab\\tudui\hymenoptera_data\\train"
ants_label = "ants"
bees_label = "bees"
ants_dataset = MyData(root_dir, ants_label)
bees_dataset = MyData(root_dir, bees_label)
train_dataset = ants_dataset + bees_dataset
python控制台调试
2.p7.tensorboard的使用
(1)writer.add_scalar()的使用
没有就下载tensorboard,pip install tensorboard
from torch.utils.tensorboard import SummaryWriter
# 创建一个SummaryWriter实例,日志将被写入"logs7"目录
writer = SummaryWriter("logs7")
# writer.add_image()
# y=x
for i in range(100):
# "y=2x", i, i=标题,y轴,x轴
writer.add_scalar("y=x", i, i) # 添加标量数据
writer.close() # 当你完成数据记录后,应该关闭SummaryWriter
运行后出现logs7文件夹,在终端运行tensorboard --logdir=事件文件所在文件夹名称
但端口可能会冲突,可以对端口进行设置如指定端口tensorboard --logdir=logs7 --port=6007(要在相应文件夹下)
有时候意外标错标题的话,日志记录是重复的,可以删除日志文件夹下的日志重新生成
(2)writer.add_img()的使用
(3)利用opencv读取图片,获得为numpy型图片数据
先下载pip install opencv-python
(4)利用numpy.array(),对PIL图片进行转换
python控制台查看
查看类型
代码里面完整写入查看
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
# 创建一个SummaryWriter实例,日志将被写入"logs7"目录
writer = SummaryWriter("logs7")
image_path = 'D:/pycharmprojects/openmmlab/Tudui2/hymenoptera_data/train/ants/0013035.jpg'
img_PIL = Image.open(image_path)
print(type(img_PIL))
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape) # H W C
writer.add_image("test", img_array, 1, dataformats='HWC')
# y=2x
for i in range(100):
# "y=2x", 2*i, i=标题,y轴,x轴
writer.add_scalar("y=2x", 2*i, i) # 添加标量数据
writer.close() # 当你完成数据记录后,应该关闭SummaryWriter
再打开tensorboard,可以看见
注意:ctrl+鼠标点击可以直接调转函数
3.(1)P10 transforms的使用
from torchvision import transforms
from PIL import Image
import cv2
from torch.utils.tensorboard import SummaryWriter
# 对图片的处理--transforms
# 通过transforms ->tensor 数据类型
image_path = 'D:/pycharmprojects/openmmlab/Tudui2/hymenoptera_data/train/ants/0013035.jpg'
img = Image.open(image_path)
print("类型:", type(img))
print(img)
writer = SummaryWriter("logs10")
# 1.transforms该如何使用,transforms中选择一个class进行创建
# 例如transforms.ToTensor()函数
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)
writer.add_image("Tensor_img", tensor_img)
writer.close()
# 2.为什么需要Tensor数据类型
cv_img = cv2.imread(image_path)
终端运行tensorboard --logdir=logs10 --port 6008
(1)P9 (2)p11常见的transforms(没学)
复习之后的