精华内容
下载资源
问答
  • pytorch-learn:pytorch代码
  • 莫烦python之pytorch代码.zip 莫烦github也有
  • 生成视频字幕的pytorch代码
  • pytorch代码.zip

    2021-03-10 08:10:13
    pytorch书籍配套的相关代码,以及GitHub上的经典代码
  • gpu_profiling_pytorch 测试简单的pytorch代码的性能 实现分布式DataParallel以在多个节点上运行 使用Nsight Profiler进行性能分析
  • Appearance-Based Gaze Estimation via Evaluation-Guided Asymmetric Regression论文中pytorch代码
  • PD-GAN:用于图像修复的概率多样GAN(CVPR2021) 官方pytorch代码
  • Pytorch代码转tensorflow中遇到的问题

    千次阅读 2020-04-10 00:31:12
    Pytorch代码转tensorflow中遇到的问题 正好有一个项目需要将别人的pytorch代码改为tensorflow代码,记录一下常见问题 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将...

    Pytorch代码转tensorflow中遇到的问题

    正好有一个项目需要将别人的pytorch代码改为tensorflow代码,记录一下常见问题。
    持续更新…

    转换问题

    1、pytorch中的expand函数

    #pytorch
    x.expand(-1, 512, -1, -1)  #既在x[1]维度扩展到512
    
    #tensorflow
    def expand(x, shape):  #x:输入图像;shape 图片将图片扩充的维度
        size = shape[3]    #tensorflow 扩充了第4维度
        b = x
        for i in range(size - 1):
            x = tf.concat([x, b], axis=3)
        return x
    
    

    2、pytorch中mul函数
    在tensorflow中使用tf.multiply(x,y)进行替换

    3、损失函数
    pytorch的损失函数在pytorch.nn目录下
    tensorflow损失函数在tensorflow.losses目录下

    4、转换tensor类型
    pytorch
    x = torch.FloatTensor(x)
    tensorflow
    x=tensorflow.convert_to_tensor(x,dtype=tensorflow.float32)

    出现错误

    1、维度转换问题
    ValueError: Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_1/MaxPool' (op…
    出现原因:pytorch与tensorflow维度顺序不一致
    pytorch: [feature, rgb, 长, 宽]
    tensorflow:[feature, 长, 宽, rgb]
    调换对应的顺序即可

    2、在计算metrics时遇到报错1
    AttributeError: 'Tensor' object has no attribute 'numpy'
    解决:在import tensorflow as tf后一行加入
    tf.enable_eager_execution()

    3、计算IOU时报错
    TypeError: mean_iou() missing 1 required positional argument: 'num_classes'
    解决:

    4、cv2写入报错
    cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:661: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'cv::imwrite_'
    解决:cv2.imwirte(name,image)文件名没有添加后缀

    手写IOU计算

    由于使用的模型需要使用手动计算损失函数,最后求准确度的时候需要计算交并比,调用tf.metrics.MeanIoU失败,同时网上找到的IOU函数都是基于检测窗体写的,于是手写了一个计算IOU的函数,用于计算。
    IOU的计算公式: I O U = A ∩ B A ∪ B IOU=\frac{A\cap B} {A\cup B} IOU=ABAB

    该函数用于语义分割或单分类的显著性目标检测

    def IoU(y_true, y_pred,threshold=0.5):    
        if np.max(y_true) == 0.0:
            return IoU(1-y_true, 1-y_pred) ## empty image; calc IoU of zeros
        one = tf.ones_like(y_pred)
        zero = tf.zeros_like(y_pred)
        y_pred = tf.where(y_pred < threshold, x=zero, y=one)     #将图片变成黑白图片
        y_true = tf.where(y_true < 0.5, x=zero, y=one)
       
        y_pred_sum = tf.reduce_sum(y_pred)
        y_true_sum = tf.reduce_sum(y_true)
        intersection=tf.reduce_sum(tf.multiply(y_true , y_pred))
        
        iou=intersection/(y_pred_sum+y_true_sum-intersection)
        return iou.numpy()
    
    

    参考文献

    展开全文
  • 这篇博客记录我在学习《深度学习之PyTorch物体检测实战》一书中关于SSD(Single Shot Multibox Detecor)这一算法的理解,以及pytorch代码的解读。 pytorch复现代码链接:...

    这篇博客记录我在学习《深度学习之PyTorch物体检测实战》一书中关于SSD(Single Shot Multibox Detecor)这一算法的理解,以及pytorch代码的解读。
    pytorch复现代码链接:https://github.com/dongdonghy/Detection-PyTorch-Notebook/tree/master/chapter5/ssd-pytorch
    虽然本篇博客会提到关于SSD的一些原理介绍,但是更多是侧重于pytorch代码方面的介绍,如果对SSD的原理感兴趣可以去网上搜索,有很多文章都已经介绍的很详细了。

    总览

    对于目标检测任务来说,一般有两种比较主流的框架,一种是Two stages,另外一种是Single shot。前者是Faster RCNN为代表,即首先利用RPN网络进行感兴趣区域生成,然后再对该区域进行类别的分类与位置的回归,这种方法优缺点很明显,虽然显著提升了精度,但也限制了检测速度。后者以以YOLO系列/SSD为代表,一次性完成classification+bounding box regression,这种利用回归的思想,虽然使速度有了明显的提升,但是精度方面也下降了不少。

    下面先简单了解一下SSD的流程和算法思想。
    SSD算法的算法流程如图下所示,输入图像首先经过了VGGNet的基础网络,在此之上又增加了几个卷积层,然后利用3×3的卷积核在6个大小与深浅不同的特征层上进行预测,得到预选框的分类与回归预测值,最后直接预测出结果,或者求得网络损失。整个过程中可以看出,SSD只进行了一次框的预测与损失计算,属于一阶网络。由于利用了多个特征图,SSD实现了较好的检测精度。
    在这里插入图片描述相比于其他算法,SSD的改进可以总结为以下四点:

    1. 数据增强:SSD对原始数据做了充分的增强工作,主要包括光学变换与几何变换。
    2. 网络骨架:SSD并没有直接使用VGG作为特征提取网络,而是在其卷积模块基础上,通过进一步延伸了4个卷积模块,获取不同尺度下的特征图,这些特征图具有不同的尺度与感受野,便于检测不同尺度的物体。
    3. ·PriorBox与多层特征图:与Faster RCNN类似,SSD利用了固定大小与宽高的PriorBox作为区域生成,但与Faster RCNN不同的是,SSD不是只在一个特征图上设定预选框,而是在6个不同尺度上都设立预选框,并且在浅层特征图上设立较小的PriorBox来负责检测小物体,在深层特征图上设立较大的PriorBox来负责检测大物体。
    4. 正、负样本的选取与损失计算:利用3×3的卷积在6个特征图上进行特征的提取,并分为分类与回归两个分支,代表所有预选框的预测值,随后进行预选框与真实框的匹配,利用IoU筛选出正样本与负样本,最终计算出分类损失与回归损失

    整个计算过程如下:
    在这里插入图片描述

    展开全文
  • 廖星宇的深度学习入门之PyTorch的所有代码
  • 深度残差收缩网络的PyTorch代码

    千次阅读 热门讨论 2021-01-05 11:05:15
    深度残差收缩网络的PyTorch代码 原文:Deep Residual Shrinkage Networks for Fault Diagnosis 作者:Minghang Zhao , Shisheng Zhong, Xuyun Fu 时间:2019年9月 1. Introduction(介绍) 本文主要是针对于判断机械...

    深度残差收缩网络的PyTorch代码

    本文转载自知乎:https://zhuanlan.zhihu.com/p/337346575

    原文:Deep Residual Shrinkage Networks for Fault Diagnosis

    作者:Minghang Zhao , Shisheng Zhong, Xuyun Fu

    时间:2019年9月

    1. Introduction(介绍)

    本文主要是针对于判断机械传动系统中,噪声带来的影响而导致故障诊断失误的情况,为了解决这样一个问题,而提出了一种残差收缩网络,通过机器学习的方法来自适应确定软阈值去消除噪声的影响。

    并且该文提出来两种情况下的残差收缩网络:DRSN-CS和DRSN-CW。

    2. Architecture of the DRSN(DRSN的架构)

    本文的模型架构是基于深度残差卷积网络而提出来的,其残差单元是Resnet的基本组成部分,与一般Convnet不同的是,Resnet有一个shortcut(捷径),能够使网络更深。示意图如下图所示:

    在这里插入图片描述
    (a)中表示在两次卷积后,输入的大小依旧没变,所以只需要将第一次卷积的输入和后两次的卷积相加即可。

    (b)中两次卷积后对图像的宽度减半,所以在shortcut部分也需要通过一次卷积缩减为一样大小。(c)对通道的扩充也同理。

    (d)RUB表示的就是(a)(b)(c)中的残差模块。

    2.1 Soft thresholding(软阈值)

    软阈值通常用来过滤掉噪声,但是对于不同的情况,需要专业知识去确定阈值大小,下图是软阈值的函数图以及导数图:
    在这里插入图片描述
    (a)表示软阈值的曲线,将0附近的值变为0,其他值不变。(b)表示其梯度,两边为1,中间为0。

    这样一个经典的软阈值函数,通常只适用于部分情况,对于大多数情况,还是需要特定的估计测试才能确定好适用的阈值函数。所以一种自适应阈值的方式将可解决这样一种情况。

    2.2 Architecture of the Developed DRSN-CS(DRSN-CS的架构)

    DRSN-CS是Resnet的一种变体,使用了自适应软阈值层的方式(残差收缩层)去消除噪声,这个残差收缩层的结构如下图所示:
    在这里插入图片描述
    其中经过残差的两次卷积后,将结果取绝对值,之后经过GAP(全局平均池化),将W缩减为1,之后再经过两次全连接层得到z,该结果进行Sigmoid得到 [公式] ,最后将GAP的结果取平均后与 [公式] 相乘,得到软阈值的结果。最后与原输入进行阈值化。(PS. 该论文中有keras的源代码和tf的源代码),我写了下pytorch收缩层的源代码,如下:

    class Shrinkage(nn.Module):
        def __init__(self, gap_size, channel):
            super(Shrinkage, self).__init__()
            self.gap = nn.AdaptiveAvgPool2d(gap_size)
            self.fc = nn.Sequential(
                nn.Linear(channel, channel),
                nn.BatchNorm1d(channel),
                nn.ReLU(inplace=True),
                nn.Linear(channel, 1),
                nn.Sigmoid(),
            )
    
       def forward(self, x):
            x_raw = x
            x = torch.abs(x)
            x_abs = x
            x = self.gap(x)
            x = torch.flatten(x, 1)
            average = torch.mean(x, dim=1, keepdim=True)
            # average = x
            x = self.fc(x)
            x = torch.mul(average, x)
            x = x.unsqueeze(2).unsqueeze(2)
            # 软阈值化
            sub = x_abs - x
            zeros = sub - sub
            n_sub = torch.max(sub, zeros)
            x = torch.mul(torch.sign(x_raw), n_sub)
            return x
    

    经过测试,在图像分类任务中,这个模型效果不太行,与baseline相比,几乎没有提升,还有点下降,对于图像来讲这个还是慎用,因为它将channel给平均下来了。

    2.3 Architecture of the Developed DRSN-CW(DRSN-CW的架构)

    RSN-CW与DRSN-CS的架构类似,不同点在于它没有将channel给平均掉,结构图如下:

    在这里插入图片描述
    从图中可知,Average运算消失了,这是他们唯一不同的点,程序修改也很简单,代码如下:

     class Shrinkage(nn.Module):
        def __init__(self, gap_size, channel):
            super(Shrinkage, self).__init__()
            self.gap = nn.AdaptiveAvgPool2d(gap_size)
            self.fc = nn.Sequential(
                nn.Linear(channel, channel),
                nn.BatchNorm1d(channel),
                nn.ReLU(inplace=True),
                nn.Linear(channel, 1),# 可能应该是nn.Linear(channel, channel)
                nn.Sigmoid(),
            )
        def forward(self, x):
            x_raw = x
            x = torch.abs(x)
            x_abs = x
            x = self.gap(x)
            x = torch.flatten(x, 1)
            # average = torch.mean(x, dim=1, keepdim=True)
            average = x
            x = self.fc(x)
            x = torch.mul(average, x)
            x = x.unsqueeze(2).unsqueeze(2)
            # 软阈值化
            sub = x_abs - x
            zeros = sub - sub
            n_sub = torch.max(sub, zeros)
            x = torch.mul(torch.sign(x_raw), n_sub)
            return x
    

    同样,在图像分类任务中,这个模型效果效果提升十分明显,在测试时,准确率提升3%左右,训练时,提升的效果8%左右,对于图像来说,这个效果还是可以的。

    3. Experimental Results(实验结果)

    该文使用的数据集是机械传动诊断仿真器中的噪声,通过与Convnet,Resnet,DRSN-CS和DRSN-CW的准确率进行比较,得到了如下结果:

    在这里插入图片描述
    TABLE III中手动添加了噪声,整体性能下降,在训练集和测试集中,DRSN-CW性能表现突出。在TABLE IV中,没有添加手动噪声,整体性能都较高,其中DRSN-CW表现优秀。

    4. Conclusion(结论)

    创新点:

    在Resnet中的残差模块,增加了一个收缩层(自适应软阈值层)去消除无关噪声——残差收缩网络,这样一个网络有两种变体,对于图像来讲,建议使用DRSN-CW,有3%左右的性能提升。

    展开全文
  • 测量pytorch代码段的运行时间

    千次阅读 2020-08-05 06:49:39
    测量pytorch代码段的运行时间 2020/6/12 FesianXu @ Tencent internship 前言 在pytorch中,我们经常需要测量某个代码段,某个类,某个函数或者某个算子的运行时间,以判断整个模型的速度瓶颈所在,本文介绍一些...
    测量pytorch代码段的运行时间
    2020/6/12 FesianXu @ Tencent intern

    前言

    在pytorch中,我们经常需要测量某个代码段,某个类,某个函数或者某个算子的运行时间,以判断整个模型的速度瓶颈所在,本文介绍一些常用的方法。

    ∇ \nabla 联系方式:

    e-mail: FesianXu@gmail.com

    QQ: 973926198

    github: https://github.com/FesianXu

    知乎专栏: 计算机视觉/计算机图形理论与应用

    微信公众号
    qrcode


    一般来说,我们可以用两大类方法进行代码段测量:

    1. timeit, 相当于测量代码开始时刻和结束时刻,然后求差。
    2. profile,一些pytorch自带或者第三方的代码耗时工具。

    timeit

    这种工作方式类似于下面的代码:

    import time 
    begin = time.clock()
    run_main_code()
    end = time.clock()
    
    print(end-begin) 
    # time consuming
    
    

    然而,pytorch的代码经常会运行在GPU上,而在GPU上的运行都是异步的,意味着采用一般的timeit操作不能准确地得到运行时总和,因此我们一般需要用pytorch内置的计时工具和同步工具,代码如[1]:

    start = torch.cuda.Event(enable_timing=True)
    end = torch.cuda.Event(enable_timing=True)
    
    start.record()
    z = x + y
    end.record()
    
    # Waits for everything to finish running
    torch.cuda.synchronize()
    
    print(start.elapsed_time(end))
    

    profile

    timeit的方法测试一些小代码还勉强适用,但是在大规模的测试中显然会变得很麻烦,当然,你可以通过添加修饰器的方式[2],去简化一行行重复人工添加这些时间测量代码的枯燥,但是这也并不是最好的解决方案。

    幸运的是,pytorch自带了计算模型每个部分耗时的工具,其既可以计算cpu耗时,也可以计算gpu耗时,很实用。这个神奇的工具叫做profile [3],在pytorch.autograd里面,使用方式很简单,

    x = torch.randn((1, 1), requires_grad=True)
    with torch.autograd.profiler.profile(enabled=True) as prof:
    	for _ in range(100):  # any normal python code, really!
        	y = x ** 2
    print(prof.key_averages().table(sort_by="self_cpu_time_total"))
    

    Reference

    [1]. https://discuss.pytorch.org/t/how-to-measure-time-in-pytorch/26964/2
    [2]. https://blog.csdn.net/LoseInVain/article/details/82055524
    [3]. https://pytorch.org/docs/stable/autograd.html?highlight=autograd%20profiler#torch.autograd.profiler.profile

    展开全文
  • Pytorch 代码注释公式格式还原 由于不熟悉语法,在理解公式过程中,出现障碍。 把公式还原,方便阅读,同时也学习公式表示语法: pytorch BCE损失函数(loss function)代码注释如下: The loss can be ...
  • 尽管pytorch代码看起来简单而具体,但是发生的许多细微变化是不可见的,因此在使用pytorch代码时,它有助于彻底理解运行时模型。 例如,考虑以下代码: torch.nn.cross_entropy(model(images.cuda()), labels
  • pytorch代码补全.zip

    2019-12-10 14:46:03
    解决Pytorch在IDE中无法自动补全的问题 找到torch包的位置 将该文件复制进去 就可以自动补全 torch的相关代码
  • 全面嵌套边缘检测的pytorch代码 感谢帮助。 由XuanyiLi创建,如果您在使用时遇到任何问题,请联系: 。 我的pytorch模型的最佳结果现在是0.772 ODS F分数。 我的模型结果 以下是侧面输出和预测示例SGD no tunelr 1e-...
  • 一个用于人解析和车辆解析的pytorch代码库。 介绍 一个用于人解析和车辆解析的pytorch代码库。 要求 python≥3.6Linux或macOS PyTorch = 0.4.1 与Pytorch安装匹配的torchvision。 您可以在它们安装在一起以确保这...
  • 查看pytorch代码里面各层网络结构

    千次阅读 2020-06-08 16:17:08
    查看pytorch代码里面各层网络结构 直接print(model)
  • 这是一个yolov4_pytorch代码 没有实现所有trick,做了以下实现: 骨干:DarkNet53 => CSPDarkNet53 特征金字塔:SPP,PAN 训练:Mosaic数据增强,标签平滑,学习率余弦衰减衰减,CIOU 激活函数:Mish
  • Mean Maximum Discrepancy计算代码,分为线性核和高斯核两种,以pytorch书写的
  • 本文用于记录如何使 PyTorch 代码在后台运行,且运行指定 GPU。
  • hourglass网络详解+pytorch代码

    千次阅读 2019-09-16 13:52:16
    第三方pytorch代码(位于models/StackedHourGlass.py): https://github.com/Naman-ntc/Pytorch-Human-Pose-Estimation 1. 简介 该论文利用多尺度特征来识别姿态,如下图所示,每个子网络称为hourglass Network...
  • rasbt在Github上整理了关于深度学习模型TensorFlow和Pytorch代码实现集合,含有100个,各种各样的深度学习架构,模型,和技巧的集合Jupyter Notebooks,从基础的逻辑回归到神经网络到CNN到GNN等,可谓一网打尽,值得...
  • CVPR'19(非官方的PyTorch代码)未经处理的图像用于学习的原始降噪 本文的非官方PyTorch代码-未处理的图像,以供学习的原始降噪使用,CVPR'19,Tim Brooks,Ben Mildenhall,Tianfan Xue,Jiawen Chen,Dillon ...
  • 使用自监督学习方法DINO进行视觉变压器培训的PyTorch代码采用DINO的自监督视觉变压器PyTorch实施和DINO的预训练模型。 有关详细信息,请参阅自监督视觉变形器中的新兴属性。 [blogpost] [arXiv] [Yannic Kilcher的...
  • unet pytorch代码

    千次阅读 2018-12-24 18:53:27
    github link: https://github.com/gengyanlei/U_Net pytorch : 0.40 python3.5/3.6
  • @[TOC]Pytorch 代码移植嵌入式开发笔记 目前在做开发完成后的AI模型移植到前端的工作。 由于硬件设施简陋,需要把代码和算法翻译成基础加乘算法并输出每个环节参数。 记录几点实用技巧以及项目过程中的Trails & ...
  • (2020)Tensorflow代码重构成Pytorch代码

    千次阅读 多人点赞 2020-05-19 11:17:14
    最近应导师要求,需要把现有的tensorflow实现的代码改成pytorch版本的,具体代码不在此处说明(是涉及深度学习这块,需要搭建网络) 改完觉得真的是个体力活,数据预处理直接可以用,主要是任务这块的代码,照着...
  • pytorch代码中分析每一行的GPU内存使用情况 用法示例 python example_mnist.py 相依性 此代码取决于 。 点安装在这里可用: pip install py3nvml 使用pytorch版本0.4.0和py3nvml版本0.2.0进行了测试 致谢 gpu_...
  • 这篇博客记录我在学习《深度学习之PyTorch物体检测实战》一书中关于Faster RCNN这一算法的理解,以及pytorch代码的解读。 pytorch复现代码链接:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,102
精华内容 30,040
关键字:

pytorch代码