- 博客(63)
- 收藏
- 关注
原创 Pytorch转TensorRT相关代码及其报错解决方法
目前将Pytorch转为TensorRT主要有两种途径。一种是将Pytorch先转为ONNX,然后再用TensorRT解析ONNX格式;另一种是将通过开源项目torch2trt将Pytorch直接转为TensorRT。这两种方式或多或少会遇到算子缺失问题,比如Pytorch转ONNX时ONNX不支持einsum(可用einops.rearrange代替)、(暂未找到好的替换算子,速度精度都会降)、(需要改成普通的nn.AvgPool2d(),对精度影响不会很大)这三个算子。
2023-09-19 11:26:04
823
原创 Pyramid Scene Parsing Network–CVPR,2017论文解读及其pytorch代码
现阶段随着数据集制作精细化、标签种类变多、具有语义相似标签等导致出现一些困难样本,使得经典的语义分割网络无法很好的处理(如FCN,作者认为FCN缺乏合适的策略去利用全局场景类别线索)这些困难样本。如下,作者挑选了ADE20K数据集中几个具有代表性的困难样本,第一行因为FCN没有正确捕获图像内容之间的关系,错误的将外形和汽车相似的游艇识别为汽车,要是能够正确识别出其在水面上就能够避免这种错误;第二行是因为FCN没有捕获类别之间的关系导致遇到相似的类别。
2023-09-14 17:17:36
427
原创 交叉熵、Focal Loss以及其Pytorch实现
这到底是怎么做到的呢?下调权重是一种技术,它可以减少容易的例子对损失函数的影响,从而使人们更加关注困难的例子。Focal Loss自然地解决了阶级不平衡的问题,(1因为来自多数类别的例子通常容易预测,而来自少数类别的例子由于缺乏数据或来自多数类别的例子在损失和梯度过程中占主导地位而难以预测。Focal loss关注的是模型出错的例子,而不是它可以自信地预测的例子,确保对困难的例子的预测随着时间的推移而改善,而不是对容易的例子变得过于自信。不同损失函数有着不同的约束作用,不同的数据对损失函数有着不同的影响。
2023-06-26 16:58:24
4045
原创 Context Prior for Scene Segmentation--CVPR, 2020
问题:现阶段,不少语义分割方法所限于卷积结构,忽略了同类型的上下文之间的关系,但同一类别的相关性(类内上下文)和不同类之间的差异(类间上下文)使得特征表示更加鲁棒并减少可能类别的搜索空间。目前主要有两种改进方式:1.Pyramidbased aggregation method. 这类方法重视类内关系、忽视了类间关系。从而在困难样本上效果较差。
2023-06-15 17:24:22
864
原创 熵、信息量、条件熵、联合熵、互信息简单介绍
近期在看对比学习论文,发现有不少方法使用了互信息这种方式进行约束,故在此整理一下网上关于互信息的相关内容。
2023-05-14 20:00:54
2919
原创 常见的上采样操作以及其Pytorch实现
而在实际生成的图像中,该部分却是由深深浅浅的近黑方块组成的,很像棋盘的网络。这个效应在深度卷积神经网络中的影响是很大的。就是在反卷积过程中,当卷积核大小不能被步长整除时,反卷积就会出现重叠问题,插零的时候,输出结果会出现一些数值效应,就像棋盘一样。并且,反卷积只能恢复尺寸,并不能恢复数值,因此经常用在神经网络中作为提供恢复的尺寸,具体的数值往往通过训练得到。普通的上采样采用的临近像素填充算法,主要考虑空间因素,没有考虑channel因素,上采样的特征图人为修改痕迹明显,图像分割与GAN生成图像中效果不好。
2023-04-17 17:23:27
3444
原创 Vision Transformers for Dense Prediction论文笔记
本篇论文主要提出一种网络,基于Transformer去进行密集预测。众所周知,对于密集预测任务,常见的网络架构为Encoder+Decoder结构。当Encoder提取的特征有损时,Decoder很难去进行恢复。但是目前常用的卷积网络架构常常使用下采样方式,**逐步增加感受野,将低级特征分组为抽象的高级特征,同时确保网络的内存和计算需求保持易于处理。**但是,下采样有一个明显的缺点,特征分辨率和粒度(我感觉这里的粒度像是细粒度特征)在模型的更深层特征丢失,在Decoder中难以恢复。
2023-04-14 09:29:56
2102
原创 MAE论文笔记+Pytroch实现
本篇论文提出了一个非对称自编码器架构(这里的非对称指的是Encoder和Decoder看到的东西即输入时不一样的),用来得到一个泛化能力比较强的特征提取器。进行自监督学习可以用来进行迁移学习。自编码器简单的说就是一个模型包含两个部分Encoder和Decoder,其中Encoder用来进行特征提取,Decoder用来进行还原图像。自编码器的任务是输入噪声或有损图片,输出重构好的图片,就是还原图片。通过训练,得到的特征提取器Encoder就有较强的特征提取能力,可以用来进行自监督学习。什么叫自监督学习呢?
2023-04-08 23:06:42
2376
4
原创 ViT笔记以及其Pytroch实现
目前在NLP领域,transformer已经占据主导地位。不少学者尝试将attention和CNN相结合,这些方法往往依赖于CNN,其性能相较于常见的卷积网络如ResNet等还是有差别。在NLP领域,使用transformer时,当不断增加模型大小和数据集数量,模型性能没有出现饱和趋势。同样的在CV领域,当数据量较小时,使用transformer有时并不比常见卷积性能好。但当数据集数量不断变大,transformer性能不断提高,甚至超过常见卷积模型。本片论文介绍的方法主要是用来进行分类的。
2023-04-06 10:33:15
848
原创 Pytroch数据集处理以及自定义数据集
transform首先,如果自定义transform就需要遵循一定的规则。仅接受一个参数,并返回一个参数。如果是多个图片需要同时处理,可以用字典传输实现需要在__call__中进行如下为参考代码。
2023-04-04 10:37:06
582
原创 服务器使用——解压常见文件tar、zip、rar等
加压后可以看到有一个rar.txt,里面有rar具体的使用方法。这篇关于zip博客写的挺全的,这里直接放。
2023-03-22 21:45:31
8013
原创 Rethinking Channel Dimensions for Efficient Model Design论文笔记
这里我认为是指的网络第一层的卷积层指的是模型训练中需要训练的参数总数,这里我们应该知道卷积网络中如果每一层的输出或输入通道数变多,相应的模型的参数总数也会变多。浮点数运算次数,理解为计算量,可以用来衡量算法的复杂度。一个乘法或一个加法都是一个FLOPs(注意:这里的S是大写)每秒浮点运算次数,理解为计算速度,是一个衡量硬件性能的指标。指的是输出通道数比上输入通道数。这是网络提出的一个结构。网络结构如下:这个和常见的残差模块不同地方在于中间层的通道数大于两侧的通道数,即中间宽两边窄。
2023-03-22 09:35:35
343
1
原创 Python类的继承
通常情况下当有了继承关系,子类在查找方法时,先从自己的本身类中寻找方法,如果找到了,就直接调用(如代码中的Bar类);也可以这样理解,当有了继承关系后,子类就直接把父类的方法复制下来了,子类可以重写父类的方法。但如果出现了找到的父类方法f2中调用了被子类重写的方法f1,这时是调用父类本身的方法f1还是子类的方法f1呢(有点绕,看下面的代码就容易理解了)。答案是调用子类重写的方法f1。其实比较有意思的是如果把父类中的方法f1注释掉,即下面代码中Foo类的f1函数注释掉,下面代码运行结果还是和未注释是一样的。
2023-03-16 22:02:31
9045
1
原创 MobileNetV2论文笔记以及Pytroch实现
这篇文章主要目的是提出一个轻量化模型,能够支持手机等算力较小的平台使用。作者提出了Manifold of interest这个名词来论述当特征维度较小时使用RELU函数进行激活会导致信息丢失。这里我引用一下Classification基础实验系列四——MobileNet v2论文笔记与复现对这个名词的解释。
2023-03-15 10:53:46
538
2
原创 多尺度分析
首先我们看一下上述图例中的a,也就是我们常用的卷积神经网络。随着网络越来越深,卷积网络提取到的特征语义越丰富,但是对于上图桌子上的鼠标,往往在对应于网络中的最后一个卷积网络层提取到的特征中的某一个数值(这样往往是不够的,一个数值表达的东西也太少了)。对于某些不太关注这些微小物体的任务而言,比如图像分类,标签只有电脑和椅子这些大物体。往往这样做对于网络性能影响不大。但是有不少像素级任务,比如语义分割需要给每一个像素进行分类,故这些微小物体便需要格外注意。为了提高对这些小物体的特征提取能力,一个简单的做法是,最
2023-03-07 15:06:44
506
1
原创 长尾分布论文笔记:BBN
1.网络结构图作者已经发现使用re-balancing方法可以提高模型性能,但是使用该方法会导致特征提取层模型性能下降。故作者想要结合这两个方法的优势,来进一步提高模型性能。作者的办法是使用一种累计学习策略,先学习通用模式,然后逐渐关注尾部数据。这里简单介绍一下这个网络的流程。首先通过两个部分共享的双分支网络,输入一个是具有长尾分布的数据集xcyc(x_c,y_c)xcyc,另一个是通过reverse操作后的数据集xryr(x_r,y_r)xryr。
2023-03-02 16:01:15
2288
2
原创 特征可视化技术t-SNE
python sklearn就可以直接使用T-SNE,调用即可。这里面TSNE自身参数网页中都有介绍。这里fit_trainsform(x)输入的x是numpy变量。pytroch中如果想要令特征可视化,需要转为numpy;此外,x的维度是二维的,第一个维度为例子数量,第二个维度为特征数量。比如上述代码中x就是4个例子,每个例子的特征维度为3。Pytroch中图像的特征往往大小是BXCXWXH的,可以flatten一下变成[B, CXWXH]。
2023-02-28 18:29:52
1555
原创 深度学习数据对模型的影响
尤其是当模型参数量很大,过于复杂时得到的性能比简单模型要差,这时候往往归结于模型的pipeline还是不够强大,却忽略了数据量的大小对模型性能的影响。如果使用带有长尾分布的数据集去直接训练分类网络的话,就会导致对于占比较大的类别能够较好的预测,占比较小的类别不能够较好的预测。从数据增强的使用频率来看,不难看出数据对于模型性能的重要性。数据增强简单的说就是基于现有的数据集,通过一些列变换产生不同的数据集以此来增强网络性能。就采用对齐混合图像的方式进行数据增强,如下,获得狗的形状,企鹅的纹理的数据。
2023-02-28 09:10:33
2673
1
原创 论文笔记:How transferable are features in deep neural networks? 2014年NIP文章
许多在自然图像上训练的深度神经网络都表现出一个奇怪的共同现象:在第一层,它们学习类似于Gabor过滤器和color blobs的特征。这样的第一层特征似乎并不特定于特定的数据集或任务,而是通用的(论文中简称general),因为它们适用于许多数据集和任务。而最后一层提取到的特征很大程度上取决于选定的数据集和任务(论文中简称specific)。从上述现象我们便可以假设有这个结论:一定有一个类似于阈值的层数,当少于这个层数便不受任务和数据影响,大于这个层数便受任务和数据影响。
2023-02-22 22:46:13
1136
1
原创 ResNet简单介绍+Pytroch代码实现
当网络层数越来越深时,模型性能不如层数相对较少的模型。这将不利于构建更深的模型。现阶段有采用BatchNorm层来缓解梯度消失或者爆炸,但效果并不明显。训练集上就出现了退化情况,故不是过拟合导致。按道理,给网络叠加更多层,浅层网络的解空间是包含在深层网络的解空间中的,深层网络的解空间至少存在不差于浅层网络的解,因为只需将增加的层变成恒等映射,其他层的权重原封不动copy浅层网络,就可以获得与浅层网络同样的性能。更好的解明明存在,为什么找不到?找到的反而是更差的解?
2023-02-02 17:26:32
974
原创 VScode+Latex (Recipe terminated with fatal error: spawn xelatex ENOENT)和latex简单使用介绍
接下来,网上说要改settings.json啥的,我没修改也能用。当然,如果想新建一个latex文档,可以右击新建一个文件,把文件名后缀改为。首先,你要本地安装好TeXLive,就是上面(一)要安装的。接着打开vscode,按照下图所示,找到LaTeX workshop这个插件进行安装。很好解决,大概率的原因是因为latex没有添加到系统环境变量中,所有设置的编译工具没有办法找到才出现的这种情况。好啦,接下来就可以使用啦,输入以下代码进行测试。好啦,接下来就可以使用啦,输入以下代码进行测试。
2023-02-02 15:59:01
19380
11
原创 自监督学习UNSUPERVISED REPRESENTATION LEARNING BY PREDICTING IMAGE ROTATIONS论文笔记
关于自监督部分内容参考Self-supervised Learning 再次入门和知乎微调大佬的回答什么是无监督学习。
2022-12-27 15:15:29
1816
1
原创 深度学习常见损失函数总结+Pytroch实现
均方差损失(MSE)也称为L2损失,其数学公式如下:JMSE=1N∑i=1N(yi−yi‘)J_{MSE}=\frac{1}{N}\sum_{i=1}^{N}{(y_i-y_i^{`})}JMSE=N1i=1∑N(yi−yi‘)在模型输出与真实值的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计本质上是一致的。至于啥模型输出与真实值的误差服从高斯分布,这个还真的难说,极大似然估计是概率论中用来近似计算真实分布中的参数的一种方法。Pytroch官方文档如下:官方文档介绍:size
2022-11-28 22:53:37
2128
原创 Pixel Difference Networks for Efficient Edge Detection论文笔记
的结果可以看出,如果只选择某一个卷积(PDC的三个卷积)放入Block_x_y中得到的结果并不是很理想,作者的解释是每一个stage中的第一个块中的PDC已经从原始图像中获得了很多梯度信息,滥用PDC甚至可能导致模型无法保留有用的信息。然而,一旦卷积核已经学习完毕,就可以根据所选像素对的位置,通过保存模型中和权重的差异,将PDC层转化为普通卷积。以这种方式,便可以在。现阶段,虽然使用CNN构建的网络可以获得和人类一样的边缘检测能力,但是基于CNN的边缘检测的高性能是通过大型预训练的CNN主干实现的,这既。
2022-11-23 11:05:29
1911
6
原创 蒸馏+Distilling Knowledge via Knowledge Review论文笔记
近期在阅读cvpr 2021的一篇关于蒸馏学习的论文,正好趁此机会梳理一下蒸馏学习的相关内容,方便下次再阅读蒸馏学习论文时查阅。一下内容关于蒸馏学习的均是网上优秀文章总结,论文阅读笔记是自己总结。网上找了一圈关于知识蒸馏的博客,发现绝大部分都是针对分类任务而言的,我觉得这样论述的话会给人一种错觉,知识蒸馏只适用于分类任务。故我准备参考综述论文《知识蒸馏研究综述》(计算机学报,黄震华,2022年3月)。
2022-11-19 19:18:07
2402
2
原创 预训练+微调+Rethinking ImageNet Pre-training论文阅读笔记
近期在阅读何凯明大神的Rethinking ImageNet Pre-training论文,论文中对比了深度学习提分小trick——pre-training和随机初始化之间对于任务性能的差别,实验证明预训练仅提高收敛速度但不能提高模型性能,同时预训练也不能防止过拟合。这就比较有意思了,正好我对预训练还有些不了解,正好趁着这个机会整理一下。
2022-11-17 11:14:50
1588
2
原创 常见的卷积、卷积变体以及其Pytroch实现
近期读论文时发现不少论文使用的卷积不局限于常见的2D卷积,有轻量化的深度可分离卷积、改变通道数目的1*1卷积等,还有不少作者自定义的卷积网络。为了方便后期阅读论文,在此总结一下常见的卷积以及其Pytroch实现。这篇文章是建立在以及了解常见的2D卷积的基础上进行的。
2022-11-14 10:45:07
2327
原创 高斯滤波器
图像噪声(image noise)是图像中一种亮度或颜色信息的随机变化(被拍摄物体本身并没有),通常是电子噪声的表现。它一般是由扫描仪或数码相机的传感器和电路产生的,也可能是受胶片颗粒或者理想光电探测器中不可避免的的散粒噪声影响产生的。图像噪声是图像拍摄过程中不希望存在的副产品,给图像带来了错误和额外的信息。图像噪声的强度范围可以从具有良好光照条件的数字图片中难以察觉的微小的噪点,到光学天文学或射电天文学中几乎满画幅的噪声,在这种情况下(图像中的噪声水平过高,以至于无法确定其中的目标是什么),只能通过非常
2022-11-04 20:54:07
4276
原创 论文笔记:Multi-scale Matching Networks for Semantic Correspondence
举一个计算对应关系的例子,图片A、B的特征图为FA、FB,大小均为(h,w),那么对应的4D correlation map大小为(h,w,h,w),任取图片A上一点a,对应的特征图FA上的点为Fa,那么Fa一个点便和FB一张图进行对应,利用一定的规则如点与点之间的距离作为衡量标准,那么取FB上距离Fa距离最小点Fb变为Fa的对应点。然后,根据ANC - Net,我们选择它的四个最近邻,并根据距离设置它们的概率,以建立每个尺度上的二维真值匹配概率。关于细节和公式论文中说的很细,这里不再介绍。
2022-10-28 11:22:44
873
2
原创 数据增强:AlignMixup: Improving Representations By Interpolating Aligned Features阅读笔记
故需要进行两幅或者多幅图像的融合,当仅使用mix进行混合时仅仅只是图片简单的堆叠且得到的图片很不自然,如果采用随机混合会导致模型学习到不相关的特征(因为label也随之变化,由于混合是随机的便会导致得到的label可能不包含我们所需要的特征,训练时用label进行约束便会导致学习到不相关的特征)。下图算法讲的便是实验采用的算法,实验主要针对的是单个输入,这就导致不好使用对齐混合,作者在这里才用的是对于单个图片或者特征随机打乱其通道位置,这样便得到了多个输入。源码中也没有看到clean模式的使用。
2022-10-12 20:34:46
1927
1
原创 pytroch冻结某些层的常用方法
有两个网络串联训练(model、model1),现在想固定住model的网络参数,网络训练过程中只更新model1的权重。其中model为仅包含两个卷积层的网络,model1为仅包含一个全连接层的简单网络。
2022-10-06 19:12:46
4476
原创 Registration based Few-Shot Anomaly Detection阅读笔记
本文考虑了少镜头异常检测(FSAD),这是一种实用但研究不足的异常检测(AD)设置,其中在训练时仅为每个类别提供有限数量的正常图像。到目前为止,现有的FSAD研究遵循用于标准AD的每类学习范式的一个模型,并且尚未探索类别间的共性。受人类如何检测异常(即将有问题的图像与正常图像进行比较)的启发,我们在这里利用配准,这是一种在类别间具有普遍性的图像对齐任务,作为代理任务,来训练一种类别无关的异常检测模型。在测试过程中,通过比较测试图像及其相应支持(正常)图像的注册特征来识别异常。
2022-09-23 22:19:19
2653
3
原创 单应性矩阵+Spatial Transformer Networks论文阅读笔记
个人觉得有一个理论很有信服力,感受野大家应该都知道,就是池化层具有空间不变性的原因是如果图片的空间变化发生在池化层的对应的感受野中,那么便具有空间不变性,如果超出了,那么池化层便不能保持模型的空间不变性。个人理解STN的主要目的是因为虽然池化层具有一定的空间不变性,但是由于上述原因,不变性并不是很强,故作者在此提出了一种可以学习的轻量化的模型结构STN,该模块的参数可学习,可以进行BP,同时能够提升模型性能。从上图可以看出仿射变换除了平移变换,其它的均可以只和x、y有关,而平移变换和x、y无关。
2022-09-22 15:16:46
1231
1
原创 对象级变化检测论文阅读笔记
变化检测是通过观察和识别不同时期的物体或现象的状态来检测差异的过程。变化检测的目标是确定感兴趣的特定语义类别的变化信息,同时滤除无关变化信息的干扰。变化检测往往输入的是两幅不同时间配准后的图像对。变化检测关心的目标是感兴趣的特定语义类别的变化信息,不是两幅图片中只要有变化就要把变化的东西找出来。因为,两幅图像可能因为拍摄时间、角度、传感器等问题会产生噪声,光影变化等这些伪变化,同时有些变化是不感兴趣的变化。例如,在许多情况下,从不同季节获得双时间图像,如下图所示。
2022-09-19 14:11:29
3087
8
原创 PR(Pull Request)简单介绍以及git的相关使用
PR(Pull Request):简单的说就是人A觉得另一个人B的仓库写的代码有问题或者可以修改提高啥的,但A不能直接去直接修改仓库的的源码(万一A写错了,源码没有备份不久完犊子了),所以A先复制一份(fork操作)B仓库中的源码,之后clone下来在A的本地修改,修改完后commit提交Pull Request给B(Pull Request上要写明修改了啥啥啥的,让B明白A要干啥)。B看到A提供的PR后发现A是对的便采纳了A的代码(merge)。
2022-09-09 16:31:27
4442
原创 变化检测DASNet论文介绍
DASNet: Dual Attentive Fully Convolutional Siamese Networks for Change Detection in High-Resolution Satellite Images论文介绍
2022-09-01 20:21:24
6335
1
原创 SNUNet-CD: A Densely Connected Siamese Network for Change Detection of VHR Images论文介绍
该论文受DenseNet and NestedUNet启发,设计了一个类似于DenseNet的结构。因为在利用神经网络提取图片特征时,往往提取到的高阶特征有着较为丰富的语义信息,但是提取高阶特征往往伴随着下采样(尺寸缩小)导致位置信息丢失或者误差较大,简单的上采样方式无法恢复位置信息,而浅层特征往往能够保留较为精准的位置信息。......
2022-08-31 17:33:36
2070
1
原创 python之面向对象编程
面向对象程序设计面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、特性、代码与方法。对象则指的是类(class)的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。从维基百科的定义可以看出,面向对象编程的对象。
2022-08-23 19:16:06
1647
原创 Attention is all you need:Attention机制
最近在阅读论文发现有很多论文用到了Attention机制,一直对Attention机制的原理不大清楚,在此总结一下网上查到的好资料。我主要关注Attention机制在图像处理领域的应用,但Attention机制最初在NLP领域中提出,故在此介绍一下NLP中的Attention机制。...
2022-08-11 16:29:43
586
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人