自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(215)
  • 资源 (1)
  • 收藏
  • 关注

原创 相机标定&张正有标定法

1 相机标定概念在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。2 坐标系及成像几何

2021-12-07 19:06:18 3240

原创 java通过jni调用c++并联调

1 jni1.1 jni简介本节摘抄自:https://blog.csdn.net/qq_28261343/article/details/77971823JNI是Java Native Interface的缩写,中文翻译Java本地接口, 也有译为Java本地调用。JNI是Java语言中的一门强大的技术,由于Android上层采用Java语言实现,所以也可以在Android中使用这门技术。JNI技术主要是完成Java代码与native代码进行交互,简单说就是用Java代码调用native语言编写的

2021-11-25 17:00:47 1728

原创 End-to-End Object Detection with Transformers

论文:https://arxiv.org/abs/2005.12872代码:https://github.com/facebookresearch/detr0 摘要作者提出了一种新的目标检测算法,把目标检测问题当做set预测问题进行处理。简化了传统的使用CNN进行目标检测的处理过程,移除了NMS后处理过程和anchor提供的先验知识。算法的核心部分叫做DETR,使用Transformer(Encoder + Decoder)实现目标类别和位置的预测。在COCO数据集上的目标检测效果和效率与高度优化的F

2021-11-12 15:57:40 3694

原创 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

论文:https://arxiv.org/abs/2010.11929#代码:https://github.com/lucidrains/vit-pytorchhttps://github.com/likelyzhao/vit-pytorch1 核心思想应用ViT进行图像分类的处理过程:输入图像分块,原始图像为x∈RH×W×Cx \in R^{H \times W \times C}x∈RH×W×C,分块后为xp∈RN×(P2C)x_p \in R^{N \times (P^2 C)}xp​∈R

2021-11-02 11:45:02 588

原创 Attention is all you need

论文:https://arxiv.org/abs/1706.03762v5代码:https://github.com/jadore801120/attention-is-all-you-need-pytorch1 摘要序列转换模型一般基于RNN和CNN进行实现,包含了encoder和decoder,性能更好的模型还会在encoder和decoder之间使用attention模块进行连接。本文作者提出了一种新的称为Transformer的结构,完全使用attention块构建网络,不需要使用任何的RNN

2021-10-28 16:44:39 213

原创 RepVGG

论文:https://arxiv.org/pdf/2101.03697v3.pdf代码:https://github.com/DingXiaoH/RepVGGVGG式的推理模型,由3 * 3卷积块和ReLU激活函数组成。训练时用的是一个多分支的网络,然后通过结构re-parameter技术得到推理网络。因为用到了结构re-parameter,所以叫做RepVGG。1 简介复杂网络可以取得更高的识别精度,但是有如下缺点:复杂的多分支结构(ResNet中的残差直连通道、Inception中的多分支

2021-09-02 15:19:25 714

原创 C++可变形参实现

可变形参是指调用函数时参数的数量和类型可能发生变化。有三种方式定义函数的可变形参,分别是initializer_list、可变参数模板和省略符。initializer_list如果函数的实参数量未知但是全部实参的类型相同,可以使用initializer_list类型的形参。initializer_list是标准库类型,定义在<initializer_list>头文件中,用于表示某种特定类型的值的数组。支持的操作:操作含义initializer_list lst默认

2021-03-11 18:32:20 884 1

原创 Rethinking of Pedestrian Attribute Recognition: Realistic Datasets and A Strong Baseline

论文:https://arxiv.org/pdf/2005.11909v2.pdf代码:https://github.com/valencebond/Strong_Baseline_of_Pedestrian_Attribute_Recognition1 论文本文分析了行人重识别常用数据集PETA和RAP的缺陷,对数据集进行了修正,得到了PETAzsPETA_{zs}PETAzs​和RAPzsRAP_{zs}RAPzs​两个数据集。并且作者提出了强的baseline模型已经具有了很好的属性定位能力,无

2021-02-20 18:27:05 1655 5

原创 c++中的const

1 constconst表示常量,一旦创建之后就无法改变其值,所以const对象必须进行初始化。const对象只是限定一旦创建之后就无法改变其值,但允许使用普通变量/任意表达式初始化const变量,或用const变量初始化普通变量,如:int a = 3;const int d = a;int e = d;const int f = e * d;默认情况下,const变量仅在其定义的文件内有效。如果想要在不同的文件内共享同一个const变量,就需要在const变量的定义和使用的文件内都添加e

2021-02-16 16:49:22 119

原创 c++中的左值引用、右值引用和移动构造函数、移动赋值操作符

3.1 引用引用表示一个已存在对象的别名;一般变量初始化时,是将一个值复制到变量所在的内存中。而引用的初始化是将其绑定到一个对象,而不是将对象的初始值复制给对象,一旦初始化完成,引用就和对象一直绑定在一起。因此,引用不允许重新绑定,引用定义时必须进行初始化。定义一个引用后,对其进行的操作都是在其绑定的对象上进行操作的。3.1.1 左值 vs 右值左值(lvalue):指向指定内存的一个东西,生命周期是长久的,可以看作是一个容器;右值(rvalue):不指向任何地方的东西,生命周期是短暂的,可以看

2021-02-15 19:18:17 713

原创 二层网络及三层网络的子网掩码设置原则

1 网络基本知识推荐首先读下这篇文章,形象化的描述了各网络术语的含义:计算机主机网关的作用是什么?(转 )1.1 OSI七层网络模型对于物理层而言打交道的基本都是电信号和光信号,例如网卡、光纤、双绞线等都被归到物理层考虑;对于链路层,数据在离散电/光信号的基础之上,被逻辑划分成一帧一帧(Frame)来管理,这一层是数据交换的主要层面,交换的依据主要是网卡MAC地址,以太网(定义了一种帧格式)、交换机、集线器都划归这一层;网络层是比链路层更高一级的逻辑层,在这一层主要工作的是路由器,路由器基于I

2021-02-05 15:49:03 3889

原创 WSGI Server

1 WSGIWSGI是 Web Server Gateway Interface 的缩写,它是 Python应用程序(application)或框架(如 Django)和 Web服务器之间的一种接口,已经被广泛接受。它是一种协议,一种规范,其是在 PEP 333提出的,并在 PEP 3333 进行补充(主要是为了支持 Python3.x)。这个协议旨在解决众多 web 框架和web server软件的兼容问题。有了WSGI,你不用再因为你使用的web 框架而去选择特定的 web server软件。WSG

2021-01-26 11:21:20 4922

原创 flask入门学习

flask是用python编写的轻量级web应用框架。本文深度参考:https://dormousehole.readthedocs.io/en/latest/quickstart.html#quickstart1 最简单的flask应用最简单的flask应用如下述代码所示:from flask import Flaskapp = Flask(__name__)@app.route("/hello/")def hello(): return "hello world!"if __

2021-01-22 11:09:22 487

原创 python协程

本文深度参考自廖雪峰老师的网站:https://www.liaoxuefeng.com/wiki/1016959663602400/10179688466978241 协程协程(coroutine)的调用类似于子函数,即在函数A的执行过程中去执行子函数B,B执行完成后继续执行A。但使用协程实现的代码没有明显的函数调用。协程是用同一个线程在不同的函数间切换,随时中断一个函数的执行去执行另一个函数。其执行过程类似于下述方式:def A(): print('1') print('2')

2021-01-15 16:36:57 220

原创 模型剪枝三:Learning Structured Sparsity in Deep Neural Networks

论文:https://arxiv.org/abs/1608.03665代码:https://github.com/wenwei202/caffe/tree/scnn1 核心思想前面两篇文章https://blog.csdn.net/cdknight_happy/article/details/110953977和https://blog.csdn.net/cdknight_happy/article/details/111051396介绍的都是非结构化的剪枝,只是从每一层中移除了一些不重要的连接,但是

2020-12-17 16:25:33 1545

原创 模型剪枝二:Deep Compression

论文:https://arxiv.org/abs/1510.00149

2020-12-15 19:28:37 619

原创 模型剪枝一:Learning both Weights and Connections for Efficient Neural Networks

论文:https://arxiv.org/abs/1506.02626

2020-12-11 17:36:42 1161 2

原创 pyTorch模型部署--高并发web服务&c++&移动端ncnn

1 综述基于pyTorch的python接口训练的模型,一般会针对部署环境进行模型的转换。而深度学习模型的使用环境,一般会分成以python web服务的方式进行部署、以c++调用深度学习模型或针对移动式设备进行部署。2 以python web服务的形式进行部署在https://blog.csdn.net/cdknight_happy/article/details/100015592中,用docker + supervisor + nginx + gunicorn + flask的方式部署了深度学习

2020-12-01 09:13:26 5238 1

原创 pyorch代码封装成docker进行模型训练及通过tensorboard查看远程服务器内容器中的训练过程

1 镜像yolov5的训练代码中给出了生成docker镜像的Dockerfile,如下所示:# Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorchFROM nvcr.io/nvidia/pytorch:20.10-py3# Install dependenciesRUN pip install --upgrade pip# COPY requirements.txt .

2020-11-26 16:03:02 1544

原创 yolov4&v5训练代码理解

1 简介本文依据https://github.com/Tianxiaomo/pytorch-YOLOv4对YoloV4的模型训练和验证代码进行全面解析,理论部分可以参考:Yolo:https://blog.csdn.net/cdknight_happy/article/details/91793142YoloV4:https://blog.csdn.net/cdknight_happy/article/details/107883216GIOU:https://blog.csdn.net/cdkni

2020-11-24 08:38:53 3524 2

原创 pyTorch中的学习率衰减

1 学习率衰减深度学习模型训练过程中,经过一定的epoch之后,模型的性能趋于饱和,此时降低学习率,在小范围内进一步调整模型的参数,可以进一步提升模型的性能。经过多年的发展,也出现了多种学习率衰减算法,比如线性衰减、指数衰减、cosine衰减等,下面将pyTorch中提供的学习率衰减算法进行整理。2 PyTorch中的学习率衰减pyTorch官方介绍:https://pytorch.org/docs/stable/optim.htmltorch.optim.lr_scheduler提供了多种依据训

2020-10-30 13:59:18 3898

原创 SyncBN及其pyTorch实现

1 SyncBN原理1.1 BNBN操作可以描述成:y=x−E[x]var[x]+ϵ∗γ+βy = \frac{x - E[x]}{\sqrt{var[x] + \epsilon}}* \gamma + \betay=var[x]+ϵ​x−E[x]​∗γ+β使用BN的好处是:训练时在网络内部进行了归一化,为训练过程提供了正则化,防止了中间层feature map的协方差偏移,有助于抑制过拟合。使用BN,不需要特别依赖于初始化参数,可以使用较大的学习率,因此可以加速模型的训练过程。下面内容参考自:h

2020-10-30 09:09:12 7786 1

原创 CSPNet

论文:https://arxiv.org/pdf/1911.11929.pdf代码:https://github.com/WongKinYiu/CrossStagePartialNetworks

2020-10-22 16:37:55 1426

原创 pyTorch代码持续汇总(随机种子-容器-模型初始化-显存回收-数据转换)

1 查询版本信息import torchprint(torch.__version__) #查看pytorch版本信息print(torch.version.cuda) #查看pytorch所使用的cuda的版本号print(torch.backends.cudnn.version()) #查看pytorch所使用的cudnn的版本号print(torch.cuda.get_device_name(0)) #查看第一块显卡的名称2 模型训练效果复现pytoch官方文档:https://py

2020-10-15 14:53:19 1131

原创 Fine-Grained Visual Classification via Progressive Multi-Granularity Training of Jigsaw Patches

论文:https://arxiv.org/abs/2003.03836代码:https://github.com/PRIS-CV/PMG-Progressive-Multi-Granularity-Training1 摘要细粒度分类(Fine-Grained visual classification,FGVC)由于目标类内变化大,分类的难度更大。近期解决细粒度分类的主要思路是找出图像中最有判别力的区域或者是最互补的区域,或者是使用多粒度的特征进行分类。作者提出了一个新的思路,使用跨尺度的特征融合进行

2020-10-10 10:22:52 2618 7

原创 pytorch-autograd-optimizer-nn-DataSet-DataLoader-Save-Load等基本组件

2 AutogradpyTorch tensor记录着它们自己的由来,即由哪些父tensor和哪些操作生成了该tensor,因此可以通过链式法则自动推导输出相对于输入的梯度。在tensor的构造函数中,写明requires_grad=True或者使用requires_grad_函数可以设置记录该tensor的梯度。2.1 叶结点才有梯度pyTorch默认只对叶节点记录梯度,对于非叶节点默认是不保存其梯度的,如果想获取非叶节点的梯度,可以使用register_backward_hook或者retai

2020-09-29 18:31:22 473

原创 The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification

论文:https://arxiv.org/pdf/2002.04264.pdf代码:https://github.com/PRIS-CV/Mutual-Channel-Loss1 总体思路目标细粒度分类,由于子类别间的差异很小且类内差异很大,难度较普通图像分类更大。图1所示为细粒度图像分类数据集CUB-200[1]中的两个物种,加州鸥和北极鸥,从竖直方向的图片对比可以看出,两个不同物种长相非常相似,而从对比水平方向可知,同一物种由于姿态,背景以及拍摄角度的不同,存在较大的类内差异。 因此,要想顺利的对

2020-09-29 18:26:01 2335

原创 模型解释 -- Guided-Backpropagation、CAM、Grad-CAM、Grad-CAM++ 及 pyTorch Hook

1 pyTorch Hook本节内容引用自:https://zhuanlan.zhihu.com/p/75054200首先贴一段维基百科中对钩子的定义:钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。Hook 是 PyTorch 中一个十分有用的特性。利用它,我们可以不必改变网络输入输出的结构,方便地获取、改变网

2020-09-25 17:58:55 5872 7

原创 pytorch - tensor

1 tensor概念tensor是pyTorch的基本数据结构,可以表示任意维度的多维数组;pyTorch tensor可以和Numpy array无缝的互操作,pyTorch tensor相对Numpy array的优点是:tensor可以在Gpu上操作;tensor可以在多台设备上分布式运行;tensor可以记录其创建过程以便进行autograd操作。python list或tuple中存储的是单独分配在内存中的python对象的集合,而numpy array和pytorch tenso

2020-09-04 19:00:03 411

原创 DDP及其在pytorch中应用

1 分布式训练及其分类本部分内容引用自:https://zhuanlan.zhihu.com/p/72939003分布式训练是为了应用多卡显卡加速模型的训练,可以分为三类:按照并行方式分,可分为模型并行和数据并行;按照更新方式分,可分为同步更新和异步更新;按照算法来分,可分为Parameter Server和Ring AllReduce算法。数据并行 vs 模型并行:模型并行:模型大到单个显卡放不下的地步,就把模型分为几个部分分别放于不同的显卡上单独运行,各显卡输入相同的数据;数据并行

2020-08-27 19:18:41 11319 2

原创 pytorch混合精度训练

1 混合精度计算机中的浮点数表示,按照IEEE754可以分为三种,分别是半精度浮点数、单精度浮点数和双精度浮点数。三种格式的浮点数因占用的存储位数不同,能够表示的数据精度也不同。Signed bit用于控制浮点数的正负,0表示正数,1表示负数;Exponent部分用于控制浮点数的大小,以2为底进行指数运算;Significand部分用于控制浮点数的精度,存储浮点数的有效数字。从上图中可以看出,fp16、fp32和fp64具有不同的表示范围和数值精度,fp16数值范围和精度最低,存储空间也最小。fp

2020-08-27 11:13:49 7939 3

原创 激活函数总结

1 激活函数的作用神经网络的某一层的输入和权重进行内积操作后,需要经过激活函数进行变换处理。一般神经网络中用到的激活函数都是非线性函数,这是因为多个连续的线性变换仍然是输入的线性变换。使用非线性激活函数可以增强模型的拟合能力,经过多个非线性激活函数对输入的连续处理后,可以拟合任意复杂的变换过程,完成图像分类、检测等任务。1 饱和激活函数饱和激活函数是指在网络训练过程中,因为输入处于激活函数的饱和位置而有可能造成梯度弥散的激活函数,饱和激活函数包括了sigmoid、tanh和hard-sigmoid

2020-08-15 17:51:12 750

原创 CBN:Cross-Iteration Batch Normalization

论文:https://arxiv.org/abs/2002.05712代码:https://github.com/Howal/Cross-iterationBatchNormhttps://github.com/Howal/Cross-iterationBatchNorm/blob/master/mmdet/models/utils/CBN.py1 简介1.1 BNBN(Batch Normalization)在CNN的发展过程中起到了重要的作用,其主要是解决internel covariate

2020-08-14 18:54:11 437

原创 CBAM

论文:https://arxiv.org/pdf/1807.06521.pdf1 CBAM1.1 综述CBAM,Convolutional Block Attention Module,卷积块的注意力模块。即包含了时间注意力模块,也包含了空间注意力模型。时间注意力模块用于决定各滤波器的作用大小,空间注意力模块用于决定哪些图像位置包含我们感兴趣的目标。CBAM的输入是F∈RC×H×WF \in R^{C \times H \times W}F∈RC×H×W,先将输入和Mc∈RC×1×1M_c \in

2020-08-13 17:14:22 341

原创 Yolov4

论文:https://arxiv.org/abs/2004.10934代码:https://github.com/AlexeyAB/darknet1 简介YoloV4的主要贡献有:实现了高效准确的目标检测,可以在单块1080Ti或2080Ti显卡上完成高效准确的目标检测器的训练;验证了目标检测模型训练过程中诸多trick的有效性;修改了当前模型,使其更加适合于在单显卡上进行训练且训练效果更高。2 相关工作2.1 目标检测模型当前的目标检测器一般由两个组件组成,一是在ImageNet上

2020-08-11 17:42:34 726

原创 EfficientDet

论文:https://arxiv.org/pdf/1911.09070.pdf代码:https://github.com/google/automl/tree/master/efficientdet1 问题提出近年来的目标检测算法取得了很大的进步,但往往算法计算量很大,无法在机器人及自动驾驶领域应用。而单阶段、anchor free的算法和模型压缩又会损失检测精度。因此,作者提出能否针对不同的应用场景,构建可伸缩的检测架构以实现高效准确的目标检测?作者研究了一阶段目标检测算法的骨干网络设计、特征融合

2020-08-08 15:45:45 387

原创 GIOU、DIOU、CIOU

1 GIOU论文:https://arxiv.org/abs/1902.09630代码:https://github.com/generalized-iou/g-darknet1.1 摘要IOU是目标检测中的度量标准,但进行目标位置回归时一般使用的是L1L_1L1​或L2L_2L2​损失,作者证明了最小化这些损失并不等同于可以最大化IOU。因此,作者认为应该将最终的优化目标作为损失函数。但是普通的IOU在两个目标框不重叠时值为0,如果以它为损失函数此时反传的梯度为0,无法进行模型的训练。所以作者提出

2020-08-07 20:11:48 2098

原创 深度学习中常用的图像增广

1 过拟合及其解决方案机器学习中一个模型能够提供的信息一般来自于两个方面:训练数据中隐含的信息;模型训练过程中提供的先验信息。当训练数据不足时,来自于训练数据的隐含信息数量不足,就需要更多的先验信息才能保证模型的效果。先验信息可以作用在模型上,例如让模型采用特定的内部结构、条件假设或添加一些约束条件。先验信息也可以作用在数据集上,即根据特定的先验假设去调整、变换或扩展训练数据,让其展现出更多更有用的信息,以便于后续模型的训练或学习。在图像分类任务上,训练数据不足容易造成模型的过拟合。过拟合表现

2020-06-27 09:24:32 936

原创 ubuntu vscode c++生成so及调用调试so包

1 ubuntu vscode c++配置建议参考https://blog.csdn.net/weixin_43374723/article/details/84064644,介绍的很详细。参考vscode官方介绍https://code.visualstudio.com/docs/cpp/config-linux,补充说明下task.json和launch.json的区别:task.json表示编译时的配置项,生成默认task.json的操作是在某个cpp页面上使用快捷键ctrl+shift+p

2020-06-05 18:12:47 7993 3

原创 IOU-Net

论文:Acquisition of Localization Confidence for Accurate Object Detectionhttps://arxiv.org/abs/1807.11590代码:https://github.com/vacancy/PreciseRoIPooling1 问题提出目标检测一般分为两个过程,一是对proposal进行分类获取目标的类别信息,二是对proposal进行回归以得到目标的位置信息,最后对获取的检测结果根据IOU进行NMS处理得到最终的检测结果。

2020-06-03 10:02:12 324

算法导论PDF

《算法导论》,算法设计经典,你懂得,给需要的同学!

2013-07-30

空空如也

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

TA关注的人

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