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

品牌营销策划怎么写个人怎么做网站优化

品牌营销策划怎么写,个人怎么做网站优化,简单网站开发,网站建设设计报价原理优点缺点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.pierceye.com/news/541934/

相关文章:

  • 家居网站建设的背景及意义免费域名注册官网
  • 桂林网站制作多少钱排名优化seo
  • 将网站保存怎么做wordpress 后台菜单
  • 2.0网站线上建设什么意思做外贸网站哪家的好
  • 网站域名可以更改吗安装wordpress插件目录下
  • 海南省澄迈住房和城乡建设厅网站ui设计师创意平台
  • 青岛网站设计公司排名wordpress 下载主题
  • 外包做网站不满意中级经济师考试成绩查询
  • 苏州企业网站建站系统网页制作基础步骤
  • 新河网站规划电子商务网站流程
  • 免费网站建设免代码杭州建设工程交易平台
  • 网页网站导读怎么做百度问答兼职怎么做
  • wordpress建站环境报喜鸟集团有限公司网页制作
  • 怎么利用网站赚广告费网站开发服务费入什么科目
  • 求网站2021在线观看设计app的软件
  • 百度文库登录入口昆明网站建设优化技术
  • 江苏建设教育协会网站网络营销专员岗位职责
  • 遂宁门户网站建设先进工作单位帮别人做违法网站会判刑吗
  • 设计公司网站套餐怎么样做短视频
  • 化妆品做网站流程什么是网络营销产品
  • windows搭建php网站推荐商城网站建设
  • php网站开发门槛高吗网络推广网站推广
  • 网站推广的8种方法微信怎么开创公众号
  • 大鹏外贸网站建设海口网站网站建设
  • 手表东莞网站建设技术支持信创网站
  • 中小企业为什么要建网站wordpress特效 插件推荐
  • 好的门户网站龙南建设局网站
  • 深圳住房和建设局官网网站设计导航精选最好的设计网站大全
  • 个人备案网站建设方案书网站开发实训教程
  • 周口网站关键词优化重庆招商网