自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 学术论文写作常用词汇、句式表达

称为、叫作namedcalleddubbed模块化的modular本文会经常更新,作者会在读论文的过程中,不断归纳。未完,待续… …

2021-04-28 22:02:57 5224

原创 光流正负值的含义以及如何利用光流进行warping

本文主要介绍光流的形式,光流值的正负代表什么含义,以及如何利用光流进行warping。光流的形式:光流的表示也是数字化的。它一般使用一个三维的数组([H,W,2])表示,其中H表示图像的高度,也就是数组中的行数,W表示图像的宽度,也就是数组中的列数,2表示x , y两个方向。偏移量的大小是通过光流数组中的数值大小体现出来的,而偏移的方向是通过光流数组中的正负体现出来的。在x方向上,某点处光流值为正值

2023-01-30 20:34:40 1088 1

原创 Linux系统中,多个CUDA版本切换

1. 设置环境变量sudo vi ~/.bashrc进入bashrc文件后,在文件末尾添加以下代码,用来设置cuda的环境变量:export CUDA_HOME=$CUDA_HOME:/usr/local/cuda export PATH=$PATH:/usr/local/cudaexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64设置完毕后如下图所示:**注意:**如果大家按照下图设置的话,这是硬链接,无法设置软连接

2022-04-10 15:17:15 9155 4

原创 Self-training with Noisy Student improves ImageNet classification (2020 CVPR)

1. 出处2020 CVPR2. 主要内容想要尽可能的利用上无标签的数据,来提高模型分类能力3. 整体结构输入数据:labeled images和unlabeled images![在这里插入图片描述](https://img-blog.csdnimg.cn/43f0fbb5964c4d83ad1624951dd3d520.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVEVuJQ==,

2022-04-08 17:45:55 3434

原创 zero-shot learning系列论文(1)A Generative Model For Zero Shot Learning Using Conditional Variational

1. 出处2018 CVPR workshop2. 问题已有的zero-shot learning方法尝试通过一些迁移函数建模类属性空间和图像空间之间的关系,以便将图像空间对应到unseen class3. 方法学习一个class embedding到image space的映射函数,但由于图像空间的不连续性,从seen class images上学到的映射无法捕获unseen classes的关系(domain shift问题)作者没有直接建模迁移函数,而是将问题视为“数据丢失”(相当于训练的

2022-02-23 21:28:21 765

原创 零样本分割系列论文(2)Open-Vocabulary Instance Segmentation via Robust Cross-Modal Pseudo-Labeling

zero-shot segmentation系列论文分享,本次分享的是Open-Vocabulary Instance Segmentation via Robust Cross-Modal Pseudo-Labeling,于2021.11.24挂在arXiv上,应该是投稿了CVPR 2022

2022-01-13 16:41:56 2980

原创 论文阅读Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector (2020 CVPR)

1. 出处2020 CVPR香港科技大学,腾讯2. 主要内容提出了自己的数据集提出了自己的小样本目标检测方法,不需要微调或者继续训练就能识别novel class3. 问题目标检测传统的方法需要大量的训练数据,准备大量高质量的训练数据需要耗费很多人力。给定少量样本的目标检测的关键就在于如何在复杂的背景中定位一个unseen目标。潜在的bbox很容易丢失unseen目标,或者对背景产生错误检测。这是因为RPN产生的bbox的低分,使得novel object难以被检测出来。而且已有的小样本目

2021-12-05 17:24:24 445

原创 零样本分割系列论文(1)Zero-Shot Instance Segmentation (2021 CVPR)

1. 出处2021 CVPR2. Motivation深度学习在有大量标注数据的实例分割任务中取得了很好的效果。但在医学领域,工业界很难获取到大量的数据,而且标注工作需要具备专业技能的人去做。这就导致这些任务中,未见过的类别,没有有标注的数据。另外,对于open-set实例分割任务,不可能标注所有类别,很多未标注的unseen classes也需要被分割出来。因此,缺乏有标注数据,深度学习方法无法完成这样的分割任务。Zero-shot segmentation面临2个主要挑战:如何对uns

2021-12-03 10:43:40 3744

原创 Masked Autoencoders Are Scalable Vision Learners (2021 何凯明老师组)

怎么说呢,何老师出品,必属精品!遵循的一个原则就是:非常好理解,容易阅读,可谓大道至简!就是对硬件设备的要求太高了,普通科研狗,想复现都难(crying.jpg)1. 出处2021 何凯明老师组(CVPR 2022 )2. 核心思想MAE mask输入图像的随机patches,重建缺失的pixels。两个主要设计:一个不对称的encoder-decoder架构encoder只对可见的patches子集(不包括mask tokens)进行操作轻量级的decoder在隐含表示和mask t

2021-11-17 16:24:57 1130

原创 docker搭建本地pytorch镜像,上传到dockerhub,并编写dockerfile移植到服务器

一、安装docker需要在本地安装docker二、搭建本地镜像创建一个想要移植到服务器上的pytorch环境,并安装好自己需要的一些包,比如opencv, numpy, scikit-learn, mvcc-full等,如果一开始没安装全也没关系,可以在dockerfile中通过RUN指令补充安装。所有的anaconda环境自动就是一个镜像,有自己的镜像id。diy好的镜像可以通过以下指令提交。docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[tag]三

2021-11-04 14:46:43 923

原创 Frustratingly Simple Few-Shot Object Detection (2020 ICML)

1. 出处2020 ICML2. 创新点采用的微调技术采用instance-level feature normalization (很多论文用过这个方法)改进了评估方法,不仅考虑novel class检测的准确率,而且考虑对于base class知识的保留3. Motivation已有的工作表明meta-learning是一种有效的方法,但fine-tuning技术不怎么被关注,而且大多数工作都专注于基础的图像分类任务,对目标检测关注较少。作者发现对于稀少的类别微调已有检测器的最后几层,

2021-10-30 20:06:12 615

原创 Dense Relation Distillation with Context-aware Aggregation for Few-Shot Object Detection (2021 CVPR)

1. 出处2021 CVPR北大2. 问题小样本目标检测在只有少量样本可用的情况下,很容易忽视新物体的细粒度的特征。已有的方法有几个缺陷:support特征和query特征之间的关系几乎没被探索过,在support特征上进行的全局池化操作用于调制query分支,这易于损失局部细节信息。support图像和query图像之间的外观变化差异很大或者有遮挡时,会对结果产生很大误导。没有足够的对比性信息的话,模型难以学到关键特征用于分类和定位。尺度变化问题仍然是小样本检测任务的阻碍3. 解决方案

2021-10-29 14:22:58 1552 1

原创 RefineNet: Multi-path Refinement Networks for High-Resolution Semantic Segmentation

1. 出处2017 CVPR2. 问题重复的二次采样操作如池化,卷积会导致图像分辨率快速下降。一种解决方案是使用反卷积作为上采样操作,来生成高分辨率的特征图。反卷积操作无法恢复低维特征,因为已经在前向传播阶段中的下采样操作中丢失了。低维信息对边界和细节的精确预测是至关重要的。DeepLab使用空洞卷积产生大的感受野,不需要下采样图片。这个方法有两个限制:需要对大量的细节(高分辨率)特征图做卷积,计算昂贵。空洞卷积是一种粗糙的sub-sample方式,会丢失重要细节另一种解决方案是利用来自中

2021-10-28 16:13:09 796

原创 PSPNet

1. 出处2017 CVPR2. 核心思想整体结构:通过金字塔池化模块将全局上下文信息和PSPNet结合在一起全局先验表示,对于场景解析任务是有效的PSPNet为像素级预测提供了更优秀的框架3. 问题已有的语义分割方法(按这篇文章来说的话,叫做场景解析,scene parsing),无法解决以下问题:FCN把船错分成了汽车,这是由于一些物体有相似的外观。但如果基于先验context来看这张图片的话,就能进行正确预测。当前基于FCN的模型最大的问题在于缺乏合适的策略来利用全局场景类别信息

2021-10-28 16:08:50 443

原创 DeepLab系列论文阅读

1. DeepLab v2DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs1.1 出处:2017 TPAMI1.2 问题:降低的特征分辨率多尺度物体的存在由于DCNN不变性,导致降低的定位准确率1.3 主要贡献(Solution):着重强调使用上采样conv或者空洞卷积,而不是使用反卷积deconvolution

2021-10-28 16:05:43 634

原创 SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

1. 出处2015 TPAMI2. 核心思想核心可训练的分割模型包括:encoder, decoder,接着是pixel-wise的分类层decoder用来将低分辨率特征图映射成和输入图片分辨率相同的特征图3. 创新性SegNet的创新之处在于:decoder上采样低分辨率输入特征图的方式。4. 问题已有的方法直接将用于类别预测的深度学习框架用于pixel-wise的标注。尽管结果不错,但仍然很粗糙。主要是因为最大池化和sub-sampling降低了特征图的分辨率。5. 解决方案设计了S

2021-10-28 16:01:25 1326

原创 语义分割基础知识

感谢深度之眼提供的课程,以下是学习过程中,整理的笔记。1. 基本概念从影像中推理出相关的语义或知识(从具体到抽象的过程)。用不同颜色把不同目标标注出来,起到断句的作用。2. 概念辨析语义分割 semantic segmentation实例分割 instance segmentation:与语义分割的区别:不关注背景,不需要把背景的物体也一一分割出来,只关注自己对自己重要的部分,比如对于自动驾驶来说,需要把分割行人和骑车的优先级设置高一些,把分割楼房建筑的优先级设置低一些语义分割会把

2021-10-28 15:58:24 1838 1

原创 语义分割入门必读论文

我这里只整理了较早期的论文,最新论文还没阅读,等读到了再来更新。1. FCN出处:2015 CVPR论文:Fully convolutional networks for semantic segmentation2. SegNet出处:2015, 2017 TPAMI论文:Segnet: A deep convolutional encoder-decoder architecture for image segmentation3. UNet(医学图像分割)出处:2015, MEDICA

2021-10-28 15:51:54 526

原创 DETReg: Unsupervised Pretraining with Region Priors for Object Detection (2021)

1. 出处2021 CVPR 貌似没中,我在谷歌学术和微软学术上都没搜到2. 问题已有的自监督方法不是专门为了检测中的一个重要任务——定位物体而设计的。大多数已有的自监督方法只学习检测网络的部分结构,通常只是检测器的子网络,比如ResNet,只学习backbone对于检测模型是远远不够的。3. 解决方案提出了一个使用Region priors的Transformer进行目标检测的无监督预训练方法,叫作DETReg。作者受目标检测两个任务(分类和定位)的启发,合并自监督中两个互补的信号。对于目

2021-10-26 14:10:10 2957

原创 RepMet: Representative-based metric learning for classification and few-shot object detection (2019)

1. 出处2019 CVPRIBM研究团队2. 问题当前大多数小样本学习工作主要关注特定领域,比如人脸识别,一般的分类问题。很少有工作关注小样本目标检测问题,这类问题由于图像背景及需要精确定位物体位置变得复杂化。3. 主要内容提出了一种新的距离度量学习方法,能够同时学习backbone网络参数,embedding空间和每个训练类别的多模态分布。用一个有多个模式的混合模型表示每个类,将这些模式的中心作为该类别的表示向量。为了用少量的训练样本学习一个鲁棒的检测器,作者提出通过DML方法,用一个可

2021-10-24 16:55:05 333

原创 Meta-Learning to Detect Rare Objects (2019 ICCV)

1. 出处2021 ICCV卡耐基梅隆大学2. 问题当前对于小样本学习的研究主要关注小样本分类问题,小样本检测具有挑战而且尚未被探索。也有一些researcher将小样本分类方法用于小样本检测,但效果不够理想。3. 解决方案提出了一个基于元学习的框架,能够同时解决小样本分类和定位问题。该框架利用base classes的元知识来促进novel classes检测器的生成。作者的insight就是解决基于CNN的检测模型中类别不可知的和特定类别的组件,利用不同的元学习策略优化不同的组件。cate

2021-10-21 20:51:51 600 3

原创 Few-shot Object Detection via Feature Reweighting (2019 ICCV)

这篇论文算是小样本目标检测的开篇之作之一了,我在阅读最新论文的时候,发现他们也总会引用这篇文章,所以做小样本目标检测或者语义分割的同学,可以阅读一下这篇论文。1. 论文出处2019 ICCV2. 问题传统的基于CNN的目标检测方法需要大量的bbox标注,这些方法对于一些少的类别是不可用的。3. 解决方法设计了小样本目标检测器。能够从少量有标注的样本中检测出新类。模型通过元特征学习器和一个调整权重的模块,利用全部标注的基础类别,快速适应新类。使用有大量数据的base classes作为训练数据,

2021-10-17 15:51:07 728

原创 Beyond Max-Margin: Class Margin Equilibrium for Few-shot Object Detection (2021 CVPR)

1. 论文出处2021 CVPR厦门大学纪荣嵘老师团队,鹏城实验室2. 问题本文发现了一个问题,novel class分类和表示之间的隐含矛盾被忽视了。即:为了实现精确的novel class分类,两个base class分布需要互相远离(max-margin)。为了准确表示novel classes,base classes的分布需要彼此靠近,来减小novel classes类内距离(min-margin)。3. 解决方案提出了类间距均衡方法CME,来优化特征空间划分和novel c

2021-10-16 17:31:58 891

原创 einops.repeat, rearrange, reduce优雅地处理张量维度

我总是搞不清啥时候dim=0或者dim=1,总会搞混,刚好在阅读Vision Transformer代码时,看到有人用einops,于是百度了一下,发现这个东西真的很好用!大家可以参考这两篇帖子对照着学习:https://zhuanlan.zhihu.com/p/342675997https://blog.csdn.net/weixin_43135178/article/details/118877384没有安装的话,首先需要pip install einops安装完后,大家可以顺着我的代码,依次

2021-09-17 16:41:43 6932

原创 Vision Transformer——ViT代码解读

官方提供的代码:https://github.com/google-research/vision_transformer大佬复现的版本:https://github.com/lucidrains/vit-pytorch对不起,我好菜,官方给的代码我确实看不懂啊,所以看了第二个版本的代码。第二个版本的代码超级受欢迎且易使用,我看的时候,Git rep已经被star 5.7k次。大家直接 pip install vit-pytorch就好。所以作为初次接触vit的同学们来说,推荐看第二个版本,结构清晰明

2021-09-16 17:27:36 6351 2

原创 pytorch学习(十六)to(device) 和.cuda()的用法

看pytorch官方给的代码,to(device)的时候可以指定GPU设备号。二者没啥太大区别,都可以用。cuda = torch.device('cuda') # Default CUDA devicecuda0 = torch.device('cuda:0')cuda2 = torch.device('cuda:2') # GPU 2 (these are 0-indexed)x = torch.tensor([1., 2.], device=cuda0)# x.device is

2021-07-10 17:03:32 10171

原创 网络结构(1)ResNeXt介绍及cardinality介绍

写这篇文章是因为最近在阅读论文的过程中,接触到了“cardinality”这个概念,出自2017年CVPR何凯明大神组的论文Aggregated Residual Transformations for Deep Neural Networks,也是提出了ResNet的改进版ResNeXt。重点介绍ResNeXt中block的结构及“cardinality”基数这个概念。1. ResNeXt中block的结构上图中左边是ResNet常用的卷积块结构,右边是ResNeXt的卷积块结构,输出可用下面的公

2021-05-28 21:27:51 2062 4

原创 Pytorch学习(十五)squeeze()和unsqueeze()的用法

squeeze()函数用于压缩维度,unsqueeze()用于扩充维度。1. unsqueeze()用法介绍unsqueeze()函数用于扩充维度,它有一个参数unsqueeze(dim),表示在第dim维上扩充维度。下面的代码中arr维度是(2,3,4),在第0维进行扩充,代码第三行维度是(1,2,3,4),通过第四行代码的输出结果可以看出,输出张量与原张量不共享内存,可通过第五行arr = arr.unsqueeze(0)来改变arr维度。arr = torch.arange(1, 25).vi

2021-05-22 15:41:10 728

原创 Pytorch学习(十三)python中*args和**kwargs的用法

1. python中*args和**kwargs的用法*args和 **kwargs经常在函数定义中被使用,用来传递可变长参数。*args表示任意多个无名参数,是一个tuple,**kwargs表示关键字参数,是一个dict。当*args和 **kwargs同时是使用时,*args参数列表要放在 **kwargs前边。举例如下:# 测试*args和**kwargsdef func(*args, **kwargs): print("args = ", args) print("kwa

2021-05-15 14:17:15 4668 1

原创 Pytorch学习(十二)pytorch中.data, .item()和.detach的用法

待完成… …

2021-05-15 13:39:09 1332

原创 Pytorch学习(十一)Pytorch中.item()的用法

我第一次接触.item()是在做图像分类任务中,计算loss的时候。total_loss = total_loss + loss.item()1. .item()的用法.item()用于在只包含一个元素的tensor中提取值,注意是只包含一个元素,否则的话使用.tolist()x = torch.tensor([1])print(x.item())y = torch.tensor([2,3,4,5])print(y.item())# 输出结果如下1---------------------

2021-05-12 17:15:16 29237 4

原创 Pytorch学习(十)Pytorch中常用的损失函数

1. torch.nn.CrossEntropyLossCrossEntropyLoss的作用相当于将nn.LogSoftmax()和nn.NLLLoss()结合在一起,nn.LogSoftmax()相当于先对输入矩阵计算softmax值,然后取log。举例说明这几个函数的功能:(1)使用nn.Softmax() + torch.log()来模拟nn.LogSoftmax()import torchimport torch.nn as nn# 随机生成输入input = torch.randn

2021-05-12 15:51:37 1426

原创 Pytorch学习(九)Pytorch中CPU和GPU的Tensor转换,Tensor和ndarray的转换及.cuda(non_blocking=True)的作用

1. 设置训练模型的GPU设备的方式device = torch.device("cuda:1" )model = model.to(device)2. CPU和GPU上Tensor的比较该部分参考自来自达摩院大神的讲解PyTorch中的数据类型为Tensor,Tensor与Numpy中的ndarray类似,同样可以用于标量,向量,矩阵乃至更高维度上面的计算。PyTorch中的tensor又包括CPU上的数据类型和GPU上的数据类型,一般GPU上的Tensor是CPU上的Tensor加cuda(

2021-05-11 22:08:14 16934

原创 Pytorch学习(八)读取数据集的方式汇总

待完成。。。

2021-05-11 20:33:05 303

原创 Pytorch学习(七)torchvision.datasets.ImageFolder的用法

待写。。。

2021-05-11 20:31:20 485 1

原创 Pytorch学习(六)Dataset, DataLoader,Sampler的理解

1. DatasetDataset表示的是静态的数据集,DataLoader的侧重点在于Loader加载器,将Dataset中的数据按照一定的规则加载到神经网络中2. DataLoader用法详解DataLoader类涉及到的参数如下:torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, p

2021-05-09 20:43:01 723

原创 Pytorch学习(四)Transforms用法学习

1. Transforms该如何使用?Transforms用来对输入图片的格式及样式做一些改变,使用时需要注意图像的输入格式:PIL格式---->Image.open()ndarray------>cv.imread()转换成Tensor格式-------->ToTensor()from PIL import Imagefrom torchvision.transforms import transformsimg_path = "dataset/facades/tra

2021-05-09 10:53:39 418 2

原创 Pytorch学习(五)内置函数__init__()和__call__()函数的使用

根据下面的代码可以看出,call()函数不用显示调用,而是使用对象初始化的方式来调用。class Person: def __call__(self, name): print("__call__" + " hello " + name) def hello(self, name): print("hello ", name)p = Person()p("Amy")p.hello("Mike")# 结果如下:__call__ hello Am

2021-05-08 19:16:41 1330 1

原创 Pytorch学习(三)self.modules()和self.children()的用法

通过代码来学习self.modules()和self.children()的用法.1. self.children()和self.modules()测试代码import torchimport torch.nn as nn input_nc = 3hide1_nc = 6hide2_nc = 6output_nc = 3 class Net(nn.Module): def __init__(self, input_nc, hide1_nc, hide2_nc, output_nc

2021-05-06 16:21:48 2116 1

原创 Pytorch学习(二)Pytorch对声明的网络结构进行初始化及‘ConvBlockInit‘ object has no attribute ‘weight‘错误出现原因分析

通常使用pytorch在一个类的__init__()函数中声明完网络结构后,pytorch会自动初始化待训练的网络结构的权值。但这种初始化过程是随机的,参数分布没有规律且相差较大,使得网络收敛速度下降。因此,我们手动初始化权重,可以采用服从正态分布的数据来初始化权重。1. 方法一:先定义网络,后初始化权重def weights_init_normal(m): # 初始化权重 classname = m.__class__.__name__ if classname.find("C

2021-05-06 10:13:13 4186 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除