
深度学习
文章平均质量分 80
落花逐流水
从事人工智能,模式识别与智能系统
展开
-
深度学习做回归
任意四边形四个顶点坐标的回归可以理解成四个关键点检测,这四个关键点就是物体的四个顶点。(卡式证件的四个顶点)最近项目需要用到caffe来做关键点的回归,即通过caffe来训练一个网络,输出的结果不是简单地类别,而是一些坐标(浮点数)。下面的这篇博文对caffe做回归有一个比较好的介绍:http://www.cnblogs.com/frombeijingwithlove/p/5314042.html这篇博文使用的是HDF5+python的方式。而我采用的是直接修改caffe的.cpp文件,并重新编译的原创 2021-06-25 21:48:43 · 1464 阅读 · 1 评论 -
CTC Loss原理及实现
1、CTC 主要解决的问题CTC Loss要解决的问题就是当label长度小于模型输出长度时,如何做损失函数。一般做分类时,已有的softmax loss都是模型输出长度和label长度相同且严格对齐,而语音识别或者手写体识别中,无法预知一句话或者一张图应该输出多长的文字,这时做法有两种:seq2seq+attention机制,不限制输出长度,在最后加一个结束符号,让模型自动和gt label对齐;另一种是给定一个模型输出的最大长度,但是这些输出并没有对齐的label怎么办呢,这时就需要CTC loss原创 2021-05-17 19:07:25 · 3831 阅读 · 0 评论 -
多方向目标检测
最近在看多目标检测,顺便记录一下。常见检测模型:yolo系列、RCNN系列、SSD等。github链接:https://github.com/MingtaoFu/gliding_vertex《Gliding vertex on the horizontal bounding box for multi-oriented object detection》是华中科大白翔老师的新作,发表于2019年11月21号。该文章是用来做物体检测的,有意思的是发挥了白翔老师在OCR方面的特长。一般的物体检测都是使用一原创 2021-05-17 18:48:43 · 1454 阅读 · 0 评论 -
VGG网络
1、VGG模型介绍VGGNet是牛津大学VGG(Visual Geometry Group)视觉几何组于2014年撰写的论文中提出的卷积神经网络结构,VGGNet建立了一个19层的神经网络,在ILSVRC取得了定位第一、分类第二的成绩。VGGNet网络模型与AlexNet框架有很多相似之处,有5个Group的卷积,2层FC图像特征,1层FC分类特征。VGGNet是从AlexNet发展而来,主要进行了两方面的改进:(1)在第一卷积层使用更小的filter尺寸和间隔。(2)在整个图片和multi-sca原创 2021-05-08 18:35:43 · 1544 阅读 · 0 评论 -
mobilensetv3 各个框架的实现
0、论文与讲解mobilenet系列论文:mobilenetv1:MobileNets: Efficient Convolutional Neural Networks for Mobile VisionApplicationsmobilenetv2:Inverted Residuals and Linear Bottlenecks: Mobile Networks forClassification, Detection and Segmentationmobilenetv3: Searchi原创 2021-04-24 18:38:53 · 703 阅读 · 0 评论 -
深度学习模型量化、剪枝
1. 简介深度学习(Deep Learning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩、优化加速、异构计算等方法突破瓶颈。模型压缩算法能够有效降低参数冗余,从而减少存储占用、通信带宽和计算复杂度,有助于深度学习的应用部署,具体可划分为如下几种方法(后续重点介绍剪枝与量化):线性或非线性量化:1/2bits, int8 和 fp16等; 结构或非结构剪枝:deep compression, channel pruning 和 network slimmi原创 2021-04-15 09:03:29 · 4818 阅读 · 4 评论 -
CTC Loss
1、CTC 主要解决的问题CTC Loss要解决的问题就是当label长度小于模型输出长度时,如何做损失函数。一般做分类时,已有的softmax loss都是模型输出长度和label长度相同且严格对齐,而语音识别或者手写体识别中,无法预知一句话或者一张图应该输出多长的文字,这时做法有两种:seq2seq+attention机制,不限制输出长度,在最后加一个结束符号,让模型自动和gt label对齐;另一种是给定一个模型输出的最大长度,但是这些输出并没有对齐的label怎么办呢,这时就需要CTC lo原创 2021-03-28 19:18:21 · 1110 阅读 · 2 评论 -
RNN原理
网络结构及原理循环神经网络的基本结构特别简单,就是将网络的输出保存在一个记忆单元中,这个记忆单元和下一次的输入一起进入神经网络中。一个最简单的循环神经网络在输入时的结构示意图:RNN 可以被看做是同一神经网络的多次赋值,每个神经网络模块会把消息传递给下一个,我们将这个图的结构展开:根据循环神经网络的结构也可以看出它在处理序列类型的数据上具有天然的优势。因为网络本身就是 一个序列结构,这也是所有循环神经网络最本质的结构。我们可以用下面的公式来表示循环神经网络的计算方法:总结图原创 2021-03-25 23:14:56 · 562 阅读 · 0 评论 -
深度学习常见面试题(一)
1、网络中BN层的作用BN层的作用主要有三个:加快网络的训练和收敛的速度 控制梯度爆炸防止梯度消失 防止过拟合分析: (1)加快收敛速度:在深度神经网络中中,如果每层的数据分布都不一样的话,将会导致网络非常难收敛和训练,而如果把 每层的数据都在转换在均值为零,方差为1 的状态下,这样每层数据的分布都是一样的训练会比较容易收敛。 (2)防止梯度爆炸和梯度消失:以sigmoid函数为例,sigmoid函数使得输出在[0,1]之间,实际上当x道了一定的大小,经过sigmoid函数后输出原创 2021-03-23 13:54:08 · 277 阅读 · 0 评论 -
深度学习汇总
深度学习框架:caffe、tensorflow、pytorch、mxnet、paddlepaddle。其他深度学习相关框架或应用:tesseract、darknet.推理库:ncnn,tflite,mnn,tnn,paddlelite,onnx。常见模型:AlexNet、VGG Net、GoogleNet、ResNet、ResNeXt、R-CNN、YOLO、SqueezeNet、SegNet、GAN、、、、、、、模型种类:分类模型、检测模型、分割模型分类模型:Lenet、AlexNet、原创 2021-03-16 23:06:11 · 150 阅读 · 0 评论 -
卷积的分类与计算
1、普通卷积如上图所示输入:H*W*c1,卷积核:c1*k*k*c2(卷积核维度为c1*k*k,共有c2个)输出:H'*W'*c2参数量:c1*k*k*c2 (不考虑bias)运算量:c1*k*k*c2*H'*W'2、分组卷积(假设group=2)输入:H*W*c1卷积核:c1*k*k*c2(卷积核维度为c1*k*k,共有c2/2个)输出:H'*W'*c2参数量:c1*k*k*c2/2 (不考虑bias)运算量:c1/2*k*k*c2/...原创 2021-01-13 22:46:49 · 1925 阅读 · 0 评论 -
证明梯度的负方向是局部下降最快的方向
刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着梯度的反方向变动,函数值下降最快,但是究其原因的时候,很多人都表达不清楚。所以我整理出自己的理解,从方向导数这个角度把这个结论证明出来,让我们知其然也知其所以然~这次从最优化的角度切入来说明一下:当我们在某个要优化的函数,这里设为f(x) ,我们在x点处,然后沿方向 v进行移动,到达f(x+v),图示表示了移动过程:上图显示了从A点,移动到B点的过程。那么 v方向是什么的时候...原创 2021-01-13 22:29:40 · 859 阅读 · 0 评论 -
优化器及其更新方法
import torchimport torch.nn.functional as Fimport torch.utils.data as Dataimport matplotlib.pyplot as pltimport numpy as np1. 结合PyTorch中的optimizer谈几种优化方法这6种方法分为2大类:一大类方法是SGD及其改进(加Momentum);另外一大类是Per-parameter adaptive learning rate methods(逐参数...原创 2021-01-13 22:20:44 · 628 阅读 · 0 评论 -
深度学习面试题汇总
所有资源整理自网络。1、神经网络中,哪些方法可以防止过拟合?① Dropout ② 加L1/L2正则化 ③ BatchNormalization2、CNN关键层有哪些?① 输入层,对数据去均值,做data augmentation等工作 ② 卷积层,局部关联抽取feature ③ 激活层,非线性变化 ④ 池化层,下采样 ⑤ 全连接层,增加模型非线性 ⑥ 高速通道,快速连接 ⑦ BN层,缓解梯度弥散3、GRU是什么?GRU对LSTM做了哪些改动?GRU是Gated Recurrent原创 2021-01-13 15:45:16 · 479 阅读 · 0 评论 -
生成网络结构图
1、ConvNetDraw(卷积神经网络)链接:https://cbovar.github.io/ConvNetDraw/ConvNetDraw是一个使用配置命令的CNN神经网络画图工具,开发者是香港的一位程序员。这个使用简单的指令画卷积神经网络的图十分方便!模型顺序:输入-卷积-激活-池化-…(可能有若干个卷积、激活、池化)-全连接-softmax分类器-输出参考:深度学习法宝-常用神经网络画图工具、可视化工具参考:画出神经网络结构图参考:python 绘画神经网络结构图...原创 2020-11-07 23:17:56 · 2839 阅读 · 1 评论 -
Pytorch模型转Torchscript模型
TorchScript,它是PyTorch模型(子类nn.Module)的中间表示,可以在高性能环境(例如C ++)中运行。转换的方法有两种,一种是通过追踪转换另一种是通过注释转换。1、追踪转换常用的是追踪转换,但是这种方法有一个缺点,就是输入尺寸固定。官网给出的追踪的例子:import torchimport torchvision# An instance of your model.model = torchvision.models.resnet18()# An e原创 2020-09-17 10:43:18 · 3496 阅读 · 0 评论 -
libtorch c++调用 (五)Linux下的调用
libtorch下载地址:https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-1.5.1%2Bcpu.zip在linux系统下新建一个文件夹如:pytorch_test文件夹下新建一个文件:main.cpp,文件内容如下:#include <iostream>#include <torch/torch.h> using namespace std; int main(){原创 2020-09-08 10:23:16 · 3870 阅读 · 3 评论 -
关于深度学习中准确率与回调率的理解
对于检测任务,准确率可以理解为检测到的都是目标;回调率可以理解为是目标都检测到了。准确率 = 检测到的目标数量 / 检测结果的数量回调率 = 检测到的目标的数量 / 目标的总数量...原创 2020-08-16 16:56:18 · 1226 阅读 · 0 评论 -
GPU信息查看
今天在分析一些深度学习的问题,意外发现GPU显存不止深度学习会用到,连我们普通使用的 chrom浏览器、微信、windows图片查看器、360浏览器、windows资源管理器、office 等都会用到显存。一直还在想怎样这些显存是谁占用的,现在终于找到原因了,关闭这些程序,显存占用就降下来了。使用命令查看哪些进程占用显存:nvidia-smi.exe -l...原创 2020-06-29 15:41:25 · 5273 阅读 · 2 评论