计算机视觉
文章平均质量分 76
计算机视觉领域的一些论文和代码分享
蓝鲸鱼BlueWhale
香港中文大学计算机视觉方向博士在读
展开
-
Kaiming He论文阅读笔记三——Simple Siamese Representation Learning
预测MLP头h对一个视图的输出进行转换,并与另一个视图进行匹配,该模型使两边的余弦相似度最大化。如MoCo就是一种Siamese网络中,MoCo维护一个负样本队列,并将其中一个分支变为动量编码器,以提高队列的一致性。SimSiam直接共享两个分支之间的权值,所以它也可以被认为是“没有负对的SimCLR”。)是应用于两个或多个输入的权重共享神经网络,它使用相同的权重,同时在两个不同的输入向量上协同工作以计算可比较的输出向量。通常其中一个输出向量是预先计算的,从而形成一个基线,与另一个输出向量进行比较。...原创 2022-08-05 19:42:25 · 881 阅读 · 1 评论 -
Kaiming He论文阅读笔记二——Plain Vision Transformer Backbones for Object Detection
而与典型的ConvNets不同,原始的ViT是一个普通的、非层次结构的架构,它在整个过程中维护一个单尺度的特征图。在分层骨干中,上采样通常借助于侧连接;在普通的ViT主干中,作者根据经验发现这是没有必要的,简单的反卷积就足够了。在作者设计的结构中,只使用来自backbone的最后一个特征映射,它应该具有最强的特性。具体来说,使用默认的规模为1/16(步幅=16)的ViT特征映射,我们使用步幅{2,1,1/2,1/4}的卷积产生了规模{1/32,1/16,1/8,1/4}的特征映射,其中步幅分数表示反卷积。.原创 2022-08-05 16:55:32 · 1087 阅读 · 0 评论 -
Kaiming He 论文阅读笔记一——Masked Autoencoders
第二个亮点是使用了非对称的encoder-decoder结构,encoder仅输入可见的图像子集(不输入masked token),配备一个轻量级的decoder,decoder的输入仍然保持全部图像。如图所示为Masked Autoencoder的结构,建立在BEIT的基础上,BEIT通过将输入图像分割为Patch,mask其中部分子图像之后,线性链接并将得到的token输入给encoder(vision transformer)。实验表明更大的mask比可以取得更好的效果。...原创 2022-08-05 14:44:57 · 1061 阅读 · 0 评论 -
Transformer+异常检测论文解读
OODformer: Out-Of-Distribution Detection Transformer是2021年12月发表在CVPR上的一篇比较新的OOD的论文。顾名思义,OODformer使用Transformer做异常检测。算法流程图如下:OODformer是一种比较简单的算法,和之前的SSD、CSI等OOD方法的思路接近。OOD的主要步骤都如下:介绍三篇One-CLass+Transformer的算法,采用的基本结构都是encoder-decoder的经典无监督异常检测方法。AnoViT: Un原创 2022-06-05 10:27:24 · 5868 阅读 · 2 评论 -
自编码器(Auto-encoder)的概念和应用
文章目录1. 基本概念2. 应用2.1 de-noising auto-encoder2.2 feature disentangle2.3 discrete representation2.4 text as representation2.5 Tree as representation2.6 generator2.7 compression2.8 anomaly detection1. 基本概念Auto-encoder包含一个encoder和一个decoder,encoder将原始图片转化为一个低维原创 2022-05-06 21:37:44 · 3087 阅读 · 0 评论 -
Transformer综述
文章目录1 encoder2 decoder2.1 masked self-attention2.2 cross attention3. TrainingTransformer由一个encoder和一个decoder组成。1 encoder对于通常的seq2seq的结构,每一个encoder内部,由若干个block组成,每一个block包含一个self-attention的结构和fc层。对于transformer:首先将每一个Block增加了residual的结构,即将输入和输出加在一起作为原创 2022-05-05 20:57:21 · 880 阅读 · 0 评论 -
什么是自注意力机制(Self-attention)
RNN网络的的输入是一个定长的向量。例如,分类网络的输入图片大小是固定的。当网络的输入变为变长的向量时,RNN网络就不再适用了,自注意力机制(Self-attention)可以解决这一问题,通过“动态”地生成不同连接地权重。如下图所示,自注意力机制的输入为长度为NNN(NNN可变化)的向量,输出同样为长度为NNN的向量。1. 自注意力机制的计算自注意力机制根据各个输入向量的关联输出,使得每个输出向量包含输入向量的上下文关系。首先需要计算两个输入向量的关联α\alphaα。如下图所示为Dot-pr原创 2022-05-05 14:26:28 · 12223 阅读 · 0 评论 -
什么是终身学习(Life Long Learning / Continuous Learning / Never Ending Learning / Incremental Learning)
文章目录1. 概念区分1.1 Life Long v.s. Multi task1.2 Life Long v.s. Transfer2. 终身学习2.1 Selective Synaptic Plasticity2.2 Gradient Episodic Memory (GEM)2.3 Progressive Neural Networks2.4 PackNet2.1.5 Compacting, Picking, and Growing(CPG)2.1.6 Generating Data2.1.7 不同架原创 2022-05-03 19:50:19 · 7116 阅读 · 0 评论 -
什么是元学习 (Meta Learning)
目录元学习(Meta Learning)元学习介绍元学习目的元学习流程元学习(Meta Learning)元学习介绍元学习希望使得模型获取调整超参数的能力,使其可以在获取已有知识的基础上快速学习新的任务。元学习目的元学习和机器学习的区别在于:机器学习是先人为调参,之后直接训练特定任务下深度模型。元学习则是先通过其它的任务训练出一个较好的超参数,然后再对特定任务进行训练。这些超参数可以是初始化参数、选择优化器、定义损失函数、梯度下降更新参数等。元学习流程在机器学习中,训练单位是样本数据,通原创 2022-05-02 14:33:31 · 14425 阅读 · 4 评论 -
Anomaly Detection 异常检测之 CSI:Contrasting shifted instances论文解读
1. 背景异常检测目标给定数据集{xm}m=1M\{x_m\}^M_{m=1}{xm}m=1M,分布外(OOD)检测的目标是对{xm}\{x_m\}{xm}上的检测器建模,识别x为分布内(ID)或者分布外(OOD)数据。对比学习对比学习的思想是学习编码器fθf_θfθ,以提取必要的信息,将相似样本与其他样本区分开来。设xxx为查询,x+{x_+}x+与x−{x_−}x− 分别为一组正样本和负样本。对比损失的原始形式定义如下: 其中∣x+∣|{x_+}|∣x+∣表示集合{x+}的势,z原创 2022-04-29 17:59:59 · 757 阅读 · 0 评论 -
Anomaly Detection 异常检测之 Self-Supervised Outlier Detection 论文解读
1. 异常检测背景介绍符号说明XXX:输入空间YYY:标签空间PX×YinP^{in}_{X×Y}PX×Yin:分布内(in-distribution,ID) 数据(没有数据标签时:PXinP^{in}_{X}PXin)PXoodP^{ood}_{X}PXood:分布外(out-of-distribution,OoD) 数据fff:特征提取器X→ZX→ ZX→Z、 其中Z⊂RdZ⊂ R^dZ⊂Rd(有监督学习中:g◦f:X→Rcg◦ f:X→ R^cg◦f:X→Rc)问题表述分布外(O原创 2022-04-29 00:05:07 · 738 阅读 · 0 评论 -
主动学习与自监督学习结合的方法(Active Learning+Self-Supervision)
本文介绍两篇最新的结合自监督学习和主动学习的方法。1. PALPAL : Pretext-based Active Learning(发表于CVPR2021,论文,代码)中提出了一种基于池的主动学习方法,该方法依靠自我监督学习来减少对潜在错误标记数据的依赖,对训练数据的部分错误标记具有鲁棒性,但是对正确标记的数据的提升效果一般。PAL的算法流程如下。可以看到在原本的分类网络训练SCS_CSC的迭代,增加了对自监督的训练SSS_SSS。2. PT4ALUsing Self-Supervised原创 2022-03-20 20:17:37 · 3278 阅读 · 3 评论 -
主动学习(Active Learning,AL)综述
目录1. 基本概念2. 基于不确定性的主动学习方法3.基于最近邻和支持向量的分类器的方法3.1 NNClassifier3.2 RBF network + Gradient Penalty4 基于特征空间覆盖的方法5 基于对抗学习的方法5.1 VAAL5.1.1 核心思想5.1.2 网络结构5.1.3 主动学习策略5.1.4 模型特点5.2 SRAAL5.3 ARAL6 融合不确定性和多样性的学习方法6.1 信息论思路6.2 构建候选集+大差异样本——SA6.3 梯度嵌入空间——badge7 基于变化最大的原创 2022-03-20 13:04:31 · 7822 阅读 · 1 评论 -
Out of Distribution(OoD)检测相关方法综述
1. Softmax-based 方法这类方法利用预训练模型输出的最大 softmax 概率进行统计分析,统计发现 OOD 样本和 ID 样本 softmax 概率的分布情况,试图将二者的分布差距加大,然后选取合适的阈值来判断一个样本属于 OOD 还是 ID。这类方法简单且有效,不用修改分类模型的结构,也不需要训练一个 OOD 样本分类器。SMOOD提出分类正确的样本会得到更大的maximum softmax概率, 通过预测样本的softmax概率可以有效的检测出 OOD 样本。ODIN提出使用tem原创 2022-03-17 21:28:57 · 5948 阅读 · 2 评论 -
Out-of-Distribution Detection开篇之作SMOOD论文阅读
目录1 AUROC和AUPR2 Softmax3 辅助分类器4 小结所谓异常检测,就是发现与大部分对象不同的对象,即离群点。异常检测以训练集为核心,判断输入数据是否与训练集中的数据类似。异常检测的论文集合可以参考这里。本文要介绍的论文为A baseline for detecting misclassified and out-of-distribution examples in neural networks(原文地址, 翻译地址)是OoD(Out-of-Distribution Detection原创 2022-03-17 15:22:46 · 4797 阅读 · 0 评论 -
GAN综述及其在图像生成领域的应用(含原理、代码详解)
首先我们用一句话来概括下原始GAN。原始GAN由两个有机中整体构成——生成器 [公式] 和判别器 [公式] ,生成器的目的就是将随机输入的高斯噪声映射成图像(“假图”),判别器则是判断输入图像是否来自生成器的概率,即判断输入图像是否为假图的概率。GAN的训练也与CNN大不相同,CNN是定义好特定的损失函数,然后利用梯度下降及其改进算法进行优化参数,尽可能用局部最优解去逼近全局最优解。但是GAN的训练是个动态的过程,是生成器 [公式] 与判别器 [公式] 两者之间的相互博弈过程。通俗点讲,GAN的目的就..原创 2022-03-02 14:52:10 · 14308 阅读 · 1 评论 -
分类常用数据集的mean和std值及计算方法
计算数据集mean和std值的方法with open(os.path.join(path,'train.txt'), 'r') as f: lines = f.readlines() for line in lines: index += 1 a = os.path.join(line) num_imgs += 1 img = cv2.imread(a[:-1]) img = np.asarray(img)原创 2022-02-25 11:39:56 · 6091 阅读 · 1 评论 -
Transformer论文解读五(Swin Transformer)
本文中要介绍的Swin Transformer全名为Swin Transformer: Hierarchical Vision Transformer using Shifted Windows,是2021年微软研究院发表在ICCV上的一篇文章,在多项视觉任务中展现出优异性能。1. 改进相比于Vision Transformer(讲解),Swin Transformer做出了几点改进:层次化构建方法:使用了类似卷积神经网络中的层次化构建方法(Hierarchical feature maps),比如原创 2021-11-30 22:43:59 · 5660 阅读 · 0 评论 -
Imagenet与MiniImageNet数据集使用
ImageNet是图像分类领域常用的数据集。MiniImageNet是ImageNet的简化版数据集,新的方法可以在MiniImageNet上测试运行。1. 下载地址ImageNet约100GB可以从官网下载,MiniImageNet约3GB,下载地址,密码: hl31。2. 原始ImageNet数据集使用原始的ImageNet数据集时,调用torchvision.datasets.DatasetFolder类即可,使用方法如下:def load_dataset(args): # Data原创 2021-11-15 14:09:32 · 6891 阅读 · 0 评论 -
蒸馏论文十(Structured Knowledge Distillation for Dense Prediction)
在本文中,我们将介绍知识蒸馏论文Structured Knowledge Distillation for Dense Prediction。在论文中,考虑到稠密预测是一个结构化预测问题,本文提出将结构化知识从教师网络提取到学生网络。具体来说,我们研究了两种结构化蒸馏方案:成对蒸馏,通过建立静态图来提取成对相似点运用对抗性训练来提炼整体知识的整体提炼法。...原创 2021-11-09 22:00:49 · 1249 阅读 · 0 评论 -
蒸馏论文九(Knowledge Adaptation for Efficient Semantic Segmentation)
本文介绍语义分割蒸馏论文:Knowledge Adaptation for Efficient Semantic Segmentation。在论文中,作者提出了一种新的面向语义分割的知识提取方法,如下图所示:整个框架中,教师网络输出分辨率较大的特征(如8s),学生网络输出较小的特征(如16s总步幅)。知识的定义分为两部分:第一部分将知识从教师网络转化为信息丰富的压缩空间。通过训练自编码器将知识压缩成一个紧凑的格式,使学生网络更容易学习,否则由于固有结构的差异就会困难得多。第二部分旨在从教师网络中原创 2021-11-08 20:02:11 · 444 阅读 · 0 评论 -
参数重组在语义分割中的应用
参数重组是一种最近比较火的设计网络的思想,即利用网络的重参数化,把多层合成一层,进行网络加速。在我之前写的一些参数重组的博客中(链接),介绍了RepVGG、ACNet、DBB等设计于分类网络的替代卷积核。容易想到,如果使用类似的结构,将原本的普通卷积替换为空洞卷积,是否就能将参数重组应用于语义分割呢?于是,我对各个替代卷积核对语义分割经典网络中的卷积核进行了替换,在文末附完整代码。以PSPNet为例,替换卷积后的RepPSP如下:import mathimport torchimport torc原创 2021-11-03 12:57:34 · 645 阅读 · 0 评论 -
Transformer代表论文详解
最近Transformer在CV领域很火,Transformer是2017年Google发表的Attention Is All You Need中主要是针对自然语言处理领域提出的,后被拓展到各个领域。本系列文章介绍Transformer及其在各种领域引申出的应用。1. TransformerAttention Is All You Need论文详解2. Vision TransformerAn Image Is Worth 16x16 Words: Transformers For Image R原创 2021-11-01 17:26:51 · 690 阅读 · 0 评论 -
Transformer论文解读四(SegFormer)
最近Transformer在CV领域很火,Transformer是2017年Google发表的Attention Is All You Need中主要是针对自然语言处理领域提出的,后被拓展到各个领域。本系列文章介绍Transformer及其在各种领域引申出的应用。本文介绍的SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers将Transformer应用于语义分割。SegFormer是一个将tr原创 2021-11-01 17:19:00 · 6142 阅读 · 6 评论 -
Transformer论文解读三(distillation token)
最近Transformer在CV领域很火,Transformer是2017年Google发表的Attention Is All You Need中主要是针对自然语言处理领域提出的,后被拓展到各个领域。本系列文章介绍Transformer及其在各种领域引申出的应用。本文介绍的Training data-efficient image transformers & distillation through attention将蒸馏应用于Transformer,在没有外部数据预选训练数据的情况下,可以在原创 2021-11-01 15:40:04 · 1860 阅读 · 1 评论 -
Transformer论文解读二(Vision Transformer)
最近Transformer在CV领域很火,Transformer是2017年Google发表的Attention Is All You Need中主要是针对自然语言处理领域提出的,后被拓展到各个领域。本系列文章介绍Transformer及其在各种领域引申出的应用。本文介绍的An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale将Transformer应用到计算机视觉领域,称作Vision Transformer(原创 2021-11-01 13:48:10 · 3922 阅读 · 1 评论 -
Transformer论文解读一(Transformer)
最近Transformer在CV领域很火,Transformer是2017年Google发表的Attention Is All Y ou Need,主要是针对自然语言处理领域提出的。本系列文章介绍Transformer及其在各种领域引申出的应用。自我注意(Self-attention),有时也称为内部注意(intra-attention),是一种将单个序列的不同位置联系起来,以计算该序列的表示的注意机制。Transformer是第一个完全依靠自我注意来计算其输入和输出的表示,而不使用RNN的模型。论文指原创 2021-11-01 12:41:34 · 7850 阅读 · 1 评论 -
语义分割论文解读三(HRNetv1, HRNetv2)
本文介绍同一作者在Deep High-Resolution Representation Learning for Human Pose Estimation和SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers中提出的两篇高分辨率网络,称为HRNetv1和HRNetv2。HRNetv1论文SegFormer: Simple and Efficient Design for Semantic原创 2021-10-30 16:56:18 · 2922 阅读 · 2 评论 -
目标检测经典论文详解
本系列文章将介绍一些目标检测发展的里程碑著作。目标检测代码解读一(FasterRCNN)目标检测代码解读二(SSD)目标检测代码解读三(YOLOv3SPP)图片来源目标检测论文解读四(检测蒸馏论文三篇)Mimicking Very Efficient Network for Object DetectionGeneral Instance Distillation for Object DetectionMulti-Scale Aligned Distillation for原创 2021-10-29 11:04:37 · 1761 阅读 · 1 评论 -
目标检测论文解读五(YOLOF)
2021年3月发表在CVPR上的You Only Look One-level Feature (YOLOF)指出FPN的成功在于其对目标检测优化问题的分治解决,而不是多尺度特征融合。基于这样的思想,YOLOF引入了一种替代的方法:只使用一级特征进行检测,而不是采用复杂的特征金字塔。在该方法中,作者提出了扩展编码器和均匀匹配两个关键组件,并对其进行了很大的改进。作者将FPN视为多进多出(Multiple In Multiple Out, MiMo)编码器,并和单进多出(SiMo)、多进单出(MiSo)原创 2021-10-27 23:58:41 · 1057 阅读 · 2 评论 -
网络参数重组论文五(RepNAS)
本系列文章介绍一种最近比较火的设计网络的思想,即利用网络的重参数化(意义在于训练时间模型有一组参数,而推理时间模型有另一组参数),把多层合成一层,进行网络加速。RepNAS: Searching for Efficient Re-parameterizing Blocks中将参数重组的思想应用于网络结构搜索技术。该方法的核心思想是在训练过程中将不同块之间的一些分支修剪掉,如下图所示:它有两个基本步骤:给定CNN架构。在原始卷积运算中插入一些线性运算作为其分支,如下图所示。对于每个分支,设置一个表原创 2021-10-23 12:52:52 · 1683 阅读 · 2 评论 -
网络参数重组经典论文
1. RepVGGRepVGG: Making VGG-style ConvNets Great Again详解提出了一种替代卷积核:使用3x3conv+1x1conv+identity代替原本单一的3x3conv2. ACNetACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks详解提出了一种替代卷积核:使用1x3conv+3x1conv+3x3conv代替原本单原创 2021-10-11 13:02:44 · 432 阅读 · 2 评论 -
网络参数重组论文四(Diverse Branch Block)
本系列文章介绍一种最近比较火的设计网络的思想,即利用网络的重参数化(意义在于训练时间模型有一组参数,而推理时间模型有另一组参数),把多层合成一层,进行网络加速。Diverse Branch Block: Building a Convolution as an Inception-like Unit中了介绍一些可以用于参数重组的变换,可以根据这些变换组合成为一个可替代卷积层的模块,在训练过程中使用这些复杂的模块,在测试过程中将模块参数重组为简单的卷积。1. 6种参数变换在文中,作者总结了6种变换来对D原创 2021-10-05 11:32:00 · 1752 阅读 · 4 评论 -
网络参数重组论文三(SpineNet-Seg)
本系列文章介绍一种最近比较火的设计网络的思想,即利用网络的重参数化(意义在于训练时间模型有一组参数,而推理时间模型有另一组参数),把多层合成一层,进行网络加速。本文介绍的ResRep: Lossless CNN Pruning via Decoupling Remembering and Forgetting是将参数重组应用在剪枝的一篇论文,提出了一种新的无损通道修剪方法。在传统剪枝方法,conv参数同时涉及“记忆”(目标函数)和“遗忘”(惩罚损失),以实现两者的权衡。也就是说,传统的方法强迫每一个渠道原创 2021-09-30 10:01:50 · 360 阅读 · 1 评论 -
网络参数重组论文二(ACNet,RepMLP)
本系列文章介绍一种最近比较火的设计网络的思想,即利用网络的重参数化(意义在于训练时间模型有一组参数,而推理时间模型有另一组参数),把多层合成一层,进行网络加速。1. RepMLP: Re-parameterizing Convolutions into Fully-connected Layers for Image Recognition一个能够较好完成图像识别的网络需要具有如下三个特征:局部先验:卷积神经网络之所以能够成功识别图像,是因为图像的局部性(即一个像素与其相邻像素的关系比遥远像素的关原创 2021-09-29 10:38:27 · 742 阅读 · 2 评论 -
网络参数重组论文一(RepVGG)
本文介绍的两篇论文应用了最近一种比较火的设计网络的思想,即利用网络的重参数化,把多层合成一层,进行加速。1. RepVGG: Making VGG-style ConvNets Great AgainRepVGG有5个阶段,每一阶段开始时通过stride=2的卷积进行下采样。下图展示了一个特定阶段的前4个层次。RepVGG的创新点在于,它只在训练阶段使用shortcut结构,而在测试阶段将参数重组,目的是减少参数数量,并在测试时去掉shortcut结构。1.1 BN层和卷积层的参数重组为卷积层令原创 2021-09-27 19:59:41 · 849 阅读 · 1 评论 -
蒸馏论文八(分类蒸馏论文八篇)
本文介绍了分类蒸馏的八篇论文自蒸馏Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self DistillationSelf Distillation文中提出的自蒸馏方法,相比于传统蒸馏方法来说,无需提前训练教师网络,而是在学生网络训练的过程中进行自蒸馏,不仅可以训练出更高精度的小网络,而且花费的时间更少。文中使用的自蒸馏方法如下:如图所示,一个ResNet根据其深度分为四个部分原创 2021-09-02 17:46:28 · 1724 阅读 · 3 评论 -
检测数据库detectron2代码解析(一)训练文件
facebookresearch发表的检测数据库detectron2几乎涵盖了当下最新的各种检测代码。训练代码train_net.py1. 参数加载args = default_argument_parser().parse_args()例如,在训练时传入参数:python tools/train_net.py --config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_1x.yaml \ --num-gpus 1原创 2021-08-06 18:06:59 · 2057 阅读 · 3 评论 -
剪枝论文五(Connection pruning)
本文介绍一种经典的剪枝方法(Connection pruning)1. 核心思想步骤:通过正常的网络训练学习连通性。然而,与传统训练不同的是,我们不是在学习权重的最终值,而是在学习哪些连接是重要的。修剪低重量连接。所有权值低于阈值的连接都被从网络中删除,将一个密集网络转换为一个稀疏网络。训练网络学习剩余稀疏连接的最终权值。2. 算法记录卷积层的所有权重 # 统计卷积层的通道数 total = 0 for m in model.modules():原创 2021-08-04 16:58:06 · 572 阅读 · 2 评论 -
剪枝论文四(ThiNet)
本文介绍了一种剪枝方法(ThiNet)作者的主要思想:将过滤器修剪正式建立为一个优化问题,并需要使用从其下一层计算的统计信息来修剪过滤器,而不是当前层,这将ThiNet与现有方法区别开来。如图所示,步骤为:首先关注虚线框部分,确定几个弱通道及其相应的过滤器(在第一行中以黄色突出显示)。这些通道(和它们相关的过滤器)对整体性能的贡献很小,因此可以丢弃这些通道,导致模型被修剪。最后对网络进行微调以恢复其精度。和之前介绍过的另一篇介绍滤波器修剪的论文——剪枝论文二(Filters Pruning原创 2021-08-04 16:58:35 · 419 阅读 · 2 评论