
计算机视觉
blue_sky_wait_me
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Font t1-stixgeneral-i talic at 540 not found
latex中出现,Font t1-stixgeneral-i talic at 540 not found原创 2022-06-30 09:50:28 · 441 阅读 · 0 评论 -
Latex中表格内容对齐
latex表格内容对齐原创 2022-06-17 22:10:30 · 10028 阅读 · 0 评论 -
图像增强(对比度、亮度)
主要涉及Brightness/Contrast/Color调用流程为创建图像增强对象之后,调用对应的enhance函数from PIL import Image, ImageEnhanceimg = Image.open("test.jpg")bright_enhancer = ImageEnhance.Brightness(img)# 传入调整系数1.2bright_img = bright_enhancer.enhance(1.2)bright_img.show()contr转载 2022-05-19 09:22:26 · 536 阅读 · 0 评论 -
CUDA与cudatoolkit
CUDA Toolkit是NVIDIA的CUDA工具包,包含了CUDA的全部工具。conda安装的cudatoolkit是CUDA的一个子包,包含了主要的二进制文件。一般conda安装的pytorch tensorflow会直接调用conda环境中的包,而如果使用pip安装的tensorflow不会自动接入conda中的cudatoolkit,进而会报ImportError: libcudart.so.8.0: cannot open shared object file: No such..转载 2022-05-09 22:09:06 · 8035 阅读 · 0 评论 -
COCO Stuff
0: unlabeled1: person2: bicycle3: car4: motorcycle5: airplane6: bus7: train8: truck9: boat10: traffic light11: fire hydrant12: street sign Removed from COCO.13: stop sign14: parking meter15: bench16: bird17: cat18: dog19: horse2.原创 2022-04-25 16:17:24 · 855 阅读 · 0 评论 -
KeyError: ((1, 1), ‘<i8‘)
mode, rawmode = _fromarray_typemap[typekey]KeyError: ((1, 1), '<i8')将:img = Image.fromarray(out)改为:img = Image.fromarray(np.uint8(out))TypeError: Cannot handle this data type: (1, 1, 384), |u1维度错误,三维tensor使用squeeze()变为二维。...原创 2022-04-25 15:06:12 · 1307 阅读 · 0 评论 -
Latex中公式对齐
LATEX中公式对齐\usepackage{amsmath}示例:\begin{align}x+1 &= y+2 \&= z+3 \&= w+4\end{align}结果:每一个换行都对应着一个编号!最原始对齐操作:每一行都有一个编号改进1:如何一个编号都没有方法:直接在align*环境下即可示例:\begin{align*}同上\end{align*}结果:改进1:无编号改进2:如何在任意行加上编号方法:align环境下,每一行的\之前使转载 2022-01-24 17:45:28 · 1336 阅读 · 0 评论 -
介绍一款自动计算模型参数量、FLOPs、乘加数以及所需内存等数据的轮子
介绍一款自动计算模型参数量、FLOPs、乘加数以及所需内存等数据的轮子:torchstat。pip install torchstatIn [3]: import torch In [4]: from torchstat import stat In [5]: import torchvision.models as models In [6]: net = models.vgg11() In [7]: stat原创 2022-01-24 12:29:27 · 248 阅读 · 0 评论 -
RuntimeError: one of the variables needed for gradient computation has been modified by an inplace
将a=b改为a=b.clone()转载 2021-09-13 08:58:40 · 113 阅读 · 0 评论 -
获取中间某一层的特性
重写一个函数,将需要输出的层输出即可.def resnet_cifar(net,input_data): x = net.conv1(input_data) x = net.bn1(x) x = F.relu(x) x = net.layer1(x) x = net.layer2(x) x = net.layer3(x) x = net.layer4[0].conv1(x) #这样就提取了layer4第一块的第一个卷积层的输出 x=x.转载 2021-09-02 14:03:14 · 143 阅读 · 0 评论 -
Pytorch中实现只导入部分模型参数的方式
我们在做迁移学习,或者在分割,检测等任务想使用预训练好的模型,同时又有自己修改之后的结构,使得模型文件保存的参数,有一部分是不需要的(don't expected)。我们搭建的网络对保存文件来说,有一部分参数也是没有的(missed)。如果依旧使用torch.load(model.state_dict())的办法,就会出现 xxx expected,xxx missed类似的错误。那么在这种情况下,该如何导入模型呢?好在Pytorch中的模型参数使用字典保存的,键是参数的名称,值是参数的具体数值。我们使转载 2021-08-13 21:26:10 · 2860 阅读 · 3 评论 -
Variable、Tensor、Numpy的转换
Tensor与Numpy之间可以相互转换:代码:import torchimport numpy as npdata = np.array([[1,2,3,4,5],[6,7,8,9,10]])print(data)# numpy -> tensordata_tensor = torch.from_numpy(data)print(data_tensor)# tensor -> numpydata_numpy = data_tensor.numpy()print(da转载 2021-08-12 09:42:07 · 425 阅读 · 0 评论 -
pytorch 张量tensor 转为 jpg 图片
在用pytorch训练网络的时候,每一张图片都被转为了张量形式的数据,有时候我们需要将这些张量转为jpg格式的图片,应该如何转变呢?我们只要将张量tensor转为PIL格式的数据,然后再将数据保存起来就可以了,下面以一个简单的例子进行说明,这个例子中的图片是一个随机生成的图片。import torchfrom torchvision import transforms toPIL = transforms.ToPILImage() #这个函数可以将张量转为PIL图片,由小数转为0-255之间的像转载 2021-08-12 09:39:15 · 3345 阅读 · 0 评论 -
多GPU训练,加载模型时报错不匹配
一、问题描述多个GPU训练,保存时没有加module ,导致加载模型时报错。正确写法应该如下: # save model if num_gpu == 1: torch.save(model.state_dict(), os.path.join(opt.outf, 'model.pth')) else: torch.save(model.module.state_dict(), os.path.joi...原创 2021-08-02 09:00:50 · 1028 阅读 · 1 评论 -
scheduler:pytorch训练过程中自动调整learning rate
import torch.optim as optimoptimizer = optim.Adam(net.parameters(), lr=1e-3, betas=(0.9, 0.99))在使用PyTorch训练神经网络时,可能需要根据情况调整学习率(learning rate)这个在梯度下降中的重要参数。PyTorch提供了scheduler工具包帮助实现这一功能。1. 通过写明学习率关于迭代次数的表达式来指定(1)LambdaLR最原始也是最灵活的定义方式:CLASS to..转载 2021-07-24 10:35:57 · 7306 阅读 · 0 评论 -
Pytorch:lr_schedule的注意事项
在训练过程中我们一般会使用pytorch已有的学习率调整策略,如:import torchimport torch.optim as optimfrom torchvision.models.resnet import resnet50net = resnet50(num_classes=1000)optimizer = optim.Adam(net.parameters(), lr=1e-3)scheduler = optim.lr_scheduler.MultiStepLR(optimi转载 2021-07-24 10:25:18 · 1133 阅读 · 0 评论 -
pytorch中模型参数初始化
参数初始化(Weight Initialization)PyTorch 中参数的默认初始化在各个层的reset_parameters()方法中。例如:nn.Linear和nn.Conv2D,都是在 [-limit, limit] 之间的均匀分布(Uniform distribution),其中 limit 是1. / sqrt(fan_in),fan_in是指参数张量(tensor)的输入单元的数量下面是几种常见的初始化方式。Xavier InitializationXav...转载 2021-07-22 20:25:16 · 3442 阅读 · 0 评论 -
优化器(SGD、SGDM、Adagrad、RMSProp、Adam等)
1.1 SGDSGD全称Stochastic Gradient Descent,随机梯度下降,1847年提出。每次选择一个mini-batch,而不是全部样本,使用梯度下降来更新模型参数。它解决了随机小批量样本的问题,但仍然有自适应学习率、容易卡在梯度较小点等问题。1.2 SGDMSGDM即为SGD with momentum,它加入了动量机制,1986年提出。如上所示,当前动量V由上一次迭代动量,和当前梯度决定。第一次迭代时V0=0,由此可得到前三次迭代的动量由此可见t迭代的动量,.转载 2021-07-22 19:08:03 · 12913 阅读 · 0 评论 -
Pytorch中的SGDR
pytorch中既自带了学习率函数,我们也可以自定义学习率调整函数。调整函数通常随epoch的变化而变化。首先实现自定义学习率调整:自定义学习率调整以SGDR余弦学习率调整为例:论文地址:https://arxiv.org/abs/1608.03983在pytorch中的训练代码:# 第epoch值进行计算并更新学习率def adjust_lr(optimizer, epoch, T_0=10, eta_max=0.1, eta_min=0.): if T_mul == 2:转载 2021-07-22 17:30:22 · 503 阅读 · 0 评论 -
optimizer.step()和scheduler.step()的区别
optimizer.step()通常用在每个mini-batch之中,而scheduler.step()通常用在epoch里面,但是不绝对,可以根据具体的需求来做。只有用了optimizer.step(),模型才会更新,而scheduler.step()是对lr进行调整。通常我们有optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum = 0.9)scheduler = lr_scheduler.StepLR(optimizer,转载 2021-07-22 16:19:51 · 1468 阅读 · 0 评论 -
如何理解Adam算法(Adaptive moment estimation)?
作者:薰风初入弦链接:https://www.zhihu.com/question/323747423/answer/790457991来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章和论文看不懂,通常有三个原因:对前置知识掌握不佳 没有结合理论与实践 没有对知识形象理解Adam本质上实际是RMSProp+动量。但如果你对随机梯度下降SGD的知识,以及Adam之前的几个更新方法一无所知。那么当你看到一个“复杂的”Adam看了就头大(请不要嘲笑初学者,.转载 2021-07-22 14:34:56 · 4307 阅读 · 0 评论 -
python按设定比例划分训练集和测试集代码
# *_*coding: utf-8 *_*# Author --LiMing--import osimport randomimport shutilimport timedef copyFile(fileDir, class_name): image_list = os.listdir(fileDir) # 获取图片的原始路径 image_number = len(image_list) train_number = int(image_number * tr.转载 2021-07-21 16:51:54 · 1815 阅读 · 0 评论 -
python寻找列表最大值最小值及其下标
list1 = [-2,3,-5,7,8,9]print( "最大值是%d,下标是%d" % (max(list1),list1.index(max(list1))) )print( "最小值是%d,下标是%d" % (min(list1),list1.index(min(list1))) )#output:最大值是9,下标是5最小值是-5,下标是2转载 2021-07-14 15:26:01 · 7651 阅读 · 0 评论 -
匈牙利算法
今天我们来看一个没有前几篇讲的那么常用,但是很有用的算法:匈牙利算法(Hungarian algorithm)。匈牙利算法主要用于解决一些与二分图匹配有关的问题,所以我们先来了解一下二分图。二分图(Bipartite graph)是一类特殊的图,它可以被划分为两个部分,每个部分内的点互不相连。下图是典型的二分图。一张二分图可以看到,在上面的二分图中,每条边的端点都分别处于点集X和Y中。匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。这么说起来过于抽象了,我们现在从实际转载 2021-07-12 14:02:38 · 265 阅读 · 0 评论 -
Pytorch多GPU训练
Pytorch多GPU训练临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练原理多卡训练的基本过程首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batch数据也等分到不同的设备 最后将所有设备计算得到的梯度合并更新主设备上的模型参数代码实现(以Minist为例)#!/usr/bin/python3# coding: utf-8import torchfrom torchvision import datasets, transfor转载 2021-07-10 16:58:36 · 292 阅读 · 0 评论 -
CSPDarkNet
1 YOLOv4目标检测模型自从Redmon说他不在更新YOLO系列之后,我一度以为这么好用的框架就要慢慢淡入历史了,事实是我多虑了。YOLOv4在使用YOLO Loss的基础上,使用了新的backbone,并且集成了很多新的优化方法及模型策略,如Mosaic,PANet,CmBN,SAT训练,CIoU loss,Mish激活函数,label smoothing等等。可谓集SoAT之大成,也实现了很好的检测精度和速度。这篇博客主要讨论YOLOv4中的backbone——CSP-DarkNet,以及其实.转载 2021-07-07 15:43:37 · 8734 阅读 · 2 评论 -
backbone、head、neck等深度学习中的术语解释
我们在阅读文章的时候,经常看到backbone head neck 这一类的术语,但是我们可能并不知道是什么意思,这篇文章就是对这些术语进行解释:1.backbone:翻译为主干网络的意思,既然说是主干网络,就代表其是网络的一部分,那么是哪部分呢?翻译的很好,主干部分,哈哈哈哈,文字游戏了哈。这个主干网络大多时候指的是提取特征的网络,其作用就是提取图片中的信息,共后面的网络使用。这些网络经常使用的是resnet VGG等,而不是我们自己设计的网络,因为这些网络已经证明了在分类等问题上的特征提取能力是很.转载 2021-07-06 09:21:04 · 339 阅读 · 0 评论 -
forward理解
我们在使用Pytorch的时候,模型训练时,不需要调用forward这个函数,只需要在实例化一个对象中传入对应的参数就可以自动调用 forward 函数。 class Module(nn.Module): def __init__(self): super().__init__() # ...... def forward(self, x): # ...... return xdata = ...... # 输入转载 2021-06-13 11:27:33 · 2064 阅读 · 0 评论 -
训练网络报错device-side assert triggered
出现以下:Assertion 'indexValue>=0 && indexValue < src.sizes[dim]应该是分类数和路径所指向的类别数不匹配。原创 2021-06-09 20:41:38 · 328 阅读 · 0 评论 -
Python运行错误,raise notImplementedError
训练模型的时候,突然报这个错,raise notImplementedError我遇到的报错行是outputs = model(inputs)仔细检查一遍,感觉没错啊,后面才发现是forward多缩进了一格,def forward应该和super.__init__()在同一列上...原创 2021-06-01 11:21:22 · 859 阅读 · 1 评论 -
量化模型每一层的细节参数
之前按照以下方法成功得到了模型结构信息pythonparam = fluid.global_scope().find_var(param_name)if param is not None: param_in_numpy = np.array(param.get_tensor())那有没有方法可以得到每一层的参数值呢?(比如权重参数,量化参数的具体数值)从inference模型文件(model和params)可以安装netron后将__model__用其打开,可以看到模型的可视化转载 2021-05-31 14:53:39 · 342 阅读 · 0 评论 -
如何使用一行代码获取PyTorch模型的参数大小
一、前言为了获取到神经网络模型的feature map以及weight的大小,我尝试了很多方法,目前最方便的方法是用summary这个库(https://github.com/Pinging-ZJU/Pytorch-Memory-Utils),然而在我们的测试下发现这个库其实存在一些漏洞,使得对非线性网络的测量不准确(多测了很多层),于是我们对该库进行了修改,并添加了一些值方便用户阅读。二、使用方法1 直接在服务器上调用:pip3 install DNN_printer2 在代码中添加fro转载 2021-05-31 11:08:51 · 1330 阅读 · 1 评论 -
神经网络中_,predicted=中_,的作用
在神经网络训练中,经常会用到这样一段代码。_,predicted=torch.max(output.data,dim=1)其中_,是什么作用呢?output是通过神经网络最后一层softmax函数作用之后的输出。例如,假设我们在分类问题中共有4类,分别是0,1,2,3。假设output.data的第一行是[1,0,0,0]。(表明属于第一个类别0的概率是1)。那么,假设不加_,代码predicted=torch.max(output.data,dim=1)输出的则是 1。(其中1是转载 2021-05-30 13:46:36 · 790 阅读 · 0 评论 -
pil.unidentifiedimageerror: cannot identify image file
解决方法一:加try except,直接别管这个异常解决方法二:把import Image替换成from PIL import Image按方法一可能会在后面其他地方依旧报其他错。方法二呢,很多人都说有用,不过我这里还是不行。一般这种异常和找不到文件的异常是不一样的,这种情况是图片存在,但是由于某种原因打不开,可能是你复制图片的时候出了问题。解决方法三:找到这个图片,删除,然后把原图片重新复制到这个文件夹,就解决啦。(这个)...转载 2021-05-29 19:54:10 · 3067 阅读 · 0 评论 -
GoogLeNet
General Design Principles(来自GoogLeNet的实验结论)下面的准则来源于大量的实验,因此包含一定的推测,但实际证明基本都是有效的。1 . 避免表达瓶颈,特别是在网络靠前的地方。 信息流前向传播过程中显然不能经过高度压缩的层,即表达瓶颈。从input到output,feature map的宽和高基本都会逐渐变小,但是不能一下子就变得很小。比如你上来就来个kernel = 7, stride = 5 ,这样显然不合适。另外输出的维度channel,一般来说会逐渐增多(每层的转载 2021-05-24 16:11:51 · 99 阅读 · 0 评论 -
Large-Scale Object Detection in the Wild from Imbalanced Multi-Labels
paper:Large-Scale Object Detection in the Wild from Imbalanced Multi-Labels这篇文章用的数据集是谷歌发布的 Open image dataset,它包含1.7m image 共 12.4m 个boxes 有 500 个类别。它主要是机器打标,然后人力修改,所以单个框的质量不高。(最近已经有了open image v4,更多了)摘要:Open Image主要是半监督的标注,所以有很大的提升空间。(感觉这么大的数据集用不上,只转载 2021-05-18 17:08:35 · 573 阅读 · 0 评论 -
基于Attention-RPN和Multi-Relation Detector的少样本目标检测
基于Attention-RPN和Multi-Relation Detector的少样本目标检测腾讯优图cvpr2020最新少样本目标检测《Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector》论文解读论文链接:https://arxiv.org/abs/1908.01998少样本目标检测任务目的:给定support images,在query image找到所有与support images中种类相同..转载 2021-04-29 16:43:24 · 537 阅读 · 0 评论 -
YOLOv4训练自定义数据集
首先需要编译,cd到darknet-master目录下,make -j2需要改动的文件为darknet/src下的image.c文件找到draw_detections_v3函数,在第369行处:qsort(selected_detections, selected_detections_num, sizeof(*selected_detections), compare_by_probs); for (i = 0; i < selected_detections_num;...原创 2021-04-21 10:33:38 · 362 阅读 · 1 评论