当前位置: 首页 > news >正文

济阳县做网站公司如何解决网站图片打开慢

济阳县做网站公司,如何解决网站图片打开慢,asp在网站制作中的作用,学校网站制作模板定义了一个名为 ListDataset 的类#xff0c;它继承自 PyTorch 的 Dataset 类,这个数据集从一个包含图像文件路径的列表中读取图像和对应的标签文件 class ListDataset(Dataset):def __init__(self, list_path, img_size416, augmentTrue, multiscaleTrue, normalized_labelsT…定义了一个名为 ListDataset 的类它继承自 PyTorch 的 Dataset 类,这个数据集从一个包含图像文件路径的列表中读取图像和对应的标签文件 class ListDataset(Dataset):def __init__(self, list_path, img_size416, augmentTrue, multiscaleTrue, normalized_labelsTrue):with open(list_path, r) as file:self.img_files file.readlines()# 找到图片对应的label文件路径将png和jpg格式变成txt格式self.label_files [path.replace(images, labels).replace(.png, .txt).replace(.jpg, .txt)for path in self.img_files]self.img_size img_size#存储目标图像尺寸。self.max_objects 100# 定义了图像中最大对象数量默认为 100。self.augment augment #是否进行数据增强self.multiscale multiscale#是否多尺度训练self.normalized_labels normalized_labels#是否标签归一化#定义了多尺度训练时图像尺寸的范围。self.min_size self.img_size - 3 * 32self.max_size self.img_size 3 * 32self.batch_count 0 调用函数 dataset ListDataset(train_path, augmentTrue, multiscaleopt.multiscale_training) 定义了一个名为 collate_fn 的函数它是 ListDataset 类的一个方法。这个函数用于将一个批次中的多个数据样本合并成一个批次 def collate_fn(self, batch):# 解压批次数据paths, imgs, targets list(zip(*batch))# Remove empty placeholder targets# 移除空目标targets [boxes for boxes in targets if boxes is not None]# Add sample index to targets# 添加样本索引到目标for i, boxes in enumerate(targets):boxes[:, 0] i# 拼接目标targets torch.cat(targets, 0) #将targets按行进行拼接# Selects new image size every tenth batch# 多尺度训练if self.multiscale and self.batch_count % 10 0:self.img_size random.choice(range(self.min_size, self.max_size 1, 32))# Resize images to input shape# 调整图像尺寸imgs torch.stack([resize(img, self.img_size) for img in imgs])self.batch_count 1return paths, imgs, targets 调用函数 加载器可以批量加载数据集并为训练过程提供数据 dataloader torch.utils.data.DataLoader(dataset,batch_sizeopt.batch_size, #1个样本打包成一个batch进行加载shuffleTrue, #对数据进行随机打乱num_workersopt.n_cpu, #用于指定子进程的数量用于并行地加载数据。默认情况下num_workers的值为0表示没有使用子进程所有数据都会在主进程中加载。当设置num_workers大于0时DataLoader会创建指定数量的子进程每个子进程都会负责加载一部分数据然后主进程负责从这些子进程中获取数据。# 使用子进程可以加快数据的加载速度因为每个子进程可以并行地加载一部分数据从而充分利用多核CPU的计算能力。但是需要注意的是使用子进程可能会导致数据的顺序被打乱因此如果需要保持数据的原始顺序应该将shuffle参数设置为False。# num_workers的值应该根据具体情况进行调整。如果数据集较大可以考虑增加num_workers的值以充分利用计算机的资源。但是需要注意的是如果num_workers的值过大可能会导致内存消耗过大或者CPU负载过重从而影响程序的性能。因此需要根据实际情况进行调整。pin_memoryTrue, #指定是否将加载进内存的数据的指针固定pin这个参数在某些情况下可以提高数据加载的速度。# 当设置pin_memoryTrue时DataLoader会将加载进内存的数据的指针固定即不进行移动操作。这样做的目的是为了提高数据传输的效率。因为当数据从磁盘或者网络等地方传输到内存中时如果指针不固定可能会导致数据在传输过程中被移动从而需要重新读取浪费了时间。而固定指针可以避免这种情况的发生从而提高了数据传输的效率。# 需要注意的是pin_memory参数的效果与操作系统和硬件的性能有关。在一些高性能的计算机上固定指针可能并不会带来太大的性能提升。但是在一些内存带宽较小的计算机上固定指针可能会显著提高数据加载的效率。因此需要根据实际情况进行调整。collate_fndataset.collate_fn,# collate_fn是一个函数用于对每个batch的数据进行合并。这个函数的输入是一个batch的数据输出是一个合并后的数据。# collate_fn函数的主要作用是对每个batch的数据进行预处理例如将不同数据类型的张量合并成一个张量或者对序列数据进行padding操作等。这样可以使得每个batch的数据格式一致便于模型进行训练。# 在默认情况下collate_fn函数会将每个batch的数据按照第一个元素的张量形状进行合并。例如如果一个batch的数据中第一个元素的张量形状是[# 3, 224, 224]那么collate_fn函数会将该batch的所有数据都调整为这个形状。) 创建了一个名为 optimizer 的优化器对象用于在训练过程中更新模型的参数。 optimizer torch.optim.Adam(model.parameters()) 定义了一个名为 metrics 的列表其中包含了在目标检测模型训练和评估过程中常用的一系列指标。 metrics [grid_size,#表示模型输出的特征图的大小loss,#损失值x,y,w,h,#表示目标检测中目标框的中心坐标x, y和宽高w, hconf,#置信度cls,#目标框中目标的类别预测的分数cls_acc,#目标类别预测的正确率recall50,recall75,#表示在不同的置信度阈值通常是 0.5 和 0.75下的召回率。precision,#精确度conf_obj,conf_noobj,#对象置信度和非对象置信度]pad_to_square 函数是一个用于将图像填充到正方形的函数 def pad_to_square(img, pad_value):c, h, w img.shape# 计算高度和宽度之间的差异dim_diff np.abs(h - w)# 计算高度和宽度差异的一半以及剩余的部分pad1, pad2 dim_diff // 2, dim_diff - dim_diff // 2 #dim_diff - dim_diff // 2剩余部分不一定能被2整除的空间# 根据高度和宽度的比较结果确定填充的方向和大小pad (0, 0, pad1, pad2) if h w else (pad1, pad2, 0, 0) #填充方向左右上下# 使用 PyTorch 的 F.pad 函数对图像进行填充img F.pad(img, pad, constant, valuepad_value)return img, pad图像处理获取图像文件的路径,将图像转换为 PyTorch 张量并确保图像是 RGB 格式。获取图像的高度和宽度使用 pad_to_square 函数将图像填充为正方形 def __getitem__(self, index):# ---------# Image图片的处理# ---------# 获取图像文件的路径并将其拼接为绝对路径img_path self.img_files[index % len(self.img_files)].rstrip()img_path rD:/KECHENG/pythonProject/.venv/Lib/PyTorch-YOLOv3/ img_path#print (img_path)使用绝对路径F:\人工智能学习\深度学习课件\代码\第7章yolo\PyTorch-YOLOv3\PyTorch-YOLOv3\data\coco# Extract image as PyTorch tensor# 转换为RGB格式转换为PyTorch张量。img transforms.ToTensor()(Image.open(img_path).convert(RGB))# Handle images with less than three channelsif len(img.shape) ! 3:#是为了防止你的图片中存在灰度图img img.unsqueeze(0)img img.expand((3, img.shape[1:]))# 获取图像的高度和宽度_, h, w img.shapeh_factor, w_factor (h, w) if self.normalized_labels else (1, 1)# 当尺寸并不是标准的正方形进行填充0。img, pad pad_to_square(img, 0)_, padded_h, padded_w img.shape 标签处理获取标签文件的路径将其转换为 PyTorch 张量。将标签中的归一化坐标转换回原始图像的坐标系并根据填充调整坐标,将坐标重新归一化到填充后的图像尺寸。创建 targets 张量用于存储更新后的标签信息。 # 获取标签文件的路径并将其拼接为绝对路径。label_path self.label_files[index % len(self.img_files)].rstrip()label_path rD:\KECHENG\pythonProject\.venv\Lib\PyTorch-YOLOv3/ label_path#print (label_path)F:\人工智能学习\深度学习课件\代码\第7章yolo\PyTorch-YOLOv3\PyTorch-YOLOv3\data\cocotargets Noneif os.path.exists(label_path):# 读取标签文件内容并将其转换为PyTorch张量boxes torch.from_numpy(np.loadtxt(label_path).reshape(-1, 5))# Extract coordinates for unpadded unscaled image# COCO数据集中的.txt文件每个字段的含义# class_num类别编号从1开始。# box_cx归一化后的中心横坐标即像素坐标的cx除以图像宽度的结果。# box_cy归一化后的中心纵坐标即像素坐标的cy除以图像高度的结果。# box_w归一化后的标注框宽度即标注框宽度除以图像宽度的结果。# box_h归一化后的标注框高度即标注框高度除以图像高度的结果。x1 w_factor * (boxes[:, 1] - boxes[:, 3] / 2)#还原回标注框的左上x值y1 h_factor * (boxes[:, 2] - boxes[:, 4] / 2)x2 w_factor * (boxes[:, 1] boxes[:, 3] / 2)y2 h_factor * (boxes[:, 2] boxes[:, 4] / 2)# Adjust for added padding# 根据添加的填充调整坐标x1 pad[0]#图像填充0y1 pad[2]x2 pad[1]y2 pad[3]# Returns (x, y, w, h) 填充后继续还原回原始的值# 将坐标转换回归一化值boxes[:, 1] ((x1 x2) / 2) / padded_wboxes[:, 2] ((y1 y2) / 2) / padded_hboxes[:, 3] * w_factor / padded_wboxes[:, 4] * h_factor / padded_h# 创建targets张量用于存储更新后的标签信息targets torch.zeros((len(boxes), 6))targets[:, 1:] boxes图像增强 # 应用图像增强if self.augment:if np.random.random() 0.5:img, targets horisontal_flip(img, targets)return img_path, img, targets 调用函数 for epoch in range(1,opt.epochs1):model.train()# 记录当前轮次的开始时间start_time time.time()# 从数据加载器 dataloader 中迭代获取批次数据。for batch_i, (_, imgs, targets) in enumerate(dataloader):# 计算批次完成的总数batches_done len(dataloader) * epoch batch_i# 数据移动到设备imgs Variable(imgs.to(device)) #Variable类是PyTorch中的一个包装器它将张量和它们的梯度信息封装在一起。当我们对一个张量进行操作时PyTorch会自动地创建一个对应的Variable对象其中包含了原始张量、梯度等信息。通过使用Variable我们可以方便地进行自动微分和优化。targets Variable(targets.to(device), requires_gradFalse)print(imgs,imgs.shape)print(targets,targets.shape)# 模型前向传播和损失计算loss, outputs model(imgs, targets)loss.backward()
http://www.w-s-a.com/news/488782/

相关文章:

  • 深圳市龙岗区住房和建设局网站怎么给网站做404界面
  • 设计类网站网站系统 建设和软件岗位职责
  • 网站后台打开慢站长之家网址ip查询
  • 图书馆网站设计方案家具设计作品
  • 马鞍山做网站公司排名徐州网站外包
  • 十堰微网站建设电话宣传型网站建设
  • 电脑制作网站教程网络公司除了建网站
  • 360制作网站搜网站网
  • 门户网站标题居中加大网站底部的制作
  • 网站建设项目费用报价ai软件下载
  • 面料 做网站重庆网站seo费用
  • 中国沈阳网站在哪里下载中国移动营销策略分析
  • 建设银行 钓鱼网站360免费建站教程
  • wordpress全站cdn网站运营年度推广方案
  • 成都网站开发培训机构网站开发 实习报告
  • 廊坊网站建设佛山厂商wordpress神主题
  • 成县建设局网站中国建筑有几个工程局
  • 网站打不开被拦截怎么办单页面网站制作
  • 关于协会网站建设的建议设计公司名字参考
  • 怎样申请做p2p融资网站页面设计时最好使用一种颜色
  • 一般做网站上传的图片大小网站软件设计
  • 用来网站备案注册什么公司好wordpress怎么搜索中文主题
  • 网站开发 打标签深圳软件公司排名
  • 邯郸的网站建设电子网站怎么做的
  • 中国企业信用网四川游戏seo整站优化
  • 下载站推广wordpress扩展字段
  • 网站建设这个工作怎么样免费电子版个人简历模板
  • 移动网站设计与制作网站开发接私活
  • 视频制作素材网站wordpress mysql 被删
  • 静态网站 模板公司一般都用什么邮箱