深度学习
文章平均质量分 62
zsffuture
hello world
展开
-
深度学习c++部署高性能优化的技巧
图片预处理的高性能实现int input_batch = 1; int input_channel = 3; int input_height = 224; int input_width = 224; int input_numel = input_batch * input_channel * input_height * input_width; float* input_data_host = nullptr; float* input_data原创 2022-05-28 14:57:05 · 628 阅读 · 0 评论 -
ViT (Vision Transformer) ---- Vision Transformer
正在上传…重新上传取消原创 2022-01-05 21:15:00 · 693 阅读 · 4 评论 -
ViT (Vision Transformer) ---- Transformer Model(2)
上一节详细的介绍了transform的组件,本节就通过组件进行组装transformSelf-attention层:简化:多头self-attention上面是单头self-attention,由单个的self-attention组成多头self-attention,如下:使用n个单头self-attention,不共享参数,进行堆叠,把输出的上下文C进行concat连接假如单头的self-attention的输出是d维向量,输出m个上下文C,那么组成的矩阵为dxm的C向量原创 2022-01-04 23:00:00 · 490 阅读 · 0 评论 -
ViT (Vision Transformer) ---- Transformer Model(1)
transform是2017年提出来的,当时横扫NLP领域的多个任务,Vaswani et al. Attention Is All You Need. In NIPS,2017.transform模型是Seq2Seq模型transform不是RNNtransform是基于attention机制和全连接层的这里通过最初的基于RNN的Seq2Seq模型,到基于RNN+attention的Seq2Seq模型,在到把RNN去掉全部基于attention的Seq2Seq模型,然后transfor原创 2022-01-04 22:00:00 · 871 阅读 · 0 评论 -
ViT (Vision Transformer) ---- SimpleRNN + Self-Attention
首先attention第一次是在2015年应用在Seq2Seq模型上的,该模型有两个网络一个是Encoder,一个是decoder,后来研究者们发现,attention不仅仅可以应用到Seq2Seq模型上,还可以应用到所有的RNN模型上,该研究是在2016年发表的一篇文章,比attention晚一年(Cheng, Dong, & Lapata. Long Short-Term Memory-Networks for Machine Reading. InEMNLP, 2016),这篇论文是把atte原创 2021-12-30 21:30:00 · 914 阅读 · 2 评论 -
ViT (Vision Transformer) ---- Seq2Seq
对于seq2seq模型,网上很多文章直接就把抽象模型拿出来,这样对初学者很不友好,这里采用例子进行阐述,最后在通过抽象模型理解英语翻译成德语这个网站有很多的数据集Tokenization 和创建字典Tokenization因为是翻译任务,因此需要构建两个input_texts和两个target_texts,即如下:对于两种语言使用两种不同的tokenizers,构建两个不同的字典,为什么构建两个字典呢?Tokenization 可以是字符级的也可以是单词级字原创 2021-12-23 22:00:00 · 467 阅读 · 0 评论 -
ViT (Vision Transformer) ---- Text Generation(文本生成器)
使用RNN对文本预测假如输入的文本是:the cat sat on the ma 那么下一个字符什么呢?这里采用的是many to many模型,如下:此时模型的输出字符概率为:如何训练RNN模型?如上一段英语文字,我们采用分割的方法,这里采用输入的长度为40,滑动距离为3,即从开始到第40个字符用作输入,第41个字符用作标签数据label,如上:输入为:Machine learning is a subset of artifici label为:a...原创 2021-12-23 21:00:00 · 1285 阅读 · 1 评论 -
ViT (Vision Transformer) ----LSTM网络
LSTM是对RNN的改进,主要改进RNN的梯度消失的问题即长依赖问题,那么具体如何解决的呢?由上图可以发现增加了三个门,那么这三个门是如何解决长依赖问题的呢?LSTM最大的设计就是传输带C,就是通过传输带的设计避免梯度的消失,lstm存在很多门,可以让信息选择性通过遗忘门举个例子得到遗忘门的输出f后,在和传输带的c向量相乘那么遗忘门的功能主要体现在哪里呢?通过例子可以看出,遗忘门的输出f是0-1的概率值,乘上传输带c就可以控制传输带信息的流入量,该f值的获取荣光如下原创 2021-12-22 23:00:00 · 1728 阅读 · 0 评论 -
ViT (Vision Transformer) ---- RNN
1.one to one 模型如何对时序数据建模?人类大脑在阅读时,并不是把一段文字看完在思考,而是边思考变阅读,随着看完后就积累了整段文字的大意,因此处理时序数据就不能使用one to one 模型什么是one to one模型? 一个输入对应一个输出,例如输入一张图片,输出类别概率值,one to one 适应图片,但是不适应文件,因为文本的输入不固定,输出也不固定,一句话可长可短,翻译时输出也是可长可短,因此one to one模型不适合时序数据,适合时序数据的模型应该是 m.原创 2021-12-22 22:30:00 · 796 阅读 · 0 评论 -
CenterNet原理详解
CenterNet是在2019年论文Objects as points中提出,相比yolo,ssd,faster_rcnn依靠大量anchor的检测网络,CenterNet是一种anchor-free的目标检测网络,在速度和精度上都比较有优势,值得学习下。对于CenterNet的理解主要在于四方面:网络结构,heatmap生成,数据增强,loss函数理解。1. CenterNet网络结构 除了检测任务外,CenterNet还可以用于肢体识别或者3D目标检测等,因此CenterNet论文中提出了转载 2021-06-03 11:06:13 · 34064 阅读 · 7 评论 -
pytorch经常使用的代码(持续更新)
Dataset自定义VOC2012数据集代码from torch.utils.data import Datasetimport osimport torchimport jsonfrom PIL import Imagefrom lxml import etreeclass VOC2012DataSet(Dataset): """读取解析PASCAL VOC2012数据集""" def __init__(self, voc_root, transforms, txt原创 2021-05-13 15:19:40 · 1060 阅读 · 0 评论 -
pytorch常见错误(持续更新)
1. nn.Module.cuda() 和 Tensor.cuda() 的作用效果差异无论是对于模型还是数据,cuda()函数都能实现从CPU到GPU的内存迁移,但是他们的作用效果有所不同。对于nn.Module:model=model.cuda()model.cuda()上面两句能够达到一样的效果,即对model自身进行的内存迁移。对于Tensor:和nn.Module不同,调用tensor.cuda()只是返回这个tensor对象在GPU内存上的拷贝,而不会对自身进行改变...原创 2021-04-02 16:37:55 · 1619 阅读 · 0 评论 -
实例分割和语义分割使用labelme制作的数据集如何转换为voc和coco格式的数据
1.首选使用labelme进行数据集制作,制作完成后,会获取到图片和.json的文件,如下:2.转换数据集为coco或者voc数据集其实官方已经提供了,转换一个实例的代码,但是没有批量的转换代码,于是网上很多批量转换代码,其实呢,官方作者已经完成了转换代码,大家可以去官网看看:labelme官网,从官网获取两个文件:labelme2coco.py和labelme2voc.py,使用方法,作者有教程,大家研究一下,我这里以转换为voc数据集为例实现一下:./labelme2voc.py da原创 2021-03-31 18:03:59 · 4687 阅读 · 3 评论 -
pytorch图片数据归一化,通常传入transforms.Normalize(mean,std,inplace=False)中的mean和std是如何获取的?
pytorch做标准化利用transforms.Normalize(mean_vals, std_vals),其中常用数据集的均值方差有:if 'coco' in args.dataset: mean_vals = [0.471, 0.448, 0.408] std_vals = [0.234, 0.239, 0.242]elif 'imagenet' in args.dataset: mean_vals = [0.485, 0.456, 0.406] std_val...原创 2021-03-25 13:31:13 · 2464 阅读 · 3 评论 -
conda创建的环境,打包下载,然后在其他设备离线安装环境,python部署时需要依赖,通过conda一步解决依赖迁移问题
首先,我们通过conda创建虚拟环境,搭建深度学习环境,但是开发好以后,在一些没有实时性要求的场景,我们不需要使用c++部署,通过python端部署即可,同时有的大的框架,python端部署效率已经很高了,因此可以直接使用python进行部署,那么如果我们部署到不同的服务器上,安装依赖需要联网,但是有时环境无法联网,因此需要离线安装,同时有的依赖很多,很繁琐,如何解决这些问题呢?其实conda已经把这些都做好了,只需要把conda创建的环境打包即可,然后解压到新的环境里即可直接使用了,具体步骤如下:原创 2021-03-23 11:27:56 · 8484 阅读 · 1 评论 -
制作 tusimple 数据集格式的数据
1、tusimple 数据集介绍标注json文件中每一行包括三个字段 :raw_file :每一个数据段的第20帧图像的的path 路径lanes和h_samples是数据具体的标注内容,为了压缩,h_sample是纵坐标(等分确定),lanes是每个车道的横坐标,是个二维数组。-2表示这个点是无效的点。标注的过程应该是,将图片的下半部分如70%*height等分成N份。然后取车道线(如论虚实)与该标注线交叉的点上面的数据就有4条车道线,第一条车道线的第一...原创 2021-02-22 16:18:21 · 3901 阅读 · 9 评论 -
车道线数据集
常用的公开车道线数据集合 ApolloScape 论文:The ApolloScape Open Dataset for Autonomous Driving and its Application 简介: 百度2018年公开(CVPR2018 workshops),包含多种道路目标的语义标签(车辆、车道等等),同时也有3D点云信息 评估准则:mAP CULane 论文:Spatial as deep: Spatial CNN for traffic scene unde..原创 2021-02-20 14:18:59 · 4200 阅读 · 0 评论 -
使用vs2019对yolov5 进行libtorch release版本转换出现的各种错误总结
前几天的文章主要解决了libtorch的debug版本,这几天需要release版本,因此重新进行了转换,下面系统的把我目前的环境说明一下。cuda和cudnn的版本:cuda_10.1.243_426.00_win10.exe,cudnn-10.1-windows10-x64-v7.6.5.32.zip,大家可以到这里下载https://developer.nvidia.com/cuda-toolkit-archive,我用的是下面的:pytorch的版本pytorch-1.7..原创 2021-01-14 15:49:36 · 2553 阅读 · 3 评论 -
使用vs2019编译 c++ libtorch 的 yolov5项目出现的问题,尤其是 Microsoft C++ 异常: c10::Error,位于内存位置 0x0000000D606FE350
cv::cvtColor(img, img, cv::COLOR_BGR2RGB); // BGR -> RGBimg.convertTo(img, CV_32FC3, 1.0f / 255.0f); // normalization 1/255auto imgTensor = torch::from_blob(img.data, { 1, img.rows, img.cols, img.channels()}).to(device_type);imgTensor = imgTens...原创 2020-12-30 12:16:17 · 9739 阅读 · 29 评论 -
使用cmake和vs2019进行编译libtorch过程
cmake编译最近使用LibTorch在调用分类模型,在配置环境时,用到了1.4版本的PyTorch,按照网上的一些教程无法成功,便把自己部署成功的经验分享出来。1. 从官网下载已经编译好的LibTorch库官网地址:(https://pytorch.org/)根据自己的环境可以下载GPU版和CPU版。2. 使用cmake命令创建项目,失败!安装使用可参考官网文档:https://pytorch.org/cppdocs/installing.html遇到的问...转载 2020-12-29 08:57:45 · 3690 阅读 · 0 评论 -
win10安装pytorch很慢,如何解决?
网上大多数各种换源,但是针对pytorch的安装还是不行,其实清华的源是专门有为pytorch预留的源,因此只有设置一下即可,如下:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/...原创 2020-12-24 18:05:17 · 772 阅读 · 1 评论 -
从xml数据集到FairMOT数据集转换
这是我写的数据集,大家需要修改路径即可,当然希望大家可以看一下转换思路,以后就会转换啦,授之以鱼不如授之以渔"""把UA-DETRAC数据集制作FairMOT数据集的格式,以此进行训练FairMOT数据集的格式: class、id、x_center/img_width、y_center/img_height、w/img_width、h/img_height class :目标类别 id :目标id x_cent原创 2020-12-08 15:17:11 · 1546 阅读 · 2 评论 -
FairMOT论文详解
FairMOTFairMOT FairMOT介绍 Two-step方法 One-shot方法 The Technical Approach backbone Detection Branch Heatmap Head Center Offset Head Box Size Head Identity Embedding Branch Loss Functions Heatmap Loss Offset and Size Loss Identity Embedding Los.转载 2020-12-08 14:46:38 · 15485 阅读 · 0 评论 -
CenterNet :Objects as Points 详解
论文题目:Objects as Points ...转载 2020-12-01 16:53:06 · 970 阅读 · 0 评论 -
Focal loss原理解析
Focal Loss for Dense Object DetectionICCV2017RBG和Kaiming大神的新作。论文目标我们知道object detection的算法主要可以分为两大类:two-stage detector和one-stage detector。前者是指类似Faster RCNN,RFCN这样需要region proposal的检测算法,这类算法可以达到很高的准确率,但是速度较慢。虽然可以通过减少proposal的数量或降低输入图像的分辨率等方式达到提速,但是速度并.转载 2020-12-01 16:43:21 · 7828 阅读 · 3 评论 -
多目标跟踪评价标准(MOT)
简介:MOTChallenge是多目标跟踪领域最为常用的benchmark,其中2D MOT15,3D MOT15,MOT16,MOT17,MOT20都是多目标跟踪领域常用的数据集。下面我们按照MOTChallenge中的评价标准进行介绍,当然MOTChallenge也主要参考《Evaluating Multiple Object Tracking Performance: The CLEAR MOT Metrics》评价指标:总结CLEAR MOT Metrics认为一个好的多目标跟踪器转载 2020-11-27 10:27:09 · 7773 阅读 · 2 评论 -
编译DCNv2网络:error: command ‘C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v10.0\\bin\\nvcc.exe‘
在复现FairMOT时编译DCNv2出现了一个错误 error: command 'C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v10.0\\bin\\nvcc.exe' failed with exit status 2,编译时会出现一大串东西,只要不报错都是可以的,具体什么原因,暂时不清楚,但是如果编译出现了这个问题,不是你的环境问题,也不是版本问题,是编译时一个头文件出问题了,只需要把这个头文件替换一下即可执行,出错图片如下:原创 2020-11-20 14:05:20 · 9993 阅读 · 15 评论 -
深度学习 --- 优化入门三(梯度消失和激活函数ReLU)
前两篇的优化主要是针对梯度的存在的问题,如鞍点,局部最优,梯度悬崖这些问题的优化,本节将详细探讨梯度消失问题,梯度消失问题在BP的网络里详细的介绍过(兴趣有请的查看我的这篇文章),然后主要精力介绍RuLU激活函数,本篇还是根据国外的文章进行翻译,然后再此基础上补充,这样使大家更容易理解,好,那就开始了:分布,该死的分布,还有统计学不同于之前的机器学习方法,神经网络并不依赖关于输入数据的任何...原创 2018-12-01 12:31:08 · 12356 阅读 · 5 评论 -
深度学习 --- 玻尔兹曼分布详解
上一节我们从Hopfield神经网络存在伪吸引子的问题出发,为了解决伪吸引子带来的问题,详细介绍了模拟退火算法,本节也是基础性的讲解,为了解决伪吸引子还需要引入另外一个重要概念即:玻尔兹曼分布。本篇将详解玻尔兹曼分布,但是还是先说说为什么要引入玻尔兹曼分布,因为为了解决Hopfield神经网络的伪吸引子的问题,引入模拟退火算法和玻尔兹曼分布,下一节将在Hopfield神经网络中加入这两个算法,组合...原创 2018-11-17 12:08:47 · 27902 阅读 · 1 评论 -
深入理解注意力机制(Attention Mechanism)和Seq2Seq
学习本部分默认大家对RNN神经网络已经深入理解了,这是基础,同时理解什么是时间序列,尤其RNN的常用展开形式进行画图,这个必须理解了。这篇文章整理有关注意力机制(Attention Mechanism)的知识,主要涉及以下几点内容:1、注意力机制是为了解决什么问题而提出来的?2、软性注意力机制的数学原理;3、软性注意力机制、Encoder-Decoder框架与Seq2Seq4...原创 2019-06-04 19:05:21 · 48024 阅读 · 10 评论 -
2018年度总结和2019年度计划
回顾20182018这一年基本上按照2017年的预定计划完成了任务,制定的计划基本都完成了,少部分还在继续,期间收获了很多也失去了很多,得失在于自己的权衡,总体来说是收获的较多。2017年7月份开始系统学习AI方面的内容,之前一直在关注这个行业,因为和我的专业很相近,因此开始是从机器学习开始的,刚开始学习确实挺难的,这就需要个人的学习能力和理解能力以及学习安排了,同时也和个人的执行能力,自我管...原创 2019-01-06 15:37:40 · 5900 阅读 · 10 评论 -
深度学习 --- 径向基神经网络RBF详解
上一节我们基本上打开了深度学习的大门,其实下一步应该是卷积神经网络即CNN了,但是呢卷积神经网络的最后一层采用的是径向基神经网络,为了以后到CNN不用再费力气将RBF和保持CNN的整体性和连贯性,因此这里我们系统的学习一下,讲解之前我们还是先好好回顾我们的总体学习思路,首先我们从BP神经网络开始,介绍了BP的优缺点和改良思路,后面就开始介绍Hopfield神经网络,该网络是从动力能量角度进行建模的...原创 2018-11-25 12:45:50 · 101169 阅读 · 21 评论 -
深度学习 --- 基于RBM的深度置信网络DBN-DNN详解
上一节我们详细的讲解了受限玻尔兹曼机RBM的原理,详细阐述了该网络的快速学习原理以及算法过程,不懂受限玻尔兹曼机的建议先好好理解上一节的内容,本节主要讲解的是使用RBM组成深层神经网络的深度置信网络DBN(Deep Belief Network),但是该网络效果并没有那么理想,hinton在此基础上加入反向传播算法即DNN,使的效果要比DBN好太多了。为什么会有这么好的效果呢?通过前面几节受限玻尔...原创 2018-11-24 12:40:03 · 7699 阅读 · 9 评论 -
深度学习 --- 受限玻尔兹曼机RBM(马尔科夫过程、马尔科夫链)
上一节我们详细的探讨了玻尔兹曼机,玻尔兹曼机的发明是为了解决Hopfield神经网络的伪吸引子的问题,因此把退火算法、玻尔兹曼分布和Hopfield神经网络结合在一起形成了玻尔兹曼机(随机神经网络)。通过前面几节我们知道玻尔兹曼机可以很好的解决Hopfield神经网络的伪吸引子的问题,但是带来的另外一个大问题就是计算量太大了,训练周期长,因此Hinton和Sejnowski于198...原创 2018-11-20 11:46:20 · 4453 阅读 · 2 评论 -
深度学习 --- 受限玻尔兹曼机详解(RBM)
本节终于来到了重头戏受限玻尔兹曼机,为了能深入理解本节,我们深入讲了很多基础知识,这些基础知识很重要,是理解本节的基础,同时也是你学习其他算法的基础如强化学习、自然语言处理等。本节的安排是先对比一下受限玻尔兹曼机和玻尔兹曼机的区别,然后使用形式化语言讲一下学习过程和使用过程,最后 我们在逐一展开详细讲解,本节需要大家有点数学和概率论的基础当然矩阵知识也是需要一点的,这里的快速学习算法是CD(对比散...原创 2018-11-23 12:38:20 · 62201 阅读 · 27 评论 -
深度学习 --- Hopfield神经网络详解
前面几节我们详细探讨了BP神经网络,基本上很全面深入的探讨了BP,BP属于前馈式类型,但是和BP同一时期的另外一个神经网络也很重要,那就是Hopfield神经网络,他是反馈式类型。这个网络比BP出现的还早一点,他的学习规则是基于灌输式学习,即网络的权值不是通过训练出来的,而是按照一定规则计算出来的, Hopfield神经网络就是采用了这种学习方式,其权值一旦确定就不在改变,而网络中各...原创 2018-11-14 11:15:31 · 68835 阅读 · 12 评论 -
深度学习 --- 受限玻尔兹曼机RBM(直接采样、接受-拒绝采样、重要性采样详解)
在讲解MCMC和Gibbs采样之前,大家需要理解统计学中的采样,什么是采样?为什么要采样?采样有什么用?大家需要深入理解采样的原理,深入理解的好处不仅容易理解下面的MCMC和Gibbs采样,也更容易掌握统计学中的一种重要的统计手段,这个技术在现代统计学中很重要,因此掌握它以后在遇到采样也不用怕了,因为一旦深入理解了,无非是更好的采样方法吧了,其本质不会变,我在刚学的时候,就被这些搞得云里雾里,这次...原创 2018-11-21 10:38:15 · 3811 阅读 · 6 评论 -
深度学习 --- 随机神经网络详解(玻尔兹曼机详解)
前两节我们详细讨论了退火算法和玻尔兹曼分布,本节将使用这两个算法和Hopfield神经网络结合构成新的神经网络即随机神经网络又叫玻尔兹曼机,这个神经网络是模拟能量的特性,从能量角度出发,构造和能量过程类似的神经网络,之所以这样构建和Hopfield神经网络有很大的关系,稍后我们会看到和Hopfield神经网络的异同点。另外这个神经网络不具有实用性,因为计算量太大了,但是我们为什么还要...原创 2018-11-18 12:44:16 · 20951 阅读 · 13 评论 -
深度学习 --- 随机神经网络详解(玻尔兹曼机学习算法、运行算法)
BM网络的学习算法(1) 学习过程 通过有导师学习,BM网络可以对训练集中各模式的概率分布进行模拟,从而实现联想记忆.学习的目的是通过调整网络权值使训练集中的模式在网络状态中以相同的概率再现.学习过程可分为两个阶段;第一阶段称为正向学习阶段或输入期,即向网络输入一对输人输出模式,将网络输人输出节点的状态“钳制”到期望的状态,而让隐节点自由活动,以捕捉模式对之间的对应规律;第...原创 2018-11-19 10:34:25 · 5486 阅读 · 4 评论 -
深度学习 --- 模拟退火算法详解(Simulated Annealing, SA)
上一节我们深入探讨了,Hopfield神经网络的性质,介绍了吸引子和其他的一些性质,而且引出了伪吸引子,因为伪吸引子的存在导致Hopfield神经网络正确率下降,因此本节致力于解决伪吸引子的存在。在讲解方法之前我们需要再次理解一些什么是伪吸引子,他到底是如何产生的?简单来说说就是网络动态转移过程,状态掉进了局部最优解里了,就是能量函数没有达到最低,只是掉进了局部能量最低的状态,这和我们梯度容易...原创 2018-11-16 11:46:37 · 180988 阅读 · 19 评论