![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
深度学习与神经网络
文章平均质量分 52
介绍作者近期阅读的深度学习相关的论文,感兴趣的技术算法,以及对于某些问题的解决方案。
TEn%
因为自己淋过雨,所以想给别人撑把伞。
展开
-
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 · 3399 阅读 · 0 评论 -
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 · 1114 阅读 · 0 评论 -
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 · 1295 阅读 · 0 评论 -
语义分割基础知识
感谢深度之眼提供的课程,以下是学习过程中,整理的笔记。1. 基本概念从影像中推理出相关的语义或知识(从具体到抽象的过程)。用不同颜色把不同目标标注出来,起到断句的作用。2. 概念辨析语义分割 semantic segmentation实例分割 instance segmentation:与语义分割的区别:不关注背景,不需要把背景的物体也一一分割出来,只关注自己对自己重要的部分,比如对于自动驾驶来说,需要把分割行人和骑车的优先级设置高一些,把分割楼房建筑的优先级设置低一些语义分割会把原创 2021-10-28 15:58:24 · 1787 阅读 · 1 评论 -
网络结构(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 · 1961 阅读 · 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 · 707 阅读 · 0 评论 -
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 · 4574 阅读 · 1 评论 -
Pytorch学习(十二)pytorch中.data, .item()和.detach的用法
待完成… …原创 2021-05-15 13:39:09 · 1269 阅读 · 0 评论 -
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 · 27905 阅读 · 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 · 1399 阅读 · 0 评论 -
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 · 16713 阅读 · 0 评论 -
Pytorch学习(八)读取数据集的方式汇总
待完成。。。原创 2021-05-11 20:33:05 · 293 阅读 · 0 评论 -
Pytorch学习(七)torchvision.datasets.ImageFolder的用法
待写。。。原创 2021-05-11 20:31:20 · 476 阅读 · 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 · 707 阅读 · 0 评论 -
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 · 403 阅读 · 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 · 1308 阅读 · 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 · 2010 阅读 · 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 · 4117 阅读 · 5 评论 -
目标检测中IoU计算
1. 含义IoU即交并比(Intersection over Union),是真实的目标框Ground truth与算法预测出来的目标框Prediction之间差距的衡量指标。计算公式:IoU = A∩B/A∪B一般来说,IoU值越大,说明预测的越准确,通常取0.5作为阈值。2. Python程序实现def iou(box1, box2): """Implement the intersection over union (IoU) between box1 and box2原创 2021-03-19 13:26:38 · 768 阅读 · 0 评论 -
nn.AdaptiveAvgPool2d() 与 nn.AvgPool2d() 模块各自的用途
首先介绍一下我为啥会关注到这个问题,因为我在使用加了SE模块的Resnet的时候,程序出bug了,原来问题出在我使用了nn.AvgPool2d() ,而应该使用nn.AdaptiveAvgPool2d() 。1. 问题下边是我写的SEResnet模块的代码,然后我会贴出我程序报的错误:class SEResNet(nn.Module): def __init__(self, block, layers, num_classes=1000): self.inplanes = 6原创 2020-12-16 21:16:07 · 3313 阅读 · 0 评论 -
使用python搭建单隐藏层神经网络用于分类
这篇文章系统的介绍了搭建、训练单隐藏层神经网络的步骤。将“肿瘤预测”数据集划分为训练集和测试集,使用训练集训练神经网络,使用测试集来预测训练好的神经网络的效果。原创 2020-02-25 13:36:38 · 779 阅读 · 0 评论