深度学习
文章平均质量分 86
胖胖大海
这个作者很懒,什么都没留下…
展开
-
基于LangChain实现的知识库问答工具Langchain-Chatchat
其中,–model_name_or_path对应基座模型的路径,–checkpoint_dir对应LoRA微调之后保存的参数李静,–export_dir对应合并之后保存的路径。该脚本将会将所有config目录下的配置文件样例复制一份到config目录下,方便开发者进行配置。接着,开发者可以根据自己的需求,对配置文件进行修改。配置与知识库相关的参数,包括知识库的名称,使用的向量数据库类型,文本拆分策略,采用哪种分词器等。基于query文本检索不到知识库中对应的上下文内容,导致模型回复的内容不准确。原创 2023-11-29 20:15:29 · 2868 阅读 · 4 评论 -
pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed模型训练
pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed(环境没搞起来)模型训练代码,并对比不同方法的训练速度以及GPU内存的使用原创 2023-11-17 22:19:56 · 4369 阅读 · 2 评论 -
FlashAttention计算过程梳理
其中,全连接层和根据注意力权重的加权求和其实都是通过矩阵乘法实现的,所以分块计算可以通过矩阵的分块乘法来实现。由于softmax的分母部分需要计算全局元素的求和,分块之后只能计算局部的和,导致softmax的分块计算变得复杂。现在softmax的分母已经被更新成了全局的结果,现在就要把分子也更新成全局的结果就行了。关于第 6 步的公式是怎么得到的,我们把第 6 步的公式拆解为两部分,现在我们计算到了第二块数据。,继续迭代下去,直到完成所有数据块的计算,这样就得到了全局的softmax结果。原创 2023-10-17 19:44:00 · 900 阅读 · 0 评论 -
Transformer Block运算量
所以,一个Transformer Block中总的乘法运算量是:HW * C1 * C2 + HW * C1 * C2 + HW * C1 * C1 + HW * HW * C2 + HW * HW * C1 + HW * C1 * C1。为了简单起见,假设C1 = C2 = C,那么总的乘法运算量是:4 * HW * C * C + 2 * HW * HW * C。备注:上述计算过程不包含Layer Nor和Softmax。备注:C1可以不等于C2。备注:C1可以不等于C2。原创 2023-06-10 22:07:39 · 1404 阅读 · 0 评论 -
《Attention is all you need》Pytorch源码各模块输入输出详解
关于Transformer架构和原理解析的优秀文章有好多,这里列出一些供大家参考学习。本篇也就不对Transformer的结构和原理进行解读了(肯定没他们解读的好)。上述参考文献足以让一个初学者完全了解transformer的架构及原理了。本文从代码实现的角度来看一下transformer的核心架构中的每个模块的具体实现方式,希望以此能对transformer架构有更深入的了解。本文参考的实现代码来自于。原创 2023-04-23 17:00:58 · 1264 阅读 · 0 评论 -
RepVGG(Re-parameterization VGG): Making VGG-style ConvNets Great Again
鉴于多分支模型训练性能好,推理性能差,单分支扁平化模型训练性能差,推理性能好的情况,将二者综合,试图构建一种网络模型,在模型训练阶段使用多分支训练获得更好的训练性能,在模型推理阶段将训练好的多分支模型恒等转换为单分支的扁平化模型,推理阶段的网络模型中只有3x3的卷积和ReLU激活这两种操作。这其中的核心问题就是如何把多分支的模型转换为一个单分支的模型?RepVGG里面把这个过程叫做结构重参数化技术。原创 2023-02-06 20:02:14 · 1072 阅读 · 0 评论 -
YOLOX训练自有数据集
开源代码:https://github.com/Megvii-BaseDetection/YOLOX参考:深入浅出Yolox之自有数据集训练超详细教程 - 知乎训练数据标注YOLOX采用VOC数据标注格式,VOC数据格式如下:其中图片训练的图片数据存放在JPEGImages目录中,每张图片对应的同名xml文件存放在Annotations目录下,ImageSets/Main目录下存放划分号的训练集train.txt和验证集文件val.txt,其中trai...原创 2022-05-12 19:55:05 · 2012 阅读 · 3 评论 -
Anchor-Free系列之YOLOX:Exceeding YOLO Series in 2021
Anchor-Free系列之CornerNet: Detecting Objects as Paired Keypoints_程大海的博客-CSDN博客Anchor-Free系列之CenterNet:Objects as Points_程大海的博客-CSDN博客Anchor-Free系列之FCOS:A Simple and Strong Anchor-free Object Detector_程大海的博客-CSDN博客参考:如何评价旷视开源的YOLOX,效果超过YOLOv5? - 知乎.原创 2022-05-03 21:59:37 · 4043 阅读 · 1 评论 -
Anchor-Free系列之FCOS:A Simple and Strong Anchor-free Object Detector
开源代码:https://github.com/tianzhi0549/FCOSAnchor-based目标检测算法的缺点:anchor的大小、宽高比以及anchor的数量这些超参数对算法性能影响较大,在使用anchor box的时候,涉及的超参数如下: anchor的大小 anchor的宽高比 anchor的数量 anchor box与ground truth的IoU阈值,用来确定anchor是否为positive anchor box与ground truth的IoU阈值,原创 2022-05-01 10:04:03 · 2166 阅读 · 0 评论 -
Anchor-Free系列之CenterNet:Objects as Points
CenterNet也是anchor-free的one-stage的目标检测算法,CenterNet与基于anchor的one-stage目标检测算法的主要区别如下:基于anchor的检测算法首先要按照anchor与目标ground truth的IoU来划分anchor是positive还是negative,然后positive的anchor负责预测对应的目标。CenterNet中没有anchor,只识别目标的中心点,可以理解为目标中心的位置就是一个positive anchor,其他地方都是negati原创 2022-04-18 09:16:06 · 1795 阅读 · 0 评论 -
分类模型训练完之后,测试效果极差可能原因分析
在知乎上有这样一个问题:acc很高,但预测正确的样本占比又很低,怎么回事? - 知乎关于这个问题,在这个问题的回答中,有许多大佬从数据的分布、模型的结构、数据集的划分,以及验证指标等层面进行了解答。在这里按照我的理解,简单描述一下这个问题:模型训练正常,模型测试效果很差,甚至在训练集上的测试效果都很差。简单分析一下大概有以下几个方面的原因可以排查:1、检查模型训练和模型测试的数据处理pipeline是否一致,比如训练时做了Normalize...原创 2022-04-13 12:23:42 · 10094 阅读 · 1 评论 -
Anchor-Free系列之CornerNet: Detecting Objects as Paired Keypoints
CornetNet不使用anchor box来完成目标检测,并且达到了与当时的one-stage检测算法更好的精度。作者分析了anchor box的两个主要缺点:为了提升目标检测效果,通常需要生成大量的anchor box,以YoloV3为例,在13x13、26x26、52x52三种尺度的特征图上,每个位置生成9个anchor box,一共有31941个anchor box,更多的anchor box可以保证每个目标都能够被anchor box所覆盖,提升目标检测结果的召回率,但是更多的...原创 2022-04-12 09:11:18 · 2748 阅读 · 0 评论 -
ResNeXt、DenseNet、CSPNet网络模型总结
ResNeXt在网络架构设计层面,常见的几种提升网络性能的方法:网络的宽度width:每层卷积的输出通道数 网络的深度depth:网络的层数 网络的分辨率resolution:输入图像的分辨率大小 网络的增长率growth:随着层数的增加,每层卷积输出通道数的增长比例 网络的特征复用:如DenseNet可以使用更浅的网络,更少的参数,提升特征复用,达到与深度网络相当的性能 高效特征融合:InceptionNet的split-transforms-merge模式,将输入分别使用不同的转换分支原创 2022-03-31 10:32:27 · 8475 阅读 · 2 评论 -
Yolo系列目标检测算法知识点总结
下面是YoloV4论文中给出的目标检测算法的整体架构:主要包含以下几个部分:输入层用来处理输入数据,如数据增强 Backbone主干网络用来提取特征 Neck层用来做多尺度特征融合,提升特征的表达能力,如SPP、FPN、BiFPN、PAN等 预测输出层用来预测输出结果,输出层又分为密集预测(如RPN,SSD,Yolo)和稀疏预测(如R-CNN系列)Yolov1:参考:<机器爱学习>YOLO v1深入理解 - 知乎参考:https://zhuanla...原创 2022-03-12 21:16:51 · 7191 阅读 · 0 评论 -
BatchNorm与LayerNorm
BatchNorm批量归一化:批量归一化是对一个中间层的单个神经元进行归一化操作。计算第l层网络中每个神经元在Batch大小为N的样本上输出的N个结果,计算每个神经元输出的N个结果的均值和方差,然后使用均值和方差来对这N个输出结果做归一化,所以归一化的维度是在Batch上进行的LayerNorm层归一化:层归一化是对一个中间层的所有神经元进行归一化。计算第l层网络中的每个神经元在Batch中每个输入样本的输出,对于每个输入样本,计算所有神经元输出结果的均值和方差,使用均值和方差来归一化对于这个输..原创 2022-03-01 09:06:12 · 1600 阅读 · 0 评论 -
torchvision.transforms GPU加速,提升预测阶段数据预处理速度
参考:Tensor transforms and JIT — Torchvision 0.11.0 documentationTorchvision v0.8.0之前版本:Torchvision v0.8.0之前版本的transforms主要分为两类:1、一类处理的输入数据类型为Tensor2、另一类处理的数据类型为PILImage所以torchvision里面提供了两个转换函数ToTensor和ToPILImage...原创 2022-01-20 21:31:34 · 7160 阅读 · 9 评论 -
从零搭建音乐识别系统(五)embedding特征提取模型验证
在前面的内容中,我们已经借助于pytorch-metric-learning代码库,使用ResNet + Circle Loss+ sample miningde 方法训练了度量学习模型,该模型旨在将一个输入的10秒音频短片转化为一个具有表征能力的高维embedding向量。度量学习的目标是对于属于同一类别ID的音乐片段的embedding相似度大于属于不同类别ID的音乐片段的embedding相似度。关于如何验证特征提取模型的性能问题,在模型训练阶段,我们已经使用了独立于训练集的验证集和测试集,使..原创 2022-01-11 20:23:23 · 2327 阅读 · 4 评论 -
从零搭建音乐识别系统(四)embedding特征提取模型
在第二篇中,我们已经从每首歌曲中提取了20个相互之间重合度在50%~97.5%的10秒音乐片段,并将这些片段转换成了大小为[64, 1001]的梅尔频谱矩阵。假如我们现在的训练集中有10000首不同的歌曲,那么我们现在就有20 * 10000共20万个[64, 1001]的训练样本。本篇我们就使用度量学习方法训练模型来提取embedding特征。关于度量学习方法,这里再次强调一下度量学习的几个核心概念:1、选定度量学习方法使用的embedd......原创 2022-01-09 21:06:16 · 1996 阅读 · 4 评论 -
从零搭建音乐识别系统(三)音乐分类模型
经过上一篇的介绍,我们已经获得了AudioSet开源数据集,并且将数据集分为两类:音乐类和非音乐类。将每段10秒的音频提取得到[64, 1001]大小的特征矩阵。接下来就是使用这些特征矩阵来训练一个二分类模型,用来识别音频片段是否是音乐片段。参考自成熟的图像分类网络模型,我们采用Pytorch框架训练ResNet分类模型,分类模型的训练主要包括以下几个核心步骤:1、训练数据预处理由于我们的每条训练数据是保存在npy文件里面的,所以我们需......原创 2022-01-09 11:55:36 · 2145 阅读 · 4 评论 -
从零搭建音乐识别系统(二)音频特征提取
在前面的总体功能概述中提到了,这个系统会训练两个模型,一个是音乐分类模型,用来判断是否出现音乐片段,一个是embedding特征提取模型,用来提取音频的embedding特征向量。分类模型数据集:在这里,对于分类模型的训练,我们采用开源的AudioSet数据集。AudioSet数据集是一个用于声音分类的数据集,其中包含了各种类别的声音,音乐,唱歌,哼唱,演讲,钢琴等,每个音频片段的长度都是10秒,具体可以去官网看一下介绍。我们要训练的是一个二分类模型,只要能够区分音频......原创 2022-01-08 22:37:19 · 3547 阅读 · 12 评论 -
从零搭建音乐识别系统(一)整体功能介绍
从零开始搭建一个音乐识别系统总共分几步,简单画了一个草图:总结一下,大概分为以下四步:1、训练一个分类模型,用于识别一段音乐是否是音乐,如果是音乐才继续进行识别,如果不是音乐则停止识别,这可以带来两个方面的好处。一是可以降低一定的计算量;二是可以降低误识别2、使用度量学习相关方法,训练一个提取音乐片段embedding向量的模型,理想情况下,相似的歌曲片段的embedding之间具有更高的相似度,从而可以根据embeddi......原创 2022-01-08 22:12:15 · 1189 阅读 · 0 评论 -
数据增强之MixUp
MixUp论文:《mixup:Beyond Empirical Risk Minimization》参考:GitHub - facebookresearch/mixup-cifar10: mixup: Beyond Empirical Risk Minimization其中,和数两个数据样本,和是原始的输入数据(如图像矩阵),和是和对应所属类别的one-hot编码,,,用来控制mix的强度。Mixup的Pytorch代码...原创 2021-12-26 18:12:19 · 1893 阅读 · 0 评论 -
数据增强之SpecAugment
SpecAugment论文:《SpecAugment: A Simple Data Augmentation Methodfor Automatic Speech Recognition》参考:https://github.com/bobchennan/sparse_image_warp_pytorch参考:语音算法阅读之SpecAugment - 卑微的蜗牛 - 博客园参考:https://github.com/qiuqian...原创 2021-12-26 18:09:05 · 5835 阅读 · 0 评论 -
度量学习DML之MoCO
度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好MoCo(queue+encoder滑动平均更新)论文:《Momentum Contrast for Unsupervised Visual Representation Learning》参考:MoCo论文解读 - ...原创 2021-12-26 18:01:58 · 1533 阅读 · 0 评论 -
度量学习DML之Cross-Batch Memory
Cross-Batch Memory(无痛涨点)论文:《Cross-Batch Memory for Embedding Learning》参考:跨越时空的难样本挖掘 - 知乎通过前面分析的几种pair-based的损失函数可能看到,基于pair的损失函数通常在mini-batch中挖掘具有高价值的样本来进行模型训练,这样一来,在训练时使用的batch size越大,得到的模型的性能就越好,这在上述的一些论文中大部分作者都会提及到。但是,现实情...原创 2021-12-26 17:57:49 · 1293 阅读 · 0 评论 -
度量学习DML之Circle Loss
度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好Circle Loss论文:《Circle Loss: A Unified Perspective of Pair Similarity Optimization》参考:Circle Loss 感想 - 知乎参考:如何理解与看待在cvpr2020原创 2021-12-26 17:54:48 · 6050 阅读 · 3 评论 -
度量学习DML之Lifted Structure Loss
度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好Lifted Structure Loss论文:《Deep Metric Learning via Lifted Structured Feature Embedding》核心思想:通过前面的介绍可以知道,Contra...原创 2021-12-26 17:44:09 · 2846 阅读 · 0 评论 -
度量学习DML之Triplet Loss
度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好Triplet Loss(三元组损失)论文:《FaceNet:A Unified Embedding for Face Recognition and Clustering》三元组损失顾名思义,一次输入的样本数量有三...原创 2021-12-26 17:39:11 · 1925 阅读 · 0 评论 -
度量学习DML之Contrastive Loss及其变种
度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好Contrastive Loss(对比损失)论文:《Dimensionality Reduction by Learning an Invariant Mapping》假设和表示两个样本的embedding向量,表示和...原创 2021-12-26 17:34:25 · 3582 阅读 · 0 评论 -
时序动作检测《BSN++: Complementary Boundary Regressor with Scale-Balanced Relation Modeling for ……》
温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!BSN++论文涉及的相关算法:1、BSN:时序动作检测《BSN: Boundary Sensitive Network for Temporal Action Proposal Generation》2、BMN:时序动作检测《BMN: Boundary-Matching Network for Temporal Action Proposal Generation》3、Non-Local:《Non-local Neural Ne原创 2021-09-03 09:04:06 · 1674 阅读 · 21 评论 -
目标检测AP、mAP计算方法
关于AP和mAP的定义可以参考以下链接:参考:https://blog.csdn.net/qq_35916487/article/details/89076570参考:https://zhuanlan.zhihu.com/p/56961620代码来源:https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/datasets/voc_eval.pyAP(Average Precison)是计算具体某个类别的AP...原创 2021-09-03 19:44:18 · 7610 阅读 · 0 评论 -
《Non-local Neural Networks》个人总结理解
问题分析:神经网络中的long-range依赖问题,对于序列数据(如语音、文字),可以使用RNN循环神经网络来提取长距离依赖,对于图像数据,由于卷积操作具有的局部连接的特性,使得卷积的结果仅和周围的局部区域相关。为了使的卷积操作能够捕捉到更大的依赖关系,目前的做法是增大卷积的感受野,这也就是常见的卷积+下采样(池化)的网络结构。这种网络结构存在以下限制:计算效率不高 优化困难 跨级的依赖关系比较困难核心观点:论文提出的Non-Local操作,每个位置的特征都...原创 2021-09-03 08:54:13 · 4322 阅读 · 1 评论 -
分类模型confusion matrix混淆矩阵可视化
之前写过一篇关于在scikit-learn工具包中,可视化estimator分类模型分类结果的confusion matrix混淆矩阵可视化的方法,具体可以参考看这里,看这里。今天这篇介绍一下如何使用scikit-learn工具中提供的相关方法,可视化其他任意框架(比如深度学习框架)的分类模型预测结果的混淆矩阵。下面先说一下几个关键步骤:1、确定类别列表,类别列表和one-hot的编码顺序一致,这里使用cifar-10的类别列表作为演示的例子。classes =...原创 2021-08-28 10:41:38 · 15983 阅读 · 4 评论 -
时序动作检测《BMN: Boundary-Matching Network for Temporal Action Proposal Generation》
温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!BMN算法是对BSM算法的改进,有关BSN算法的详细介绍,请参考上一篇文章。一个高质量的proposal生成方法应当具备生成的proposal长度灵活可变、proposal边界精确、proposal可靠的置信度。BSN算法的缺点: 1、BSN算法中PEG模块对于候选proposal的特征构建和置信度评估是分开进行的,效率低 2、在BSN算法中的TEM模块对每个时刻采用局部上下文信息...原创 2021-07-26 18:57:09 · 3567 阅读 · 3 评论 -
时序动作检测《BSN: Boundary Sensitive Network for Temporal Action Proposal Generation》
温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!时序行为检测两段式目标检测方法如Faster RCNN先使用RPN网络生成proposal,然后再使用Fast RCNN网络对proposal进行精炼,得到更加准确的结果。两段式时序行为检测方法跟两段式目标检测方法类似,先生成时序行为的proposal候选片段,然后再使用时序动作识别方法对proposal进行行为分类。所以生成的proposal的准确性严重影响时序行为检测的性能,高质量的proposal应该具备两个重要属...原创 2021-07-23 20:07:48 · 2982 阅读 · 2 评论 -
时序动作检测SSAD《Single Shot Temporal Action Detection》
温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!时序动作分类:识别一段视频中的动作类别时序动作检测:识别一段视频中的动作类别以及动作的开始和结束时间时空动作检测:识别一段视频中的动作类别、动作的开始和结束时间,以及动作发生的空间位置(如投篮人所在的bbox)时序动作检测可以被看做是时序版本的图像目标检测,因为两者都是需要检测目标的类别,并且都需要确定目标的准确边界位置。detect by classifying时序动作检测方法:先使...原创 2021-07-22 20:14:11 · 6446 阅读 · 8 评论 -
视频光流提取《FlowNet: Learning Optical Flow with Convolutional Networks》
核心思想:使用卷积神经网络提取视频光流运动信息上图是抽象的网络结构描述,convolution network的前半段进行卷积和池化操作,输出特征图分辨率逐渐变小。Convolution network的后半段使用反卷积和特征concat融合操作,输出特征图分辨率逐渐变大。网络结构:FlowNetS:FlowNetS直接把一对图像输入到卷积网络中,让网络自己学习提取运动特征,理论上只要网络规模足够大,是可以学习到光流特征的,FlowNetS输入的是两张图片,所以输入通道.原创 2021-07-20 09:21:20 · 1847 阅读 · 0 评论 -
《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》
核心思想:本论文的核心关注点在于卷积神经网络中的1x1卷积模块,作者指出在XCeption和ResNetXt等网络模型中,虽然采用了深度可分离卷积来降低参数量和计算量,但是这样又引入了大量的1x1标准卷积操作,导致的结果就是网络模型中存在大量的1x1卷积操作,1x1卷积的参数量和计算量占据了绝对的大头。下图是MobileNetV1网络使用深度可分离卷积之后的参数量和计算量统计,1x1卷积无论在参数量和计算量上都占据绝对大头:核心方法:所以本论文将1x1卷积作为重点关照对象,在深度可分离卷原创 2021-07-18 20:55:30 · 319 阅读 · 0 评论 -
《MobileNetV2: Inverted Residuals and Linear Bottlenecks》
标准残差块:1、使用1x1卷积减少通道数2、使用NxN卷积提取特征3、使用1x1卷积提升通道数,提升后与输入通道数相等4、将残差块的输入与输出相加,形成short-cut连接备注:标准残差块的通道数两头大,中间小反向残差块(inverted residual):1、使用1x1卷积提升通道数2、使用深度可分离卷积提取特征3、使用1x1卷积减少通道数,减少后与输入通道数相等4、将残差块的输入与输出相加,形成short-cut连接备注:翻转残差块的通道数两头小,中间原创 2021-07-18 17:00:46 · 1851 阅读 · 4 评论 -
MobileNetV1《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》
《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》在MobileNet之前,提升模型推理效率常用的方法是模型压缩(量化、剪枝等)和知识蒸馏(Teacher-Student网络)。核心概念:深度可分离卷积(deep-wise separable convolution):深度可分离卷积将标准卷积操作分解为一个深度卷积(deepwise convolution)和一个1x1的卷积原创 2021-07-18 15:49:21 · 570 阅读 · 0 评论