pytorch
文章平均质量分 71
pytorch的相关代码
景唯acr
细粒度分类,目标检测,pyqt5
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
YOLOv5检测界面-PyQt5实现
YOLOv5检测界面的简单实现原创 2021-09-27 14:30:40 · 61806 阅读 · 230 评论 -
特征图可视化(pytorch)
本篇博客的可视化是可视化网络的每层特征图,不是指类激活图(CAM)可视化,CAM可视化可以参考Grad-Cam实现流程(pytorch)这篇博客的目的仅是记录而已,由于距离上次使用过于久远,具体参考文章已经找不到.可视化效果如下图:浅层深层代码import torch.nn as nnimport numpy as npfrom PIL import Imageimport torchvision.transforms as transformsimport torchvision.原创 2021-02-18 00:47:28 · 9715 阅读 · 9 评论 -
pytorch加载nn.DataParallel训练的模型出现的问题
nn.DataParallel分布式训练后,如果直接使用torch.save(model.state_dict(), model_out_path)保存模型,等到再加载模型,可以将需要加载模型的网络也弄成分布式训练。分布式训练时,最好使用torch.save(model.module.state_dict(), model_out_path)保存模型,这样等到需要测试网络时,加载模型时用model.load_state_dict(torch.load(PATH, map_location=device))原创 2020-09-15 22:09:11 · 5318 阅读 · 3 评论 -
WSDAN 论文及代码解读
论文标题:See Better Before Looking Closer: Weakly Supervised Data AugmentationNetwork for Fine-Grained Visual Classification针对目标:细粒度图像分类下载地址:https://arxiv.org/pdf/1901.09891v2.pdf官方github地址: https://github.com/tau-yihouxiang/WS_DANpytorch复现版github地址:https.原创 2020-09-05 11:47:49 · 6027 阅读 · 16 评论 -
Grad-Cam实现流程(pytorch)
最近感觉类激活图可视化是一件很有趣的事情。CAM由于对网络结构有定性要求,所以在可视化一些有多个全连接层的网络时,表现不太友好,于是出现了Grad-CAM。算法思路引用的博主 G5Lorenzo 一句话Grad-CAM根据输出向量,进行backward,求取特征图的梯度,得到每个特征图上每个像素点对应的梯度,也就是特征图对应的梯度图,然后再对每个梯度图求平均,这个平均值就对应于每个特征图的权重,然后再将权重与特征图进行加权求和,最后经过relu激活函数就可以得到最终的类激活图实现过程先准备图原创 2020-06-01 17:15:56 · 38443 阅读 · 78 评论 -
特征图可视化为类激活图(CAM)--简化版
在图像分类领域的论文中,经常看到如下所示的可视化图片。将特征图的响应大小,映射到了原图,能让读者更直观的了解模型的效果。这类图,通常被称为类激活图(CAM, Class Activation Map),或者注意力图、热图。上一张图,是我使用训练好的细粒度分类模型(网络结构源于Mutual-Channel Loss )可视化的结果。用到的函数为:cv2.applyColorMap(),cv2.addWeighted()cv2.applyColorMap()函数的功能是将矩阵转化为伪彩色图(可以把伪彩色原创 2020-05-21 19:31:51 · 14703 阅读 · 8 评论 -
CAM实现的流程(pytorch)
之前写了一个简化版本的可视化过程,简化版的可视化没有考虑到通道之间的关系。流程图:算法思路:将要可视化的图片输进网络模型,判断出所属类别获取最后一个卷积层的输出特征图通过图片所属类别,得到权重,对获取的特征图的各个通道赋值,并且相加为单通道的特征图举个例子:如果输入一张图片,通过网络模型之后,判断这张图片为第500类(总共1000类)。特征图shape为(1,512,13,13),假设分类层为1 x 1卷积(这里就不算是最后一个卷积层,而是属于分类层)和全局平均池化组成。那么,1000个原创 2020-05-27 19:51:50 · 15762 阅读 · 31 评论 -
cross channel pooling 的原理与代码实现
普通的 pooling,是 channel 之间独立做的,只是在每个 feature map 空间维度上去做pooling,pool 完 channel 数是不会改变的。cross channel pooling,是在 channel 维度上去做,比如现在有 50 个 feature map,想通过 cross channel pooling 去得到5个feature map。做法就是把 50 个 feature map 分成 5 组,每组内的 10 个 feature map 在 channel 维度上原创 2020-05-12 11:52:45 · 3656 阅读 · 0 评论 -
pytorch中reshape()、view()、permute()、transpose()总结
1. reshape() 和 view()参考链接:PyTorch中view的用法pytorch中contiguous()功能相似,但是 view() 只能操作 tensor,reshape() 可以操作 tensor 和 ndarray。view() 只能用在 contiguous 的 variable 上。如果在 view 之前用了 transpose, permute 等,需要用 contiguous() 来返回一个 contiguous copy。 view() 操作后的 tensor 和原原创 2020-05-11 11:43:49 · 6857 阅读 · 0 评论 -
pytorch+resnet18实现长尾数据集分类
实验基于论文: Class-Balanced Loss Based on Effective Number of SamplesClass-balanced-loss代码地址:https://github.com/vandit15/Class-balanced-loss-pytorchresnet18代码参考链接:https://blog.youkuaiyun.com/sunqiande88/articl...原创 2020-05-03 23:29:02 · 3886 阅读 · 0 评论 -
Expected more than 1 value per channel when training, got input size torch.Size([1, 9, 1, 1])
ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 9, 1, 1])原代码:import torchimport torch.nn as nnmodel = nn.Sequential( nn.Conv2d(3, 9, 1, ...原创 2020-04-30 19:06:36 · 2309 阅读 · 2 评论 -
pytorch获取nn.Sequential的中间层输出
对于nn.Sequential结构,要想获取中间网络层输出,可以使用循环遍历的方式得到。示例import torchimport torch.nn as nnmodel = nn.Sequential( nn.Conv2d(3, 9, 1, 1, 0, bias=False), nn.BatchNorm2d(9), n...原创 2020-04-30 14:11:41 · 15998 阅读 · 10 评论 -
理解torch.gather
先上案例:>>> a = torch.Tensor([[1,2,3],[4,5,6]])>>> atensor([[1., 2., 3.], [4., 5., 6.]])>>> torch.gather(a,dim=0,torch.LongTensor([[0,1,0],[1,0,0]]))tensor([[1., 5...原创 2019-10-26 11:46:09 · 819 阅读 · 0 评论
分享