- 博客(100)
- 资源 (1)
- 收藏
- 关注
原创 Missing key(s) in state_dict | unexpected_keys | 模型加载 [torch.load] 报错【解决方案】
目录错误分析该报错快速直接解决方法错误分析代码块:model.load_state_dict(torch.load(checkpoint, map_location='cpu'))控制台报错提示:Unexpected key(s) in state_dict: “epoch”, “model”.或者是Unexpected key(s) in state_dict: “XXX”, “XXX”.该报错快速直接解决方法model.load_state_dict 时设置 strict=F
2022-04-14 14:43:04
2064
原创 明明安装成功了cv2(opencv-python)但是pycharm就是不识别?
今天在创建虚拟环境的时候,安装一个python包怎么也安装不上,困扰了我好久就是下面这个:Requirement already satisfied: opencv-python in d:\tools\anaconda3\lib\site-packages (4.5.3)我想安装opencv-python,怎么也安装不上,换源换环境也不行,原来是它默认路径已经不变了,不是在我现在的虚拟环境里,所以,需要指定路径pip install --target=/home/xxxx/anaconda3/e
2021-08-19 15:36:21
2331
原创 CVPR 2021 论文解读I 动态区域感知卷积,进一步提升分类/检测/分割性能|Dynamic Region-Aware Convolution
Dynamic Region-Aware Convolution摘要介绍方法实验结果总结论文单位:旷视研究院论文链接:https://arxiv.org/abs/2003.12243作者:Jin Chen, Xijun Wang, Zichao Guo, Xiangyu Zhang, Jian Sun摘要旷视研究院提出一种新颖的卷积方式,名为动态区域感知卷积(DRConv),它能为特征具有相似表示的相应空间区域自动地分配定制卷积核,相较标准卷积,这种卷积方式大大地增强了对图像语义多样性的建模能力
2021-08-01 11:09:39
1052
原创 cvpr2021|Rethinking BiSeNet For Real-time Semantic Segmentation
Paper: https://arxiv.org/abs/2104.13188Code: https://github.com/MichaelFan01/STDC-Seg目录介绍编码网络的设计Short-Term Dense Concatenate Module网络结构解码器的设计Segmentation ArchitectureDetail Guidance of Low-level FeaturesExperiment&ResultCityscapes介绍BiSeNet [28,27]已
2021-06-19 19:04:24
891
原创 空洞卷积(Dilated/Atrous Convolution)精华
空洞卷积:在3*3卷积核中间填充0,有两种实现方式,第一,卷积核填充0,第二,输入等间隔采样。空洞卷积有什么作用呢?扩大感受野在deep net中为了增加感受野且降低计算量,总要进行降采样(pooling或s2/conv),这样虽然可以增加感受野,但空间分辨率降低了。为了能不丢失分辨率,且仍然扩大感受野,可以使用空洞卷积。这在检测,分割任务中十分有用。一方面感受野大了可以检测分割大目标,另一方面分辨率高了可以精确定位目标。捕获多尺度上下文信息空洞卷积有一个参数可以设置dilation rate,具
2021-06-17 11:00:13
714
1
原创 Selective Kernel Networks|SKNet网络结构概要解读
目录摘要介绍结构Split.Fuse.Select.参数设计原则网络设计参数论文CodeSKNet出发点:构建一种模型,使网络可以根据输入信息的多个尺度自适应的调节接受域大小摘要我们在中枢神经系统中提出了一种动态选择机制,允许每个神经元基于多尺度的输入信息自适应地调整其感受野大小。设计了一种称为选择性核单元的构造块,其中使用由这些分支中的信息引导的softmax注意力来融合具有不同核大小的多个分支。对这些分支的不同关注在融合层产生不同大小的神经元有效感受野。多个存储单元堆叠成一个深度网络,称为选
2021-06-01 17:05:49
1252
2
转载 权重衰减(weight decay)与学习率衰减(learning rate decay)
1. 权重衰减(weight decay)L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化。1.1 L2正则化与权重衰减系数L2正则化就是在代价函数后面再加上一个正则化项:其中C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2 1/211经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2
2021-05-30 09:30:10
568
原创 Mini-batch 和batch的区别
深度学习的优化算法,就是梯度下降。每次的参数更新有两种方式。第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大,计算速度慢,不支持在线学习,这称为Batch gradient descent,批梯度下降。另一种,每看一个数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent。这个方法速度比较快,但是收敛性能不太好,可能在最优点附近晃来晃去,hi
2021-05-30 09:21:24
2550
原创 ResNeSt: Split-Attention Networks
摘要 尽管图像分类模型最近一直在继续发展,但是由于其简单且模块化的结构,大多数下游应用(例如目标检测和语义分段)仍将ResNet变体用作backbone。 我们提出了一个模块化的Split-Attention block,该block可实现跨feature map groups的attention。 通过以ResNet样式堆叠这些Split-Attention块,我们获得了一个称为ResNeSt的新ResNet变体。 我们的网络保留了完整的ResNet结构,可直接用于下游任务,而不会引起额外的计算..
2021-05-29 17:24:27
752
原创 CVPR 2021 | 即插即用! CA:新注意力机制,助力分类/检测/分割涨点!
摘要最近关于移动网络设计的研究已经证明了通道注意(例如,挤压和激发注意)对于提升模型性能的显著效果,但是它们通常忽略位置信息,而位置信息对于生成空间选择性注意图是重要的。本文提出了一种新的移动网络注意机制,将位置信息嵌入到信道注意中,我们称之为“协同注意”。与通过2D全局汇集将特征张量转换为单个特征向量的通道注意力不同,坐标注意力将通道注意力分解为两个1D特征编码过程,这两个过程分别沿两个空间方向聚集特征。以这种方式,可以沿着一个空间方向捕获长程相关性,同时可以沿着另一个空间方向保留精确的位置信息。然后
2021-05-27 14:33:11
4426
原创 pytorch载入预训练模型后,只想训练个别层怎么办?使用filter(lambda p: p.requires_grad, model.parameters())
有了已经训练好的模型参数,对这个模型的某些层做了改变,如何利用这些训练好的模型参数继续训练 def init_weights(self, pretrained='',): logger.info('=> init weights from normal distribution') for m in self.modules(): if isinstance(m, nn.Conv2d): nn.init
2021-05-23 20:36:28
3120
1
原创 论文解读|BMVC 2019|DABNet: Depth-wise Asymmetric Bottleneck for Real-time Semantic Segmentation
DABNet: Depth-wise Asymmetric Bottleneck for Real-time Semantic SegmentationPaper:DABNetGithub:Code摘要语义分割作为一项像素级的预测任务,需要巨大的计算量和参数才能获得高性能。最近,由于对自主系统和机器人的需求不断增加,在准确性和推理速度之间进行权衡是很重要的。本文提出了一种新颖的深度不对称瓶颈模块来解决这一难题,该模块有效地采用深度不对称卷积和扩张卷积来构建瓶颈结构。基于深度非对称瓶颈网络模块,
2021-05-19 15:42:05
872
1
原创 Docker 清理命令 删除所有的镜像和容器
杀死所有正在运行的容器docker kill $(docker ps -a -q)删除所有已经停止的容器docker rm $(docker ps -a -q)删除所有未打 dangling 标签的镜docker rmi $(docker images -q -f dangling=true)删除所有镜像docker rmi $(docker images -q)强制删除 无法删除的镜像docker rmi -f <IMAGE_ID>...
2021-05-11 16:47:37
164
原创 复现代码时的一些小细节:Python __all__变量用法/读取pytorch环境配置
Python __all__变量用法只有以“from 模块名 import *”形式导入的模块,当该模块设有 __all__ 变量时,只能导入该变量指定的成员,未指定的成员是无法导入的。举个例子,修改 demo.py 模块文件中的代码:def say(): print("人生苦短,我学Python!")def CLanguage(): print("C语言中文网:http://c.biancheng.net")def disPython(): print("Py
2021-05-07 22:02:12
351
原创 pytorch中model=model.to(device)用法
有一些论文公布的代码采用了model=model.to(device)这种模式按照我的理解,应该是和model.cuda()是一样的功能使用cpu运算:将torch.load()函数中的map_location参数设置为torch.device('cpu')device = torch.device('cpu')model = TheModelClass(*args, **kwargs)model.load_state_dict(torch.load(PATH, map_location=
2021-04-23 10:30:22
1459
原创 论文解读|2020TPAMI|Deep High-Resolution Representation Learning for Visual Recognition
用于视觉识别的深度高分辨率表征学习github:https://github.com/HRNet论文地址:https://arxiv.org/pdf/1908.07919摘要高分辨率表示对于位置敏感的视觉问题是必不可少的,例如人体姿态估计、语义分割和对象检测。现有的最先进的框架首先将输入图像编码为通过子网的低分辨率表示,该子网通过串联连接高到低分辨率卷积(例如,ResNet、VGGNet)而形成,然后从编码的低分辨率表示中恢复高分辨率表示。相反,我们提出的网络,命名为高分辨率网络(...
2021-04-23 10:03:59
3489
原创 简单通过dockerfile构建一个docker映像(举例)
在阅读GitHub上的很多开源代码的时候我们总是无法安装作者的环境,导致代码运行失败,这时我们可以通过作者在GitHub项目中提供的dockerfile来构建一个docker环境,这样就可以直接运行作者的项目了。下面是Hierarchical Multi-Scale Attention for Semantic Segmentation这篇语义分割网络提供的Dockerfile文件(想要自己构建,具体怎么构建文件,请自行百度)FROM nvcr.io/nvidia/pytorch:19.10.
2021-04-19 10:05:00
200
转载 Depthwise卷积+Pointwise卷积=Depthwise Separable Convolution
简单来讲,Depthwise卷积+Pointwise卷积=Depthwise Separable Convolution,效果一样,但是参数量不一样,可以应用于轻量级网络。Depthwise(DW)卷积与Pointwise(PW)卷积,合起来被称作Depthwise Separable Convolution(参见Google的Xception),该结构和常规卷积操作类似,可用来提取特征,但相比于常规卷积操作,其参数量和运算成本较低。所以在一些轻量级网络中会碰到这种结构如MobileNet。常规卷积
2021-04-15 09:45:31
273
原创 AverageMeter一个用来记录和更新变量的工具
AverageMeter可以记录当前的输出,累加到某个变量之中,然后根据需要可以打印出历史上的平均这个class是一种常用的工具该class内容如下class AverageMeter(object): def __init__(self): self.reset() def is_empty(self): return self.cnt == 0 def reset(self): self.avg = 0.
2021-04-14 19:37:00
614
原创 pytorch里如何使用logger保存训练参数日志?
如果是指保存训练过程中的loss,accuracy等metric的话,可以采用下面的方法:import loggingdef get_logger(filename, verbosity=1, name=None): level_dict = {0: logging.DEBUG, 1: logging.INFO, 2: logging.WARNING} formatter = logging.Formatter( "[%(asctime)s][%(filename
2021-04-14 19:35:19
14444
8
原创 CVPR2020|全文解读|Rethinking Bottleneck Structure for Efficient Mobile Network Design
PDF:https://arxiv.org/pdf/2007.02269.pdfPyTorch:https://github.com/shanglianlm0525/PyTorch-Networks全文简要分析简单来说就是把原来mobilev2中的bottleneck块倒置了一下,原来是在bottleneck之中经过升维后提取特征再降维,他们的工作就是在bottleneck之前先提取特征,之后进行先降维再升维,再次提取特征。主要是作者分析了MobileNetV2网络的bottle...
2021-04-14 15:28:09
1929
2
原创 模型融合方法:Voting/Averaging、Stacking、Boosting和Bagging。
一般来说,通过融合多个不同的模型,可能提升机器学习的性能,这一方法在各种机器学习比赛中广泛应用,比如在kaggle上的otto产品分类挑战赛①中取得冠军和亚军成绩的模型都是融合了1000+模型的“庞然大物”。常见的集成学习&模型融合方法包括:简单的Voting/Averaging(分别对于分类和回归问题)、Stacking、Boosting和Bagging。-->Voting/Averaging在不改变模型的情况下,直接对各个不同的模型预测的结...
2021-04-12 14:16:56
3582
原创 Pytorch的nn.Conv2d()参数详解
nn.Conv2d()的使用、形参与隐藏的权重参数 二维卷积应该是最常用的卷积方式了,在Pytorch的nn模块中,封装了nn.Conv2d()类作为二维卷积的实现。使用方法和普通的类一样,先实例化再使用。下面是一个只有一层二维卷积的神经网络,作为nn.Conv2d()方法的使用简介:class Net(nn.Module): def __init__(self): nn.Module.__init__(self) self.conv2d = nn..
2021-04-12 09:46:03
61766
2
转载 详解Ubuntu16.04安装Python3.7
Ubuntu16.04自带了Python2.7和Python3.5,现在最新版本的为Python3.7.1,Python可以多个版本共存,不影响。一、下载1、python去官网下载源码:https://www.python.org/downloads/release/python-371/上面两个都可以,我下的是第一个,下下来的文件是 Python-3.7.1.tgz二、安装python3.7补充知识:源码的安装一般由3个步骤组成:配置(configure)、编译...
2021-04-07 12:40:30
3069
1
转载 Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
一、研究背景语义分割方法采用了具有编解码结构的全卷积网络——FCN。上下文建模对于语义分割至关重要,通过更大的感受野学习更多的抽象/语义视觉概念。增大感受野最直接的方法是增加卷积网络的深度,但是事实表明,一旦达到一定的深度,增加更多层带来的收益逐渐降低。因此,上下文建模的接收域有限是普通FCN体系结构的一个内在限制。为突破该限制,逐渐提出了如下方法:方法一:直接操作卷积。这包括增大卷积核大小、无卷积和图像/特征金字塔。例如DeepLab引入扩张卷积等等…方法二:将注意力模块集成到FCN体
2021-04-06 21:13:22
340
原创 ubuntu下Docker完全卸载
删除Docker,及其安装时自动安装的所有包 sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc检查是否安装了dockerdpkg -l | grep docker卸载没有删除的docker相关插件(结合自己电脑的实际情况)sudo apt-get autoremove docker-ce-*删除docker的相关配置&目录sudo rm -rf /.
2021-04-06 10:13:33
389
转载 论文解读|ECCV 2020|Feature Pyramid Transformer(特征金字塔转换器)
论文信息一、特征金字塔在介绍这篇文章前,首先需要了解一下特征金字塔:这篇论文是CVPR2017年的文章,采用特征金字塔代替了传统的Scale handling 方法论文链接:https://arxiv.org/pdf/1612.03144.pdfhttps://blog.youkuaiyun.com/xiamentingtao/article/details/78598027https://github.com/kuangliu/pytorch-fpn深度卷积神经网络天然地就能计算出金字塔特征结
2021-03-31 16:27:35
1689
原创 backbone、head、neck等深度学习中的术语解释
我们在阅读文章的时候,经常看到backbone headneck 这一类的术语,但是我们可能并不知道是什么意思,这篇文章就是对这些术语进行解释:1.backbone:翻译为主干网络的意思,既然说是主干网络,就代表其是网络的一部分,那么是哪部分呢?翻译的很好,主干部分,哈哈哈哈,文字游戏了哈。这个主干网络大多时候指的是提取特征的网络,其作用就是提取图片中的信息,共后面的网络使用。这些网络经常使用的是resnet VGG等,而不是我们自己设计的网络,因为这些网络已经证明了在分类等问题上的特征提取能力是很..
2021-03-29 20:27:28
876
原创 python之parser.add_argument()用法——命令行选项、参数和子命令解析器
目录argparse介绍argparse使用——代码示例add_argument() 方法定义如何解析命令行参数action='store_true’的使用说明一个完整的模块展示argparse介绍argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口。通过在程序中定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数。argparse 模块还会自动生成帮.
2021-03-27 18:47:04
9598
2
原创 dataloader多线程使用OpenCV出现死锁如何解决
问题复现在使用Pytorch的dataloader时,有一个参数num_workers,设置这个参数为大于0的整数,可以开启多线程加载数据。多线程加载数据可以预先加载下几批数据进内存,目的是为了避免GPU运算完一个batch的数据后等待CPU计算浪费GPU算力。开启后GPU运算一批batch后会从内存中读取下一批已经完成预处理的数据,这样会使得GPU始终保持运算状态,加快整个训练的过程。但是实际上,如果预处理使用了OpenCV模块,由于OpenCV默认会开启多线程进行处理,在Python没有开启多线
2021-03-27 18:34:49
2310
原创 RunTime Error : cuda out of memory
cuda out of memory分为两种情况第一种 CUDA out of memory. Tried to allocate 16.00 MiB错误信息:CUDA out of memory. Tried to allocate 16.00 MiB (GPU 0; 7.93 GiB total capacity; 6.68 GiB already allocated; 18.06 MiB free; 41.28 MiB cached)原因:运行网络模型过程,占满了内存,引发中断
2021-03-27 17:43:03
1643
原创 TypeError: can‘t convert np.ndarray of type numpy.uint16.
报错代码为:label= torch.FloatTensor(label)报错TypeError: can't convert np.ndarray of type numpy.uint16. The only supported types are: float64, float32, float16, int64, int32, int16, int8, and uint8.解决方法:新加语句: label = label/1.0 lable = torch.Flo...
2021-03-27 14:45:11
3405
1
原创 ImportError: DLL load failed: 页面文件太小,无法完成操作。
python代码训练神经网络时,报错:“ImportError: DLL load failed: 页面文件太小,无法完成操作。”出现这个问题可能有两种情况。①不止在运行一个项目,另一个项目的python程序也在运行,关掉就可以了。②windows操作系统不支持python的多进程操作。而神经网络用到多进程的地方在数据集加载上,所以将DataLoader中的参数num_workers设置为0即可。 train_loader = torch.utils.data.DataLoader(...
2021-03-27 14:28:44
3398
原创 win 10+python3.6 安装NVIDIA apex及遇到的问题
按照以下步骤依次执行:github下载源码https://github.com/NVIDIA/apex下载到本地,如果下载不了可以克隆到码云仓库里,这样就可以高速下载了如何将github上项目使用码云下载cd apex //进入apex文件夹之中python setup.py install //安装即可遇到的问题:1.setuptools有ModuleNotFoundError→更新setuptoolspip install --upgrade setuptoo
2021-03-26 16:49:34
1623
原创 论文解析|Bottleneck Transformers for Visual Recognition
先回顾一下用于视觉识别的自注意力方法,比如SANet、ViT、DETR等:本文将介绍的是视觉Transformer的新backbone,之前有代表性的Transformer主干网络有: ViT:用Transformer完全替代CNN 媲美CNN!Facebook提出DeiT:高效图像Transformer,在ImageNet上达84.4%准确率! 现在有非常多的工作就是基于ViT魔改,Amusi 觉得本文分享的BoTNet 应该能助燃视觉Transformer ...
2021-03-26 10:00:38
2447
转载 论文解析|ICLR 2021|An Image Is Worth 16X16 Words: Transformers for Image Recognition at Scale
这里将介绍一篇我认为是比较新颖的一篇文章 ——《An Image Is Worth 16X16 Words: Transformers for Image Recognition at Scale》[1]。因为还是 ICLR 2021 under review,所以作者目前还是匿名的,但是看其实验用到的TPU,能够大概猜出应该是Google爸爸的文章(看着实验的配置,不得不感慨钞能力的力量)。1. Story近年来,Transformer已经成了NLP领域的标准配置,但是CV领域还是CNN(如Re.
2021-03-25 10:16:33
1597
原创 论文解析|CVPR2018|ERFNet: Efficient Residual Factorized ConvNet for Real-time Semantic Segmentation
论文原文:ERFNet: Efficient Residual Factorized ConvNet for Real-time Semantic Segmentationcode:PyTorch作者开源的代码只有训练部分没有测试部分~AbstractERFNet可以看作是对ResNet结构的又一改变,同时也是对ENet的改进。相对ENet,其网络结构的改进,一方面是将residual module改成non-bottleneck module,同时内部全部使用1D的cov(非对称卷积)。..
2021-03-17 20:02:41
896
1
原创 论文解读|IEEE|Real-Time High-Performance Semantic Image Segmentation of Urban Street Scenes
Real-Time High-Performance Semantic Image Segmentation of Urban Street Scenes发布:IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS原文:原文地址总结在本文中,提出了一种新的实时高性能语义分割方法,以实现在准确性和速度之间的平衡。该方法由四个主要部分组成:LBN-AA、DASPP、SPN和FFN。LBN-AA利用轻量化网络、卷积、卷积关注模块提取特征.
2021-03-16 16:58:52
489
原创 文献解读|CVPR2019|APCNet:Adaptive Pyramid Context Network for Semantic Segmentation
论文地址:APCNet:Adaptive Pyramid Context Network for Semantic Segmentation项目代码基于Pytorch,但尚未开源背景最近的研究表明结合上下文特征能够显著的提升深度语义分割模型性能。这些模型的差异仅仅在于在实际中它们构造上下文特征的方式不同。这篇文章首先介绍了语义分割任务中上下文特征的三个理想特性。作者发现尽管Global-guided Local Affinity(GLA)在构建上下文特征时起这重要作用,但是之前的研究者却往..
2021-03-11 15:56:05
403
原创 论文解读|CVPR 2020|无公式解读|Strip Pooling:Rethinking Spatial Pooling for Scene Parsing
Strip Pooling:Rethinking Spatial Pooling for Scene Parsing条状池化:重新思考场景解析的空间池Code:源码地址Paper:论文地址目录一、摘要二、介绍2.1 带状池化(Strip pooling)2.2本文贡献三、方法3.1 带状池化模块(Strip Pooling Module/SPM)3.2 混合池化模块(Mixed Pooling Module/MPM)3.3 SPNet整体架构四、实验结果4.1ADE20K数据集4.2 citysca
2021-03-08 17:25:24
941
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人