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

昆明网站seo浙江建设网

昆明网站seo,浙江建设网,常见的跨境电商平台有哪些,怀化找工作网站#x1f60e;#x1f60e;#x1f60e;物体检测-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 14、Model类 14.2 前向传播 def forward(self, x, augmentFalse, profileFalse):if augm…物体检测-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 14、Model类 14.2 前向传播 def forward(self, x, augmentFalse, profileFalse):if augment:img_size x.shape[-2:] # height, widths [1, 0.83, 0.67] # scalesf [None, 3, None] # flips (2-ud, 3-lr)y [] # outputsfor si, fi in zip(s, f):xi scale_img(x.flip(fi) if fi else x, si)yi self.forward_once(xi)[0] # forwardyi[..., :4] / si # de-scaleif fi 2:yi[..., 1] img_size[0] - yi[..., 1] # de-flip udelif fi 3:yi[..., 0] img_size[1] - yi[..., 0] # de-flip lry.append(yi)return torch.cat(y, 1), None # augmented inference, trainelse:return self.forward_once(x, profile) # single-scale inference, train这段代码是forward方法的实现它定义了模型的前向传播过程支持正常和增强两种推理模式 前向传播函数输入x是否进行数据增强augment是否分析性能profile是否使用数据增强img_size 获取输入图像的长宽s定义缩放尺度f定义翻转模式这里None表示不翻转3表示左右翻转y初始化输出列表使用zip函数将尺度因子列表s和翻转指示列表f组合起来然后遍历每一对尺度因子和翻转指示xi如果fi不为None先根据fi的值对图像进行翻转然后调用scale_img函数根据si的值缩放处理图像否则直接调用scale_img函数根据si的值缩放处理图像yi将xi进行一次前向传播取第一个输出对输出yi的前四个维度进行缩放调整以恢复到原始的尺度。这通常是对边界框坐标的调整如果使用了上下翻转则调整y的坐标如果使用了左右翻转则调整x坐标将处理后的输出添加到列表将list y的所有输出按照第一个维度进行拼接如果在当前循环中没有使用数据增强直接进行一次正常的前向传播 前向传播方法包括了一个可选的图像增强步骤。在增强模式下通过对输入图像应用不同的尺度和翻转生成多个变体对每个变体单独进行前向传播并对输出进行调整以适应原始图像的尺寸和方向最后将所有变体的输出合并。这种方法可以增加模型的泛化能力因为它让模型在训练时见到更多的数据变化。如果不进行图像增强它将执行一次标准的前向传播。通过这种设计模型可以更灵活地应对不同的输入和训练需求 14.3 forward_once函数 def forward_once(self, x, profileFalse):y, dt [], [] # outputsfor m in self.model:if m.f ! -1: # if not from previous layerx y[m.f] if isinstance(m.f, int) else [x if j -1 else y[j] for j in m.f]if profile:try:import thopo thop.profile(m, inputs(x,), verboseFalse)[0] / 1E9 * 2 # FLOPSexcept:o 0t time_synchronized()for _ in range(10):_ m(x)dt.append((time_synchronized() - t) * 100)print(%10.1f%10.0f%10.1fms %-40s % (o, m.np, dt[-1], m.type))x m(x) # runy.append(x if m.i in self.save else None) # save outputif profile:print(%.1fms total % sum(dt))return xforward_once函数输入和forward函一样y, dt 初始化两个空列表y用于存储每一层的输出dt用于在性能分析模式下存储每一层的执行时间遍历模型的每一层如果当前层的输入不是来自上一层的输出如果m.f是整数则直接从y中获取对应的层输出作为输入。如果m.f是一个列表则根据列表中的索引从y中选择输入如果索引为-1则使用原始输入x是否开启性能分析模式try导入thop库用于计算浮点运算数(FLOPS)o使用thop.profile计算当前层m的FLOPS结果除以1E9转换为GigaFLOPS并乘以2。这里假设thop.profile返回的是一个元组其第一个元素是所需的FLOPS如果尝试执行失败则将oFLOPS设置为0t调用time_synchronized函数获取当前精确的时间循环10次为了稳定测量时间通过多次执行减少偶然误差调用time_synchronized函数计算执行当前层操作的总时间并将其添加到dt列表中打印当前层的FLOPS、参数数量、执行时间和层类型。为性能分析提供详细信息执行当前层的前向传播并更新x为该层的输出如果当前层的索引m.i在保存列表self.save中则将输出x保存到y列表中否则保存None. 这样做可以减少内存占用只保存那些后续步骤中需要的层的输出再次检查是否开启了性能分析模式。这个检查是为了在性能分析完成后打印总的执行时间如果开启了性能分析计算所有层执行时间的总和并打印。这提供了整个前向传播过程的总执行时间帮助了解模型的性能瓶颈返回最后一层的输出 14.4 _initialize_biases函数 def _initialize_biases(self, cfNone):m self.model[-1] # Detect() modulefor mi, s in zip(m.m, m.stride): # fromb mi.bias.data.view(m.na, -1).clone()obj_add math.log(8 / (640 / s) ** 2) # 计算obj层需要增加的值cls_add math.log(0.6 / (m.nc - 0.99)) if cf is None else torch.log(cf / cf.sum())b[:, 4] b[:, 4] obj_addb[:, 5:] b[:, 5:] cls_addmi.bias torch.nn.Parameter(b.view(-1), requires_gradTrue)初始化偏执的函数接受一个可选的参数这个参数用于根据数据集中各类别出现的频率来调整分类cls层的偏置m获取模型中的最后一个模块检测层Detect模块用于目标检测遍历检测层中的每个子模块mi及其对应的步长stride这里的步长是指输入图像被缩减的尺度对目标尺寸预测非常关键b获取子模块mi的偏置项并将其重塑reshape成(m.na, -1)的形状其中m.na是每个特征图位置预测的锚框数量。.clone()确保在修改b时不会影响原始的偏置值obj_add 计算对象obj层偏置需要增加的值。这个公式基于假设每640像素的图像中有8个对象并根据特征图的尺度通过步长s计算来调整。目的是调整检测层对于不同尺寸特征图上对象数量预测的偏置cls_add 计算分类cls层偏置需要增加的值。如果没有提供类频率cf为None则使用一个基于类数量m.nc的固定公式。如果提供了类频率那么使用类频率来计算每个类的偏置调整值以此反映数据集中类别的分布将计算出的对象层偏置调整值加到b的第4列上这是因为在目标检测中偏置项通常包括4个坐标偏置和一个对象存在的偏置后者位于第5个位置索引为4将计算出的分类层偏置调整值加到b的第5列及之后的所有列上对应于每个类别的偏置将调整后的偏置b重塑回原始形状并设置为mi的偏置确保这些偏置在训练过程中可以被进一步调整requires_gradTrue 14.5 其他辅助函数 def _print_biases(self):m self.model[-1] # Detect() modulefor mi in m.m: # fromb mi.bias.detach().view(m.na, -1).T # conv.bias(255) to (3,85)print((%6g Conv2d.bias: %10.3g * 6) % (mi.weight.shape[1], *b[:5].mean(1).tolist(), b[5:].mean()))获取模型的最后一个模块这里假设是一个目标检测模块Detect模块遍历检测模块中的每个子模块mi取得当前子模块mi的偏置通过.detach()确保不会影响梯度计算.view(m.na, -1)调整形状以匹配锚点数量m.na和偏置的其它维度最后进行转置以便于处理打印当前子模块卷积层的输入通道数和偏置的统计信息包括前五个偏置的平均值和之后所有偏置的平均值 fuse函数用于融合模型中的卷积层Conv2d和批归一化层BatchNorm2d def fuse(self): # fuse model Conv2d() BatchNorm2d() layersprint(Fusing layers... )for m in self.model.modules():if type(m) is Conv:m._non_persistent_buffers_set set() # pytorch 1.6.0 compatabilitym.conv fuse_conv_and_bn(m.conv, m.bn) # update convm.bn None # remove batchnormm.forward m.fuseforward # update forwardself.info()return self遍历模型中的所有模块检查当前模块是否为卷积层为了兼容PyTorch 1.6.0清空非持久性缓冲区集合使用fuse_conv_and_bn函数来融合当前卷积层和其后的批归一化层将批归一化层设为None表示移除批归一化层更新模块的前向传播函数为融合后的版本在完成融合后调用info方法打印模型信息返回更新后的模型实例 def info(self): # print model informationmodel_info(self)调用一个model_info函数传入当前模型实例用于收集和打印模型的详细信息如参数数量、层的类型等
http://www.dnsts.com.cn/news/262824.html

相关文章:

  • 东莞专业网站设计咨询设计网站大全免费
  • 对于新公司如何让其做网站推广做挂网站
  • ic手机网站开发平台中英文网站程序
  • 网站建设职员网站后台开发教程
  • 廊坊教育云网站建设iis7网站建设
  • 大庆市网站建设公司建设建网站
  • 网站后台网址在哪输入wordpress 插件语言包
  • 网站链接的基本形式互联网装饰网站
  • 建设行业信息和技术应用服务网站网页设计html代码大全超链接
  • 江苏省住房和建设厅网站唐山公司做网站
  • 网站被挂广告怎么办中企动力科技股份有限公司怎么样
  • 网站正在建设中色综合电商网站怎么做的
  • php网站建设视频教程建个网站的电话
  • 郑州做手机网站建设电子商务系统包括
  • 网站内部优化嘉陵区建设局网站
  • 企业网站建设要求怎么制作单页网站
  • 网站建设网页制作seo查询整站
  • 深圳 手机网站建设网站内容建设与管理
  • 网站建设开票项目是什么erp生产订单管理系统
  • 网站开发提问seo网站的锚文本怎么写
  • 纪检监察工作 网站建设wordpress 点击媒体库
  • 如何做图片网站网络营销方法和手段
  • asp网上书店网站开发怎么做关于梦想的网站免费的
  • 手机网站建设机构搜索优化公司
  • 嘉兴网站建设嘉兴店铺推广软文
  • 网站备案进度外链网站 英文
  • 有什么专门搜试卷做的网站个人网站做影视
  • 网站建设有模板自己能制作展览展示设计公司
  • 广州网站开发平台广东省建设信息港网站
  • 网站开发需求ppt店面怎么做位置定位