- 博客(33)
- 收藏
- 关注
原创 代码7
class RectScale(object)利用双线性插值法将图像调整到规定尺寸、class RandomSizedRectCrop(object)随机尺寸的矩形裁剪再利用双线性插值法将图像调整到规定尺寸、class RandomErasing(object)随机擦除class WarmupMultiStepLR(torch.optim.lr_scheduler._LRScheduler)根据step的学习率调整transforms_list训练数据集的transform、test_transf.
2020-09-30 10:46:50 166
原创 ROI pooling 和ROI Align有什么区别?
量化(quatization)是指将输入从连续值(或大量可能的离散取值)采样为有限多个离散值的过程。也可以理解为,将输入数据集(如实数)约束到离散集(如整数)的过程。ROI Pooling:RoI Align 在 Mask RCNN 中被首次提出。取每个子区域的中点.双线性插值(bilinear interpolation),又称为双线性内插。其核心思想是在两个方向分别进行一次线性插值。在图像处理中,双线性插值法考虑围绕未知像素的计算位置的 最近邻域的已知像素。然后对这4个像素进行加权平均,以得出其最
2020-09-30 09:38:39 223
原创 代码6
import settings #读取配置.os.environ获得有关系统的一些信息。from torch.utils.tensorboard import SummaryWriter #完成可视化。logger日志记录工具。 self.feature_generator = nn.DataParallel(self.feature_generator, device_ids=range(settings.num_gpu))。train_params = []。for key, value in opt_
2020-09-29 21:10:36 156
原创 Bi-directional Exponential Angular Triplet Loss for RGB-Infrared Person Re-Identification
大概流程是RGB图像经过CNN+BN+权重共享的FC进行ID损失。IR图像经过CNN+BN+权重共享的FC进行ID损失。算法流程:代码:
2020-09-29 15:25:00 280
原创 yolov3的一些认识
下采样,步长为2的卷积;上采样,步长为2的卷积;1313、2626、5252,一个尺度具有三个先验框(对真值框就行K-means聚类所得),比如在1313的特征图上网络输出13133*(4+1+80)。在检测阶段,使用IOU的阈值将小于阈值的边界框删除,然后使用非极大值抑制(找出检测分数最高的边界框,然后将与该边界框IOU大于阈值的删除),重复多次非极大值抑制直到检测出所有的物体)。损失函数是背景+类别+边界框。...
2020-09-29 13:32:48 128
原创 代码5
sys.path.append()sys.path 返回的是一个列表,会搜索当前目录、已安装的内置模块和第三方模块。当我们要添加自己的搜索目录时,可以通过列表的append()方法;对于模块和自己写的脚本不在同一个目录下,在脚本开头加sys.path.append(‘xxx’)。那么cuDNN使用的非确定性算法就会自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题,一般来讲,应该遵循以下准则:如果网络的输入数据维度或类型上变化不大,设置 torch.backends.cudnn.bench.
2020-09-29 12:28:06 117
原创 代码3
import h5py #h5py.file 类似词典import numpy as npfrom torch.utils.data import Datasetclass TrainDataset(Dataset):def init(self, h5_file):super(TrainDataset, self).init()self.h5_file = h5_file #文件def __getitem__(self, idx): with h5py.File(self.h5_fil
2020-09-27 14:22:43 242
原创 torch.函数
torch.numel(张量)-张量的元素个数torch.set_printoptions()-设置打印选项torch.eye()-单位矩阵torch.from_numpy()-numpy转变为tensortorch.linspace(start, end, steps=100, out=None)torch.logspace(start, end, steps=100, out=None)torch.ones(*sizes, out=None)-全为1torch.rand(*sizes, o
2020-09-26 16:08:56 776
原创 代码2
利用debug这个工具来分析程序的动态行为。使用pdb进行调试if name == ‘main’:trainloader, testloader, classes = prepare_MNIST()data_iter = iter(trainloader)imgs, labels = data_iter.next()imshow(torchvision.utils.make_grid(imgs, nrow=16))print(" “.join(”%5s" % classes[labels[j
2020-09-26 13:01:19 105
原创 2020-09-26
SyntaxError: invalid character in identifier将括号和单引号改成英文状态下的ImportError: cannot import name ‘cmc’ from ‘reid.evaluation_metrics’ 路径没问题的,一般就是你的各个文件夹之间的导包出现了死锁现象。只在两个文件之间的死锁,建议是把要导入的函数或者模块写进第三个文件中。from reid.evaluation_metrics.ranking import cmc, mean_apfro
2020-09-26 10:09:13 107
原创 服务器
download_path = 'E:\跨模态数据集\Market-1501-v15.09.15’要写自已的地址,运行一下。如果利用Xshell 6 和xftp 6 在服务器上运行程序,首先 nvidia-smi 查看GPU的使用情况,然后 conda info --envs 查看环境,然后进行环境激活 source activate 环境名 ,然后进入project下如 cd Person_reID_baseline_pytorch-master,然后运行Person_reID_baseline_py
2020-09-25 10:08:53 83
原创 Faster RCNN的一些小了解
图片,CNN,特征图,RPN,两个分类器。RPN:33的卷积核,然后一个像素对应9个先验框(3个尺度、3个比例),然后ROI池化(比如一个区域建议得到四个元素的特征向量,一个区域建议分成四大块,一大块中的最大值),特征向量输入两个分类器,一个是回归框损失一个是类别损失。比如一个256256的图片,到16*16的特征图,然后再一个值对应九个先验框。在后向传播时根据标签调准预测。...
2020-09-24 20:33:20 101
原创 Learning Deep Features for Discriminative Localization论文解读
CAM(有识别力的图像区域)for task.
2020-09-24 10:40:01 83
原创 python的一些小知识
%5s 输出的字符串至少5个字符%.5s 输出的字符串最多5个字符glob类似于Windows下的文件搜索,glob.glob获取所有匹配的文件的路径。glob.iglob一次只获取一个匹配文件的路径。glob.glob(r’E:\pic**.jpg’) 获得指定目录下的所有jpg文件DataFrame是pands库的一种数据结构,是一种二维表。DataFrame可以设置列名columns与行名index。几种创建形式:df1=pd.DataFrame(np.random.ra
2020-09-22 20:40:40 93
原创 pytorch的STN(空间变换网络)
STN可以直接插入现有的CNN中。Localisation Network:一CNN生成变换参数。Grid Genator:生成与输出图像的每个像素相对应的坐标网络。Sampler:输出结果#定义一个stn网络:本地网络(卷积池化relu卷积池化relu)Linear relu Linear得到3 * 2的仿射矩阵#grid = F.affine_grid(theta, x.size())这个函数得到grid ,x = F.grid_sample(x, grid)得到stn的输出利用stn将t
2020-09-22 20:17:41 1572
原创 Pytorch微调和各层定制学习率
保存预训练的模型参数:torch.save(net.state_dict(), ‘net_params.pkl’)加载模型:pretrained_dict = torch.load(‘net_params.pkl’)初始化:net = Net() # 创建netnet_state_dict = net.state_dict() # 获取已创建net的state_dict接着将pretrained_dict里不属于net_state_dict的键剔除掉:pretrained_dict_1 =
2020-09-22 16:11:41 381
原创 pytorch的一些小知识
transforms.Normalize()函数,这里是以通道为单位进行计算均值,标准差。transforms.Compose函数组装时要注意顺序,比如随机剪裁,Totensor,数据标准化。随机长宽比裁剪:transforms.RandomResizedCrop上下左右中心裁剪:transforms.FiveCrop上下左右中心裁剪后翻转,transforms.TenCrop翻转Flip,旋转rotation。转为tensor,并归一化至[0-1]:transforms.ToTensor修改
2020-09-22 15:53:19 53
原创 西瓜书上的一些小知识
关键词:留出法(hold-out)。怎么将给定的数据集划分为训练集和测试集呢?常用的方法在这里有介绍。首先介绍的是留出法,其实这种方法在国内教材和论文中最常见,就是把数据集D划分为两个互斥的集合,其中一个是训练集,一个是测试集。书中给出的参考划分比例是,训练集66.6%~80%。关键词:交叉验证法(cross validation)。交叉验证法是竞赛中或者比较正式的实验中用得比较多。什么是交叉验证呢? 其实就是将数据集D划分为k个大小相同的互斥的子集,然后用k-1个子集作为训练,剩下那一个子集作为测试。这
2020-09-22 15:01:55 58
原创 贝叶斯公式
统计学对于不确定性(概率)有贝叶斯学派和频率学派,频率学派认为概率是事件在长时间内发生的频率,是固定的。贝叶斯学派认为概率是我们对一件事情发生的信心,是会随着新的信息发生变化的。先验(prior)概率:根据以往经验分析得到的概率;后验(posterior)概率:得到“结果“的信息后重新修正的概率。(得到“结果”的信息对应获得新的信息,对原来的先验概率重新修正的概率就是后验概率。)贝叶斯公式等于先验概率*修正因子=后验概率。举个例子,有四道单选题,答案是ABCD的分布,第四题等于D的先验概率是0.2,修正因子
2020-09-22 14:30:21 286
原创 python的一些知识
.ndim是维度.shape是各维度的尺度.size是元素的个数.dtype是元素的类型.itemsize是各元素的大小ndarray是数组的创建np.arange(n):0——n-1np.ones(shape)np.zeros(shape)np.full(shape)np.eye(n)生成单位矩阵np.linspace(1,10,4) 1,3.25,5.5,7.75np.linspace(1,10,4,endpoint=True) 10作为生成的元素,1,4,7,10np.co
2020-09-22 10:13:01 119
原创 pytorch,学习率设置
学习率net = resnet50.Resnet().cuda()criterion = nn.CrossEntropyLoss()optimizer = optim.Adam(net.parameters(),lr=0.001)checkpoint = torch.load(PATH)#参数是路径net.load_state_dict(checkpoint[‘model_state_dict’])#参数是字典,netoptimizer.load_state_dict(checkpoint[‘o
2020-09-21 20:12:17 563
原创 pytorch初始化
输出权重值:def print_weight(m):if isinstance(m, nn.Linear):print(“weight”, m.weight.data)print(“bias:”, m.bias.data)print(“next…”)def print_weight(m):if isinstance(m, nn.Conv2d):print(“weight”, m.weight.data)print(“bias:”, m.bias)print(“next…”)model.
2020-09-21 17:12:47 733
原创 pytorch的数据集处理
transforms.ToTensor(), # 数据集加载时,默认的图片格式是 numpy,所以通过 transforms 转换成 Tensor,图像范围[0, 255] -> [0.0,1.0]trainset = torchvision.datasets.CIFAR10trainloader = torch.utils.data.DataLoadertrainset加载所有的图片,trainloader是一个迭代器,for i,data in enumerate(trainloader.
2020-09-21 15:46:07 591
原创 自定义模块
模块是.py,包是含有.py加__init__.py。当一个模块要调用该工程里的其他模块和包时,需要sys.path.append(‘E://pytorch/调用’)也就是该模块的目录。然后就是from 包import 模块或者from包.包import模块。
2020-09-21 14:40:14 32
原创 CAM
深度可分离卷积:普通卷积是33128,得到HW;深度可分离卷积是128个33的卷积核,得到HW128。函数1:33、groups=in_channels;11卷积。函数2:3*3卷积。函数3:blocks个函数1。类MobleNetV1和类的实例化,net = MobleNetV1(1000)。for name,layer in net.named_children():if name != “fc”:x = layer(x)print(name, ‘output shape:’, x.sh
2020-09-21 09:35:13 92
原创 inception模块
11卷积的输出concat11卷积再33卷积的输出concat11卷积再55卷积的输出concat最大池化再11卷积的输出。class Inception(nn.Module):def init(self,in_c,c1,c2,c3,c4):super(Inception,self).init()self.p1 = nn.Sequential(nn.Conv2d(in_c,c1,kernel_size=1),nn.ReLU())self.p2 = nn.Sequential(nn.Conv
2020-09-18 19:23:22 142
原创 resnet 50
注意点提示:一个板块进行了三次卷积,is_1x1conv=False 是捷径是否需要调整维度,利用for循环多次重复使用模块,有的3*3的卷积核步长为2将特征图大小变为一半,Layers = [3, 4, 6, 3]。filter1, filter2, filter3 = filters。def ResNet50(num_classes=10):return ResNet(Bottleneck, [3,4,6,3], num_classes)class Bottleneck(nn.Module):e
2020-09-18 19:16:48 117
原创 Devil’s in the Detail: Graph-based Key-point Alignment and Embedding for Person Re-ID
Devil’s in the Detail: Graph-based Key-point Alignment and Embedding forPerson Re-ID论文解读:解决的问题是对齐问题,如图:新颖点:条件特征嵌入(从特征图通道的角度来说,query图像的特征图基于gallery图像动态地调整)框架图:流程:首先:baseline提取特征图,特征图经过GAP、11卷积、一个全连接层softmax激活,交叉熵约束。其次:对应注意力模块进行关键点对齐,HWC的矩阵,对角参数矩阵(通道权
2020-09-18 18:06:51 221
原创 如何安装CPU版本的pytorch
如何安装CPU版本的pytorch:首先,利用清华镜像下载anaconda,注意:尽量不要复制下载的anaconda.其次在pycharm官网上下载pycharm,安装专业版,利用jetbrains-agent压缩文件和安装参数进行破解,然后利用anaconda prompt 找到python的目录,为pycharm安装python解释器。最后配置清华镜像:(1)先在base环境执行命令:conda config --set show_channel_urls yes(2)执行完上一条的命令后会在C:\u
2020-09-18 17:24:56 2906 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人