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

上海网页建站模板江西省城乡建设厅网站查询证件

上海网页建站模板,江西省城乡建设厅网站查询证件,网页设计软件dw全称,网站建设客户分析调查表文档原理优点缺点GAP将多维特征映射降维为一个固定长度的特征向量①减少了模型的参数量#xff1b;②保留更多的空间位置信息#xff1b;③可并行计算#xff0c;计算效率高#xff1b;④具有一定程度的不变性①可能导致信息的损失#xff1b;②忽略不同尺度的空间信息CAM利用…原理优点缺点GAP将多维特征映射降维为一个固定长度的特征向量①减少了模型的参数量②保留更多的空间位置信息③可并行计算计算效率高④具有一定程度的不变性①可能导致信息的损失②忽略不同尺度的空间信息CAM利用最后一个卷积层的特征图×权重用GAP代替全连接层重新训练经过GAP分类后概率最大的神经元的权重效果已经很不错需要修改原模型的结构导致需要重新训练该模型大大限制了使用场景如果模型已经上线了或着训练的成本非常高我们几乎是不可能为了它重新训练的。Grad-CAM最后一个卷积层的特征图×权重通过对特征图梯度的全局平均来计算权重①解决了CAM的缺点适用于任何卷积神经网络②利用特征图的梯度可视化结果更准确和精细Grad-CAM1. 定位更准确 2. 更适合同类多目标的情况 GAP全局平均池化 论文Network In Network GAP (Global Average Pooling全局平均池化)在上述论文中提出用于避免全连接层的过拟合问题。全局平均池化就是对整个特征映射应用平均池化。 图1将原本h × w × d的三维特征图具体大小为6 × 6 × 3经过GAP池化为1 × 1 × 3 输出值。也就是每一个channel的h × w 平均池化为一个值。特征图经过 GAP 处理后每一个特征图包含了不同类别的信息。  GAP平均池化的操作步骤如下 经过卷积操作和激活函数后得到最后一个卷积层的特征图。对每个通道的特征图进行平均池化即计算每个通道上所有元素的平均值。这将每个通道的特征图转化为一个标量值。将每个通道的标量值组合成一个特征向量。这些标量值的顺序与通道的顺序相同。最终得到的特征向量可以作为分类器的输入用于进行图像分类。 CAM 论文Learning Deep Features for Discriminative Localization 原理利用最后一个卷积层的特征图与经过GAP分类后概率最大的神经元权重进行叠加。 图2解释了在CNN中使用全局平均池化GAP生成类激活映射CAM的过程 经过最后一层卷积操作之后得到的特征图包含多个channel如图1中的不同颜色的3个channel也就是在GAP之前所对应的不同的channel特征图就表示第k个channel的特征图。然后经过GAP处理后每个channel的特征图包含了不同类别的信息就表示分类概率最大的神经元图2黑色神经元所对应连接的第k个神经元的权重。 Grad-CAM  Grad-CAM的前身是 CAMCAM 的基本的思想是求分类网络某一类别得分对高维特征图 (卷积层的输出) 的偏导数从而可以得到该高维特征图每个通道对该类别得分的权值而高维特征图的激活信息 (正值) 又代表了卷积神经网络的所感兴趣的信息加权后使用热力图呈现得到 CAM。 原理Grad-CAM的关键思想是将输出类别的梯度相对于特定卷积层的输出与该层的输出相乘然后取平均得到一个“粗糙”的热力图。这个热力图可以被放大并叠加到原始图像上以显示模型在分类时最关注的区域。 具体步骤如下 选择网络的最后一个卷积层因为它既包含了高级特征也保留了空间信息。前向传播图像到网络得到你想解释的类别的得分。计算此得分相对于我们选择的卷积层输出的梯度。对于该卷积层的每个通道使用上述梯度的全局平均值对该通道进行加权。结果是一个与卷积层的空间维度相同的加权热力图。 因为热力图关心的是对分类有正面影响的特征所以在线性组合的技术上加上了ReLU以移除负值 。 第 k 个特征图对应于类别 c 的权重表示第 k 个特征图表示特征图的像素个数表示: 第c类得分的梯度表示: 第 k个特征图中坐标( i , j )位置处的像素值 Grad-CAM代码 import torch import cv2 import torch.nn.functional as F import torchvision.transforms as transforms import matplotlib.pyplot as plt from PIL import Imageclass GradCAM:def __init__(self, model, target_layer):self.model model # 要进行Grad-CAM处理的模型self.target_layer target_layer # 要进行特征可视化的目标层self.feature_maps None # 存储特征图self.gradients None # 存储梯度# 为目标层添加钩子以保存输出和梯度target_layer.register_forward_hook(self.save_feature_maps)target_layer.register_backward_hook(self.save_gradients)def save_feature_maps(self, module, input, output):保存特征图self.feature_maps output.detach()def save_gradients(self, module, grad_input, grad_output):保存梯度self.gradients grad_output[0].detach()def generate_cam(self, image, class_idxNone):生成CAM热力图# 将模型设置为评估模式self.model.eval()# 正向传播output self.model(image)if class_idx is None:class_idx torch.argmax(output).item()# 清空所有梯度self.model.zero_grad()# 对目标类进行反向传播one_hot torch.zeros((1, output.size()[-1]), dtypetorch.float32)one_hot[0][class_idx] 1output.backward(gradientone_hot.cuda(), retain_graphTrue)# 获取平均梯度和特征图pooled_gradients torch.mean(self.gradients, dim[0, 2, 3])activation self.feature_maps.squeeze(0)for i in range(activation.size(0)):activation[i, :, :] * pooled_gradients[i]# 创建热力图heatmap torch.mean(activation, dim0).squeeze().cpu().numpy()heatmap np.maximum(heatmap, 0)heatmap / torch.max(heatmap)heatmap cv2.resize(heatmap, (image.size(3), image.size(2)))heatmap np.uint8(255 * heatmap)heatmap cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)# 将热力图叠加到原始图像上original_image self.unprocess_image(image.squeeze().cpu().numpy())superimposed_img heatmap * 0.4 original_imagesuperimposed_img np.clip(superimposed_img, 0, 255).astype(np.uint8)return heatmap, superimposed_imgdef unprocess_image(self, image):反预处理图像将其转回原始图像mean np.array([0.485, 0.456, 0.406])std np.array([0.229, 0.224, 0.225])image (((image.transpose(1, 2, 0) * std) mean) * 255).astype(np.uint8)return imagedef visualize_gradcam(model, input_image_path, target_layer):可视化Grad-CAM热力图# 加载图像img Image.open(input_image_path)preprocess transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])])input_tensor preprocess(img).unsqueeze(0).cuda()# 创建GradCAMgradcam GradCAM(model, target_layer)heatmap, result gradcam.generate_cam(input_tensor)# 显示图像和热力图plt.figure(figsize(10,10))plt.subplot(1,2,1)plt.imshow(heatmap)plt.title(热力图)plt.axis(off)plt.subplot(1,2,2)plt.imshow(result)plt.title(叠加后的图像)plt.axis(off)plt.show()# 以下是示例代码显示如何使用上述代码。 # 首先你需要加载你的模型和权重。 # model resnet20() # model.load_state_dict(torch.load(path_to_your_weights.pth)) # model.to(cuda)# 然后调用visualize_gradcam函数来查看结果。 # visualize_gradcam(model, path_to_your_input_image.jpg, model.layer3[-1]) Grad-CAM
http://www.zqtcl.cn/news/704647/

相关文章:

  • 南充网站制作不会做网站能做网络销售吗
  • 这2个代码 找做网站的 安装一下搜索引擎排行榜
  • 百度收录收费 重大网站网络空间设计说明怎么写
  • 网站开发 php模板图书馆网站建设的项目报告
  • 保定模板建站定制网站wordpress 收集
  • 万网 网站模板软件开发三个主要阶段
  • 网站首页psd格式怎么做seo关键词有哪些类型
  • 做部队网站技术vue做购物网站
  • 品牌网站建设服务机构wordpress英文改中文
  • 系统开发费外链优化方法
  • 网站建设公司起名网站构建的友情链接怎么做
  • 网站建设湖南wordpress 缓存时间
  • 木藕设计网站大全福州网络营销推广产品优化
  • 建设银行网上官方网站怎么批量修改wordpress文章内容
  • 多肉建设网站的目的及功能定位app网站开发成本
  • 如何保存网站上的图片不显示图片报纸网站建设
  • 网站营销的流程品牌推广方式有哪些
  • 网站开发的条件美术字设计
  • 网站可以自己做服务器么wordpress架站教程
  • 用ps怎么做网站导航条怎么做部署iis网站
  • 酒店 网站构建怎么创建自己的网址
  • 江苏推广网站建设业务个人工作室网站源码带后台
  • 色一把做最好的网站赤峰微信网站建设
  • 指定网站长期建设 运营计划网站淘宝客 没备案怎么做
  • 绵阳网站推广排名知名商业网站有哪些
  • 简要描述创建商务站点的商务天津建设工程合同备案网站
  • 做展示空间设计的网站wordpress调用作品分类
  • 网站怎么做访问量统计百度百科怎么创建自己
  • 泉州开发网站的公司有哪些网站页面相似度查询工具
  • 卖文章的网站源码咸阳做网站的公司电话