深度学习
文章平均质量分 90
小小小绿叶
这个作者很懒,什么都没留下…
展开
-
一文读懂Swin-Transformer
Swin Transformer是2021年微软亚洲研究院发表在ICCV(ICCV 2021 best paper)上的一篇文章。Swin Transformer是继ViT之后,Transformer模型在视觉领域的又一次碰撞。该论文一经发表就已在多项视觉任务中霸榜,值得大家仔细研读。Swin Transformer可能是CNN的完美替代方案。原创 2023-09-09 10:31:51 · 1519 阅读 · 0 评论 -
一文看懂DETR(二)
1.输入图像经过CNN的backbone获得32倍下采样的深度特征;2.将图片给拉直形成token,并添加位置编码送入encoder中;3.将encoder的输出以及Object Query作为decoder的输入得到解码特征;4.将解码后的特征传入FFN得到预测特征;5.根据预测特征计算cost matrix,并由匈牙利算法匹配GT,获得正负样本;6.根据正负样本计算分类与回归loss。原创 2023-08-31 19:55:56 · 574 阅读 · 0 评论 -
一文看懂DETR(一)
DETR是Meta AI研究院提出的CV通用框架,论文中将其应用于目标检测与全景分割。DETR舍弃了以往一阶段,二阶段检测模型的先验trick,比如anchor的设置,nms极大值抑制,也没有多尺度特征融合(由于Swin transformer在其后发表)以及复杂的数据增强,其整个pipeline简洁,直观,得到后人称赞并应用于cv各个task中。总结来说,DETR将目标检测任务(分类与回归)看作集合预测问题。原创 2023-08-31 09:24:01 · 1123 阅读 · 0 评论 -
一文看懂Vision Transformer(VIT)
Transformer早在2020年就在NLP领域大放异彩,并通过BERT等无监督预训练技术将NLP推上一个新的高度。VIT受其启发,尝试将Transformer应用到CV领域,并通过JFT数据预训练,在ImageNet1K上能够达到88.55%的准确率。如今,Transformer在CV,NLP,多模态等领域均已达到最先进水平,值得大家学习并应用于工作中。接下来的时间,将记录我在CV领域大模型的学习历程,欢迎大家一起讨论,互相学习。原创 2023-08-23 11:25:19 · 653 阅读 · 0 评论 -
YOLO v8目标跟踪详细解读(二)
卡尔曼滤波(kalman Filtering)是一种利用线性系统状态方程,通过系统输入观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。卡尔曼滤波在测量方差已知的情况夏能够从一系列存在测量噪声的数据中,估计动态系统的状态。在目标跟踪中,将检测框的坐标看作观测数据,通过状态转移矩阵与状态协方差矩阵来更新下一帧的最优估计。原创 2023-08-14 17:06:20 · 2095 阅读 · 0 评论 -
YOLO v8目标跟踪详细解读(一)
目标跟踪现阶段是强烈依赖目标检测结果的,主流的目标跟踪pipeline,简单的总结一下:首先,目标检测模型输出的检测框是我们跟踪的对象。假设我们在第一帧确定了跟踪对象,即给定检测框id,那当检测模型输出第2帧检测结果,我们需要将第2帧的检测框与第1帧检测框的id进行匹配。那么匹配的过程是怎样的呢?有人说,直接用两帧检测框的IOU去匹配呗,将IOU看作cost_matrix,利用匈牙利算法去匹配两帧的id。原创 2023-08-11 14:36:40 · 10236 阅读 · 6 评论 -
目标检测label assignment:A Dual Weighting Label Assignment Scheme
在目标检测中,为了与NMS兼容,一个好的检测器应该能够预测具有较高分类得分和精确位置的box。然而,如果所有的训练样本都被同等处理,两个头部之间就会出现错位:类别得分最高的位置通常不是回归对象边界的最佳位置。这种失调会降低检测器的性能,特别是在高IoU指标下。soft label assignment是通过加权损失以软标签的方式处理训练样本,试图增强cls和reg头之间的一致性。原创 2023-04-03 14:33:54 · 653 阅读 · 1 评论 -
一文看懂YOLO v8
2023年,YOLO系列已经迭代到v8,v8与v5均出自U神,为了方便理解,我们将通过与v5对比来讲解v8。想了解v5的可以参考文章。原创 2023-01-30 20:56:00 · 19917 阅读 · 7 评论 -
Generalized Focal Loss(GFLv1)论文理解与代码分析
GFLv1是较早提出在训练和推理过程中,质量评估和分类不一致问题的论文。质量与分类往往被独立训练,(yolo输出中,有独立的一个维度用于目标的置信度评估,在训练时与分类解耦;fcos,atss则利用centerness作为质量评估,同样也与分类解耦),但在test过程中却被相乘联合使用。监督只分配给正样本,但有时候负样本可能会提供更高质量的监督,必然会存在一部分分数较低的“负样本”的质量预测是没有在训练过程中有监督信号的,有就是说对于大量可能的负样本,他们的质量预测是一个未定义行为。原创 2022-10-11 11:48:42 · 2674 阅读 · 2 评论 -
mmpose关键点(二):构建自己的训练集
mmpose一般使用如同coco数据json文件格式读取数据与标注,但是当我们用labelme去标注自己的训练集时,只能获取每张图片的标注json文件。接下来,我们简单介绍coco的关键点json文件,并教大家如何获得自己训练集的json文件。原创 2022-08-19 11:37:21 · 4366 阅读 · 13 评论 -
mmpose关键点(一):评价指标(PCK,OKS,mAP)
由于,近期项目需要引入关键点做一些方向逻辑的判断,在此记录一些实验与经典论文方法。首先,我们先了解一下关键点估计的评价指标。原创 2022-08-10 09:23:23 · 8090 阅读 · 5 评论 -
mmcv(mmdetection)源码理解:optimizer(SGD,momentum,Nesterov)
optimizer原创 2022-05-25 15:30:03 · 2761 阅读 · 1 评论 -
一文看懂YOLO v5
YOLOv5在比赛与落地中运用广泛,它可以通过chaneel与layer的控制因子来根据落地要求灵活配置模型。与YOLO系列1-4不同的是YOLOv5对正样本的定义:其采用了跨领域网格,并在不同输出层匹配,极大的扩增了正样本anchor,加速模型收敛速度并提高模型召回率。为了大家更好的理解并使用yolov5,本文将结合代码从不同维度进行分析。网络结构YOLOv5的整体结构与YOLOv4相差不大,有兴趣的同学可以查看我之前总结的yolo系列文章YOLOv4。YOLOv5的结构如下:Backbone:原创 2021-08-15 21:46:18 · 13781 阅读 · 0 评论 -
一文看懂YOLO v4
很久没有更新文章了,在YOLO v3之后,目标检测方向又相继出现很多好文章,为了方便回顾以及大家相互学习,今天总结一下YOLO v4。在此之前,我总结过yolo系列的文章与代码解析,有兴趣的同学可以查看YOLO v3。Yolov4论文名:《Yolov4: Optimal Speed and Accuracy of Object Detection》Yolov4论文地址:https://arxiv.org/pdf/2004.10934.pdf1.网络结构从这儿偷张图,这个图可以很直观地展示yolov原创 2021-08-15 14:21:23 · 4091 阅读 · 0 评论 -
pytorch->onnx->ncnn模型移植
为了将pytorch训练出的人脸识别模型更好地部署到树莓派中,这里选用ncnn前向推理框架加速模型推理过程。pytorch -> onnxpytroch1.0以上的版本是自带onnx的,所以转换比较方便,直接用torch.onnx.export就能输出.onnx文件。为了保证pytorch与onnx的输出一致,我们用相同的输入放入torch与onnx模型中,比较它们各自输出,程序如下。import torch.onnximport torchvisionfrom model1 import原创 2021-04-22 10:25:13 · 8297 阅读 · 3 评论 -
目标检测mAP
目标检测与图像分类不同,目标检测不仅要对检测出来的目标框正确分类,同时,还需要考虑目标框与target是否贴合。首先我们需要知道几个常见指标:TP (True Positive):iou>0.5的检测框数量。在上图中,绿色的框表示GT,其中cat 0.9的红色框就是TP。FP (False Positive):iou<=0.5的检测框。cat 0.3的红色框与GT的IOU小于0.5所以是FP。FN (False Negative):没有检测到的GT(ground truth)数量。上图原创 2020-11-17 19:12:12 · 5961 阅读 · 4 评论 -
轻量型注意力模块:ULSAM
ULSAM: Ultra-Lightweight Subspace Attention Module for Compact Convolutional Neural Networks论文地址作者提出了一种新的用于紧凑网络神经网络的注意力块(ULSAM),它可以学习每个特征子空间的个体注意力映射,并能够在多尺度、多频率特征学习的同时高效地学习跨信道信息。主要思想:将提取的特征分成g组,对每组的子特征(论文中称问subspace)进行空间上的重新校准,最后,把g组特征concatenate到一起。具体原创 2020-10-10 15:53:56 · 4184 阅读 · 19 评论 -
知识蒸馏老鼻祖之Distilling the Knowledge in a Neural Network
Distilling the Knowledge in a Neural Network最重要的思想是提出用soft target辅助hard target组成loss,一起训练student model。那soft target与hard target到底指的是什么?它们之间有什么不同呢?hard target:hard target其实就是数据的标签,比如分类驴和马,识别马时,hard target只有马的index处的值为1,驴的标签则为0.soft target:soft target是原创 2020-10-09 19:00:04 · 1846 阅读 · 3 评论 -
轻量型模型之总结(mobilenet,shufflenet,ghostnet)
在介绍这些模型前,首先我们了解一下分组卷积的概念。分组卷积上图表示普通卷积操作,即输入H×W×C1H\times W\times C1H×W×C1经过C1×H1×W1×C2C1\times H1\times W1\times C2C1×H1×W1×C2的卷积核,卷积成H×W×C2H\times W\times C2H×W×C2的feature map。其参数量是:C1×H1×W1×C2C1\times H1\times W1\times C2C1×H1×W1×C2;FLOPS:H×W×C1×C2×H原创 2020-10-08 19:03:43 · 2998 阅读 · 1 评论 -
目标检测以及分类任务中的评价指标(roc,auc,map等)
我们在分类任务中经常用ROC曲线与AUC来衡量分类器的好坏。在理解之前,我首先介绍一下混淆矩阵。混淆矩阵在二分类问题上,真实类别分为:F:反例;T:正例;预测类别:P:正例;N:反例。真正例TP(true postive):样本真实类别为1,学习模型预测的类别也为1假正例FP(false postive):样本真实类别为0,学习模型预测的类别为1真反例TN(true negative):样本真实类别为0,学习模型预测的类别也为0假反例FN(false negative):样本真实类别为1,学习模原创 2020-08-12 11:15:08 · 2030 阅读 · 0 评论 -
一文看懂YOLO v3
论文地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf论文:YOLOv3: An Incremental ImprovementYOLO系列的目标检测算法可以说是目标检测史上的宏篇巨作,接下来我们来详细介绍一下YOLO v3算法内容,v3的算法是在v1和v2的基础上形成的,所以有必要先回忆: 一文看懂YOLO v2,一文看懂YOLO v2...原创 2019-03-31 09:58:05 · 309283 阅读 · 88 评论 -
深度学习中防止过拟合的方法有哪些?
过拟合是指在模型参数拟合过程中,由于训练数据包含抽样误差,复杂模型在训练时也将抽样误差进行了很好的拟合。具体表现就是在训练集上效果好,而测试集效果差,模型泛化能力弱。解决过拟合的方法:1.从数据入手解决过拟合最有效的方法,就是尽力补足数据,让模型看见更加全面的样本,不断修正自己。数据增强:通过一定规则扩充数据。可以通过图像平移、翻转、缩放、切割等手段将数据库成倍扩充。当然,随着GAN的发展,很多任务,可以通过GAN来有效补足数据集。2.网络结构2.1. dropoutDropout可以作为训原创 2020-05-16 15:33:03 · 8385 阅读 · 0 评论 -
Inception系列之总结篇
Inception v11.核心思想通过增加网络宽度,结合不同kernel的feature map进行concat,来增加网络的感受野组合,有效提高对原始像素信息与网络内部资源的利用率。为了降低inception block的计算成本,作者用1×1卷积先将feature降维(降低channel)再分别于其他kenerl卷积。GoogLeNet在中间的两个Inception模块后增加了辅助分类器输出,其损失乘以权重0.3加到了总损失中,这种设计可以增强反向传播的误差信号,同时带来一定的正则化效果。2原创 2020-05-16 09:29:20 · 1175 阅读 · 0 评论 -
PFLD: A Practical Facial Landmark Detector
contribution1.在训练阶段,对于每个样本,几何信息被考虑,不涉及测试阶段。2.该方法在考虑几何正则化的基础上,通过调整训练集中不同状态的样本权值,如大姿态、极端光照、遮挡等,来解决数据不平衡的问题。difficults of face alignment困难一:局部变形面部表情、局部极端光照(如高光和阴影)和遮挡会对面部图像造成部分变化/干扰。一些区域的地标可能会偏离正常位置...原创 2020-04-30 17:27:01 · 768 阅读 · 0 评论 -
深入理解Batch Normalization原理与作用
1.为什么需要Normalization深度学习网络模型训练困难的原因是,cnn包含很多隐含层,每层参数都会随着训练而改变优化,所以隐层的输入分布总会变化,每个隐层都会面临covariate shift的问题。internal covariate shift(ICS)使得每层输入不再是独立同分布。这就造成,上一层数据需要适应新的输入分布,数据输入激活函数时,会落入饱和区,使得学习效率过低,甚至...原创 2020-04-28 17:14:04 · 14261 阅读 · 0 评论 -
模型剪枝----Learning Efficient Convolutional Networks through Network Slimming
模型剪枝是模型压缩中较为核心的方法,它可以清除网络中冗余的参数与计算量,让模型更加紧凑高效。下面我们介绍Learning Efficient Convolutional Networks through Network Slimming。论文链接:https://arxiv.org/abs/1708.06519官方代码(Torch实现):https://github.com/liuzhuang...原创 2020-03-14 19:49:04 · 1490 阅读 · 0 评论 -
一文看懂LSTM原理及其优点,变体Gru
LSTM理解从上图我们可以看到,LSTM与普通循环网络不同的是,LSTM加入Memroy Cell以及input,forget,output gate三个门的概念。我们可以把Memory Cell简单的理解为前一状态在该状态的记忆,LSTM通过这三个门来对该状态进行操作。Forget Gate:遗忘门(forget gate):决定我们需要从cell状态中扔掉什么样的信息。通过sigmoi...原创 2019-10-22 11:11:56 · 6464 阅读 · 0 评论 -
PyTorch实现yolov3代码详细解密(一)
yolo系列是目标识别的重头戏,为了更好的理解掌握它,我们必须从源码出发深刻理解代码。下面我们来讲解pytorch实现的yolov3源码。在讲解之前,大家应该具备相应的原理知识yolov1,yolov2,yolov3。创建YOLO网络首先我们知道yolov3将resnet改造变成了具有更好性能的Darknet作为它的backbone,称为darknet。配置文件官方代码(authored ...原创 2019-04-17 19:33:51 · 26686 阅读 · 32 评论 -
PyTorch实现yolov3代码详细解密(二)
我们把darknet的框架搭建完成了,但是还缺少网络的前向传播,那么这一章我们来完成前向传播代码的细节分析。我们记得上一届我们定义的darknet是个空框架,里面并没有forward,下面我们主要通过覆写 nn.Module 类别的 forward 方法来实现最终的网络结构。实现该网络的前向传播forward主要目的就是配合网络结构序列计算输出,让前后层的feature maps能够进行串联...原创 2019-04-20 14:29:03 · 6263 阅读 · 2 评论 -
PyTorch实现yolov3代码详细解密(三)
我们在之前的讲解中已经完成了Yolov3的整体网络框架,即已经构建了一个能为给定输入图像输出多个目标检测结果的模型。具体来说,我们的输出是一个形状为 B x 10647 x 85 的张量;其中 B 是指一批(batch)中图像的数量,10647 是每个图像中所预测的边界框的数量,85 是指边界框属性的数量。在完成具体框架后,就要看看yolov3的训练机制了。我们首先整体讲解它的training ...原创 2019-04-21 17:13:54 · 4585 阅读 · 4 评论 -
PyTorch实现yolov3代码详细解密(四)
上一章最后,我们得到了一个张量形式的预测结果(D×8),D代表预测了D个结果,8指每个检测结果有8个属性,即:该检测结果所属的 batch 中图像的索引、4 个角的坐标、objectness 分数、有最大置信度的类别的分数、该类别的索引。在这一部分,我们将为我们的检测器构建输入和输出流程。这涉及到读取图像,做出预测,使用预测结果在图像上绘制边界框,然后将它们保存。创建命令行参数在多个文件或者...原创 2019-04-24 17:42:24 · 3454 阅读 · 2 评论 -
Pytorch实现yolov3(train)训练代码详解(一)
yolo系列是目标识别的重头戏,为了更好的理解掌握它,我们必须从源码出发深刻理解代码。下面我们来讲解pytorch实现的yolov3源码。在讲解之前,大家应该具备相应的原理知识yolov1,yolov2,yolov3。大部分同学在看论文时并不能把所有的知识全部掌握。我们必须结合代码(代码将理论变成实践),它是百分百还原理论的,也只有在掌握代码以及理论后,我们才能推陈出新有所收获,所以大家平时一定...原创 2019-05-17 19:26:14 · 11808 阅读 · 1 评论 -
Pytorch实现yolov3(train)训练代码详解(二)
上篇我们讲解了如何进行数据预处理,读取数据。接下来我们一起分析yolov3训练过程与training procedure。想真正读懂这个部分,要对inference部分有所了解。数据加载def train( cfg, data_cfg, img_size=416, resume=False, epochs=273,...原创 2019-05-18 12:16:34 · 6951 阅读 · 20 评论 -
pytorch应用之——纸币识别(一)
最近参加了一个比赛,比赛内容是实现纸币识别,精度高于99.9%。我用pytorch实现了这个要求,并记录在这里供大家跟自己参考回顾。数据集https://pan.baidu.com/s/1oZ4yMlTU3YwnX9KR0huzyQ 提取码:k7bc我分几个部分跟大家讲解:1:算法思想(这个很简单)2:代码详解一:算法思想这里数据集一共有39620张,而且背景单一,所以纸币面值的识别...原创 2019-05-21 08:29:36 · 3704 阅读 · 2 评论 -
pytorch应用之———纸币识别(二)
参加TinyMind的深度学习纸币识别比赛,预赛在前一章介绍过戳这里。正赛是人民币冠字号编码识别,如下图,在给的测试集上把编码区识别出来,这是我通过yolov3做出来的结果。这里,我把自己的思路代码跟大家分享。主要思路:自己做训练集,把每一种面值的纸币作为一类并把编码区作为ground truth框起来大概做了1000张标签,利用yolov3训练数据。由于考虑训练集背景单一简单,所以我用yol...原创 2019-05-24 21:08:01 · 2268 阅读 · 5 评论 -
Pytorch应用之——人民币总结
由于实习原因,好久没有跟新博客了。今天总结一下参加tinymind人民币编码区识别比赛的经验跟代码。人民币编码区识别比赛分为预赛与正赛。预赛很简单,识别纸币面额,我在前面的博客中讲述过,戳这里。简单讲一下,由于纸币背景简单,识别面值其实就是简单的分类问题,我的方法就是直接把图像塞进resnet18里,结果正确率是可以达到100%的。代码在这儿。主要介绍正赛,正赛是编码区识别。编码区的识别分为...原创 2019-07-13 11:02:27 · 2870 阅读 · 2 评论 -
AttGAN从paper到code理解
AttGAN:Facial Attribute Editing by Only Changing What You Want(2017 CVPR)文章简介本文研究面部属性编辑任务,其目的是通过操作单个或多个感兴趣的属性(如头发颜色、表情、胡须和年龄)来编辑面部图像。Dataset: CeleAContribution:移除了严格的attribute-independent约束,仅需要通...原创 2019-08-07 16:12:24 · 2382 阅读 · 5 评论 -
mobilenet V3算法理解与代码解析
MobileNetV3是通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法设计改进而来,这里不讨论网络自动搜索,我们详细解读mobilenetV3的网络结构和代码实现。1.depth-wise convolution (DWconv)深度可分离卷积与普通卷积的区别在于:DWconv是按深度(channel数)逐层卷积获得一个个新的feature map,但是这些新的feature m...原创 2019-09-06 17:03:38 · 8797 阅读 · 6 评论 -
pytorch实践(改造属于自己的resnet网络结构并训练二分类网络)
在学习pytorch过程中,突然想拥有属于自己的网络结构,于是便自己选择了一个比较简单的resnet18进行改造,并用其对蚂蚁和蜜蜂进行分类,比较一下没有经过预训练的resnet18好还是自己改造的resnet_diy好。在开始撸代码之前,为了方便大家自己设计网络,我把resnet的pytorch实现详细的解读一遍。ResNetResNet 解决了 deep NN 的两大问题:1. deep...原创 2019-04-15 17:31:40 · 37387 阅读 · 9 评论