深度学习+torch专栏
文章平均质量分 77
深度学习知识和pytorch的使用
@会飞的毛毛虫
计算机专业博士在读,曾在课题组负责过硬件、软件、算法及落地部署的开发工作,发表了几篇水文。主要方向是做跟踪、跨域的虚拟生成,致力于成为一名Full Stack developer。有相关问题可以私信我为大家解答,看到不妨点个关注,我们一起进步哦!
展开
-
小目标检测闲谈
在众多小目标检测方法中,最实用的方法通常包括以下几个方面:数据增广(例如Stitcher、copy-paste)以增加训练样本的多样性,使用放大输入图片的策略(如GAN放大再检测、将图像裁剪成patch再放大,如SAHI方法)来处理小物体,利用高分辨率的特征(如QueryDet[5])以捕捉更多小物体细节,或者专门为极小目标(原创 2023-10-19 09:42:34 · 243 阅读 · 0 评论 -
Pytorch之透过方法探究tensor背后深层含义
深度学习和机器学习是有很大区别的,博主认为,其最大的区别在于:机器学习每一个算法都有一个完整的理论体系,围绕这个完整的理论体系,衍生出一些能够完整使用的工具或包。只需要安装并使用这些工具,并对模型进行灵活的调参和优化就能达到一个很好的效果。 而深度学习对于一些工具(pytorch)的灵活使用或者代码理解要求是更高的,需要从算法架构本身入手来进行网络结构的调整和优化,才能让模型性能有一个比较好的表现。因此如果要对网络结构调整,则需要对工具有一个更深层次的理解,只有掌握tensor背后深层含义,才能灵活的原创 2022-05-18 11:55:14 · 748 阅读 · 1 评论 -
Opencv中的深度学习(人脸检测、车牌检测、DNN)
首先,无论是做检测还是DNN图像分类,所有的模型或配置文件都需要从以下三个网站中下载IT大牛们帮我们创建的各种分类器:# 人脸检测''' https://github.com/opencv/opencv/tree/master/data/haarcascades '''# googlenet caffemodel权重文件''' http://dl.caffe.berkeleyvision.org/ ''' # googlenet caffemodel配置文件''' https://gith原创 2022-03-03 11:01:39 · 8867 阅读 · 0 评论 -
YOLOX源码之demo.py逐行讲解
demo.py就是一个推理的脚本,告诉我们如何从头到尾的推理图像。首先进入make_parser()方法,就是熟悉一下参数解析器:def make_parser(): parser = argparse.ArgumentParser("YOLOX Demo!") """argparse.ArgumentParser是创建一个参数解析器,用以解析命令行的参数""" """parser.add_argument是往参数解析器里添加参数。该方法第一个参数为需要添加参数的简称,后面也可以原创 2022-02-18 19:49:57 · 10322 阅读 · 27 评论 -
ResNet变种(ResNet-B/C/D、Res2Net、ResNeXt、ResNeSt)
ResNet-B/C/DResNet-B:将残差分支的下采样移到后面的3×3卷积里,避免了信息的大量流失。因为原始1×1卷积既要降维又要降尺寸,信息流失比较严重,因此做一个解耦。ResNet-C:将输入部分的7×7卷积核替换为3个3×3卷积核,显著降低参数量和计算量。ResNet-D:在ResNet-B的基础上,做了一个解耦,将identity部分的下采样交给avg pool去做,避免出现1×1卷积和下采样同时出现造成信息流失。Res2Net理解多尺度目标:目标在输入图片里面原创 2021-11-01 11:57:32 · 7848 阅读 · 2 评论 -
卷积变种(常规卷积、空洞卷积、多尺度卷积、分组卷积、可分离卷积、DCN形变卷积)
卷积的目的:浅层:从输入图像中提取不同方面的特征,比如水平,垂直 ,边缘或对角线。深层:通过浅层特征的组合,提取更加抽象的高层语义特征或全局特征。卷积变化的目的:提高模型精度:对精度要求比较严格的场景。提高推理速度: 对实时性要求比较严格的场景。常规卷积计算方式:卷积核在输入特征图上滑动并计算内积超参数:kernel size:卷积核尺寸大小;padding:输入填充的圈数;stride:卷积核滑动步长。输出尺寸计算公式:空洞卷积目的:常规卷积感受野太..原创 2021-11-01 16:11:10 · 6919 阅读 · 0 评论 -
激活函数变种(Sigmoid、Hard-Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、SELU、ReLU6、Swish、Hard-Swish、Mish)
激活函数的作用:提供网络的非线性表达建模能力。线性可分数据:可以通过机器学习(感知机、SVM)找到的线性方程来进行划分。非线性可分数据:找不到一种线性方程来划分数据,此时需要引入非线性函数。什么样的激活函数是好的激活函数:有上界,无下界,连续,非单调,响应均值为0,无梯度消失和梯度爆炸,易于计算。Sigmoid图中,梯度软饱和表示区域零但是没有到0;输出均值不为0,则网络收敛较慢。Hard-SigmoidTanhHard-TanhReLULeaky ReLU(a为人为设置原创 2021-11-01 22:04:51 · 8319 阅读 · 5 评论 -
mmdetection2.17运行关键参数设置
自定义优化设置自定义pytorch支持的优化器:mmdetection官方已经支持使用PyTorch实现的所有优化器,唯一的修改是更改配置文件的优化器字段。例如,如果想使用ADAM(性能可能会下降很多),修改如下:optimizer = dict(type='Adam', lr=0.0003, weight_decay=0.0001)要修改模型的学习率,只需在optimizer的配置中修改lr。自定义训练时间表在默认情况下,mmd官方在1x schedule中使用步进学习率,也叫做St原创 2021-10-27 19:11:38 · 2493 阅读 · 0 评论 -
mmdetection2.17自定义模型及修改子模块
mmdetection2.17将模型分为5种类型,本文将围绕这五种类型逐一介绍如何自定义修改:backbone::用一个 FCN network(全卷积网络)去提取 featuremap, 比如:ResNet, MobileNet。neck: 是 backbones 和 heads 模块的中间部分, 比如: FPN, HRFPN, NASFCOSFPN等。head: 用于特定任务的模块,比如: bbox prediction 和 mask prediction。roi extractor: 从fe原创 2021-10-26 22:37:23 · 5494 阅读 · 22 评论 -
MMdetection2.17版本配置文件全面解读、自定义backbone及多尺度训练
配置文件结构在 config/_base _ 文件夹下有 4 个基本组件类型,分别是:数据集(dataset),模型(model),训练策略(schedule)和运行时的默认设置(default runtime)。许多方法,例如 Faster R-CNN、Mask R-CNN、Cascade R-CNN、RPN、SSD 能够很容易地构建出来。由 _base _ 下的组件组成的配置,被我们称为 原始配置(primitive)。对于同一文件夹下的所有配置,推荐只有一个对应的原始配置文件。所有其他的配原创 2021-10-21 14:07:32 · 3838 阅读 · 0 评论 -
Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
Dense:密集,指需要用很多的参数和anchor等Sparse:稀疏,指不需要用很多的参数和anchor等two-stage算法可以看成是one-stage算法的扩展:区别仅在于RPN输出的是二分类,而后者是多分类。原创 2021-10-13 12:39:15 · 5102 阅读 · 0 评论 -
Libra R-CNN: Towards Balanced Learning for Object Detection
论文基本信息标题: Libra R-CNN: Towards Balanced Learning for Object Detection作者: JiangmiaoPang, Kai Chen, Jianping Shi, Huajun Feng, Wanli Ouyang, Dahua Lin机构: Zhejiang University, The Chinese University of Hong Kong, SenseTime Research, TheUniversity of Sydn原创 2021-09-30 19:16:43 · 10290 阅读 · 0 评论 -
Cascade R-CNN: Delving into High Quality Object Detection(个人学习笔记)
论文基本信息标题:Cascade R-CNN: Delving into High Quality Object Detection作者:Zhaowei Cai,Nuno Vasconcelos机构:UC San Diego来源:CVPR2018时间:2017/12/03链接:https://arxiv.org/abs/1712.00726代码: https://github.com/zhaoweicai/cascade-rcnn(official code)https://papersw原创 2021-09-25 15:33:37 · 4620 阅读 · 0 评论 -
目标检测anchor base/anchor free/two stage/one stage的发展流程
目标检测的发展思路原始思路:切分后分类。如何解决边界物体无法检测的问题:如何解决定位不准确的问题:增加边界框回归任务如何解决目标的多尺度问题:两个方法:多尺度滑窗和图像金字塔。二者能达到相同效果,实现方法不同。以上过程存在的问题:需要分类的图像太多,效率低下。如何解决:SS算法。最后只生成几十个或者几百个提议框,只针对这几个框做分类和回归。于是产生了RCNN:首先通过区域提议找出可能包含物体的框,对于每一个提议区域,将其拉伸或者缩放到固定的尺寸,送入卷积神经网络得到其特征,最后通原创 2021-09-06 12:14:23 · 885 阅读 · 1 评论 -
目标检测之高清大图里面的小目标检测的难点和解决方案
在2019年发布的论文《Augmentation for small object detection》中给出了小目标的定义:忽略多尺度训练的因素及增加网络检测分支的情况以ResNet-50为backbone为例,网络的输入为640×640×3,经过FPN结构,最终输出的特征图的shape有:10×10、20×20、40×40、80×80、160×160,其中最小的特征图负责检测大目标,最大的特征图负责检测小目标。粗略的计算一下感受野 640÷160=4 ,因此每格特征图对应到原图的感受野是4×4原创 2021-07-08 10:24:00 · 8371 阅读 · 3 评论 -
ppyolov2的环境部署、训练及推理
依赖的环境cuda10.1 cudnn 7.6.5,vs2017整套软件都安装以及anaconda的环境变量。如果需要安装包及其他环境附加包,请私信,每日都会回复。一、ppyolov2的环境配置安装虚拟环境conda create -n paddle21 python=3.8conda activate paddle21 激活虚拟环境安装PaddlePaddle,可以进入下面这个网址,如果时windows10建议选择pip安装,https://www.paddlepaddle.org.cn/原创 2021-07-02 21:35:23 · 2375 阅读 · 13 评论 -
mmdetection2.6_Windows10版本配置、训练及推理
直接进入正题一.Mmdetection2.6的windows环境安装与测试二.Mmdetection的训练与测试Mmdetection的2.1,2.2,2.3的配置windows都不行,2.6可以很方便的配置。前提:CUDA需求10.1(首先要装CUDA),vs2017整个都要装以及anaconda的环境变量一.Mmdetection2.6的windows环境安装与测试① 安装pytorch及虚拟环境conda create -n mmd26 python=3.7conda activate原创 2021-07-02 13:01:15 · 5131 阅读 · 2 评论 -
Pytorch框架下使用Tensorboard可视化训练过程
>>>>>>>>>>>>>>>>本篇参考Pytorch官方所给教程,进一步对其进行细化 <<<<<<<<<<<<<原创 2021-02-08 19:52:52 · 2656 阅读 · 1 评论 -
使用Pytorch搭建ResNet分类网络并基于迁移学习训练
如果stride=1,padding=1,卷积处理是不会改变特征矩阵的高和宽使用BN层时,卷积中的参数bias置为False(有无偏置BN层的输出都相同),BN层放在conv层和relu层的中间复习BN层:Batch Norm 层是对每层数据归一化后再进行线性变换改善数据分布, 其中的线性变换是可学习的.Batch Norm优点:减轻过拟合;改善梯度传播(权重不会过高或过低)容许较高的学习率,能够提高训练速度。减轻对初始化权重的强依赖,使得数据分布在激活函数的非饱和区域,一定程度上解决..原创 2021-02-08 19:18:56 · 3284 阅读 · 8 评论 -
深度学习之pytorch常用函数个人笔记
pytorch最基本的操作对象是Tensor(张量),它表示一个多维矩阵,类似于numpy的ndarrays,其可在GPU上使用可以加速计算,和numpy类型转换也非常方便torch.nn为我们提供了成熟的层及一系列激活函数,可以像搭积木一样来非常快速的创建复杂的模型在pytorch中搭建模型的流程:定义类(该类要继承nn.Module),在类中实现两个方法:1.初始化函数:实现在搭建网络过程中所需要实现的网络层结构。2.在forward函数中定义正向传播的过程。创建一个层时,权重和偏..原创 2021-02-08 16:42:33 · 1880 阅读 · 3 评论 -
深度学习-图像处理之误差传播、权重更新及优化器
以三层的BP神经网络为例:输出如下:最后一层的激活函数统一用softmax,所以单独拎出来并没有写在里面。为什么要用softmax这个激活函数呢?原创 2020-11-22 12:20:01 · 4715 阅读 · 1 评论 -
从原论文解读ResNet原理及其Batch Normalization和迁移学习
ResNet在2015年由微软实验室提出,斩获了当年ImageNet竞赛中分类任务第一名,目标检测第一名,获得COCO数据集中目标检测第一名,图像分割第一名(啥也别说了,就是NB)。原文如下图,它的四个作者都是华人,在一些非常有名的深度学习文章中都能看到他们的名字。ResNet有这么几个亮点:超深的网络结构(突破1000层)、提出了残差模块,使用Batch Normalization(一种标准化处理)加速训练(丢弃dropout)。简单入个门:首先先看一个34-layer ResNet:其首先是一个卷积原创 2020-11-13 15:56:04 · 6180 阅读 · 0 评论 -
Inception模块
Inception网络或Inception层的作用是代替人工来确定卷积层中的卷积核类型,或者是否需要创建卷积层和池化层,可以代替你来做决定,虽然网络架构比较复杂,但网络表现却非常好。下图是Inception网络的核心:网络自行决定这些参数和卷积核及池化,你可以给网络添加这些参数的所有可能的值,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些卷积核组合。!下面两个操作的计算成本相差十倍:我们利用1×1卷积核把左边这个大的输入层压缩为这个较小的中间层,其只有16个通道,#注1×1×3原创 2020-11-11 21:29:30 · 9417 阅读 · 1 评论 -
计算机视觉之卷积神经网络原理
#必须要明白的地方:一个图片做卷积,结果也可以理解为另一张图片,这里的卷积和数字信号处理中的卷积千差万别。在信号类教材中,做元素乘积求和之前将卷积核沿对角线翻转也就是卷起来(不是旋转),之后再进行乘积求和,但在计算机视觉中跳过了这个镜像操作,这样可以简化代码并使得神经网络正常工作,从技术上讲,这里实际做的是互相关而不是卷积,在深度学习文献中,按照惯例,这里叫做卷积操作。!垂直检测核可以检测出垂直边缘,如果原始图像较小,检测出来的边缘较宽,但当图片较大时,可以很好的检测出来垂直边缘,水平同理。!在深度原创 2020-11-10 22:54:21 · 4618 阅读 · 1 评论 -
从原论文深度解析RCNN/FastR-CNN/Faster R-CNN理论
1.R-CNN(Region with CNN feature)R-CNN可以说是利用深度学习进行目标检测的开山之作,作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖。R-CNN这篇论文是在2014年提出的,在2014年之前,主流都是一些传统的目标检测算法,使用人为定义特征的方式进行检测,但那些年经典的目标检测算法已经进入了瓶颈期,其发展也非常的缓慢。在2014年,随着R-CNN的提出,将目标检测领域的准确度至少提高了30%,传统的的目标原创 2020-12-07 19:28:15 · 8850 阅读 · 6 评论 -
清晰明了的MobileNet
传统的卷积神经网络,内存需求大,运算量大,导致无法在移动设备及嵌入式设备上运行,之前的VGG-16模型的权重大概有490M,ResNet-152模型的权重大概有644M,这么大的模型参数基本上是不可能在移动设备和嵌入式设备上进行运行的,而做深度学习最终是为了服务社会而不是简单的在实验室玩,MobileNet网络就实现了让深度学习网络在移动设备中进行运行。MobileNet网络是有google团队在2017年提出的,是专注于移动端及嵌入式设备中的轻量级网络,相比传统卷积神经网络,在准确率小幅降低的前提下大.原创 2020-12-05 19:43:31 · 5479 阅读 · 0 评论 -
清晰明了的VGG网络及感受野
VGG在2014年由牛津大学著名研究组VGG(Visual Geo’metry Group)提出,斩获该年ImageNet竞赛中Localization Task(定位任务)第一名和Classifiction Task(分类任务)第二名。下图是从VGG网络的原论文中截取出来的:这个网络给了我们六个VGG网络的一个配置,在这六个配置当中作者尝试了不同的层数,还尝试是否去使用LRN局部响应归一化,以及尝试去对比卷积核大小为1和卷积核大小为3的效果。但在我们平时使用的过程中,常常使用的是D这个配置,也就是16原创 2020-11-28 21:40:26 · 1696 阅读 · 0 评论 -
清晰明了的AlexNet网络结构
AlexNet是2012年ISLVRC 2012竞赛的冠军网络,分类准确率由70%提升到了80%,在当时由于瓶颈期,提升百分之十是令人印象非常深刻的,这个网络的设计者是Hinton和他的学术Alex Krizhevsky,也是从这一年以后,深度学习就开始迅速发展。下图是从AlexNet网络的论文中截取而来:该网络的两点在于:1>首次利用GPU进行网络加速;2>使用了ReLU激活函数,而不是传统的Sigmoid激活函数(求导的过程中比较麻烦且当网络比较深的时候会出现梯度消失的现象)以及.原创 2020-11-23 22:21:49 · 2195 阅读 · 0 评论