相关理论
文章平均质量分 84
该博客分专栏的介绍目标检测任务中的一些理论性的东西。希望我们永远年轻,永远热泪盈眶。
满船清梦压星河HK
永远年轻,永远热泪盈眶!
消失一段时间,死磕c++中!
展开
-
【目标检测-原理讲解导航】
目录一、导航一、导航【目标检测】目标检测中常见的评价指标.【YOLO v4 相关理论】Normalization: BN、CBN、CmBN.【YOLO v4 相关理论】Activations: 常见的非线性激活函数.【YOLO v4 相关理论】Regularizations(正则化): DropOut、DropBlock(最重要)、Spatial DropOut、DropPath、DropConnect.【YOLO v4 相关理论】常见的非极大值抑制方法:(Hard) NMS、Soft NMS原创 2022-04-09 10:27:54 · 1822 阅读 · 0 评论 -
【项目二、蜂巢检测项目】一、串讲各类经典的卷积网络:InceptionV1-V4、ResNetV1-V2、MobileNetV1-V3、ShuffleNetV1-V2、ResNeXt、Xception
目录前言一、InceptionV1-V4、Xception1.1、InceptionV1(GoogLeNet) - 20141.2、InceptionV2、InceptionV3 - 20151.3、InceptionV4-2016二、ResNetV1-V2、ResNeXt2.1、ResNetV1-20152.2、ResNetV2-20162.2、ResNeXt三、DenseNet四、MobileNetV1-V34.1、MobileNetV1-深度可分离卷积-20174.2、MobileNetV2-2018原创 2022-05-19 10:11:13 · 2394 阅读 · 0 评论 -
【目标检测】目标检测中常见的评价指标
目录一、定义1.1、TP1.2、FP1.3、FN1.4、Precision1.5、Recall1.6、AP1.7、mAP二、mAP计算过程(实例)三、YoLo输出结果的理解Reference一、定义1.1、TPTP(True Positive):IoU>0.5的检测框数量;检测成正样本,且检测对了(本质是正样本)1.2、FPFP(False Positive):IoU<=0.5的检测框数量(误检);检测成正样本,但检测错了(本质是负样本)1.3、FNFN(False Negativ原创 2021-05-07 21:49:13 · 3540 阅读 · 5 评论 -
【YOLO v4 相关理论】Normalization: BN、CBN、CmBN
一、Batch Normalization论文:https://arxiv.org/pdf/1502.03167.pdfBatch Normalization是google团队在2015年论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》提出的。个人认为这时一篇可以排进深度学习前十的一篇神作,目前大部分的流行算法、模型都会用到BN,它可以加快模型的收敛速度,原创 2021-05-18 19:35:44 · 5609 阅读 · 6 评论 -
【YOLO v4 相关理论】Activations: 常见的非线性激活函数
目录一、sigmoid二、tanhtanhtanh双曲正切三、ReLU四、Leakly ReLU五、ELU(指数线性函数)一、sigmoid函数表达式:f(z)=11+e−zf(z)=\frac{1}{1+e^{-z}}f(z)=1+e−z1函数图像及其导数图像:优点:是一个便于求导的平滑函数;能压缩数据,使输出保证在[0,1][0,1][0,1]之间(相当于对输出做了归一化),保证数据幅度不会有问题;(有上下界)适合用于前向传播,但是不利于反向传播。缺点:容易出现梯度消失(原创 2021-05-11 17:09:57 · 1552 阅读 · 1 评论 -
【YOLO v4 相关理论】Regularizations(正则化): DropOut、DropBlock(最重要)、Spatial DropOut、DropPath、DropConnect
一、DropOutDropout是2012年深度学习视觉领域的开山之作paper:AlexNet《ImageNet Classification with Deep Convolutional》所提到的算法,用于提高网络的泛化能力, 防止过拟合。Dropout现在一般用于全连接层,卷积层一般不使用Dropout,而是使用BN来防止过拟合,而且卷积核还会有relu等非线性函数,降低特征直接的关联性。1.1、什么是DropOut?我们知道,典型的神经网络其训练流程是将输入通过网络进行正向传导,然后将lo原创 2021-05-13 15:21:44 · 7250 阅读 · 9 评论 -
【YOLO v4 相关理论】常见的非极大值抑制方法:(Hard) NMS、Soft NMS、DIoU NMS
一、NMS1.1、IoUIoU(Intersection over Union),也就是我们常说的交并比。简单来说IOU就是用来度量目标检测中预测框与真实框的重叠程度。IoU公式:IoU=∣A⋂B∣∣A⋃B∣IoU = {|A\bigcap B|\over |A\bigcup B|}IoU=∣A⋃B∣∣A⋂B∣显而易见,IOU的值越高也说明A框与B框重合程度越高,代表模型预测越准确。反之,IOU越低模型性能越差。1.2、NMS算法流程1. 先对网络预测出的所有边界框按分数(属于某个种类的概率原创 2021-05-20 10:12:11 · 8638 阅读 · 14 评论 -
【YOLO v4 相关理论】Bounding Box regression loss: IoU Loss、GIoU Loss、DIoU Loss、CIoU Loss
目录背景一、IoU Loss1.1、定义1.2、优缺点1.3、应用场景二、GIoU Loss2.1、定义2.2、优缺点三、DIoU Loss四、CIoU Loss五、PyTorch实现Reference背景对于分类问题而言,我们常常会使用一些L1,L2损失函数,但是对于回归问题而言,L2损失函数真的是合适的吗?答案是否定的,如下图:图中左中右三种情况的L2损失都是相等的,但是他们的回归效果却千差万别。所以L2损失并不能很好的反应我们预测框和真实框的重合程度,于是就有了我们后来的IoU以及IoU L原创 2021-04-28 21:43:21 · 2326 阅读 · 2 评论 -
【YOLO v4 相关理论】Data augmentation: MixUp、Random Erasing、CutOut、CutMix、Mosic
一、MixUp来源:https://arxiv.org/pdf/1710.09412.pdf1.1、背景理论Mixup是MIT和FAIR在ICLR 2018上发表的文章中提到的一种数据增强算法。在介绍mixup之前,我们首先简单了解两个概念:经验风险最小化(Empirical risk minimization,ERM)和邻域风险最小化(Vicinal Risk Minimization,VRM)。经验风险最小化(ERM):“经验风险最小化”是目前大多数网络优化都遵循的一个原则,即使用已知的经原创 2021-05-12 15:37:58 · 2276 阅读 · 8 评论 -
【trick 1】Label Smoothing(标签平滑)—— 分类问题中错误标注的一种解决方法
目录一、提出背景二、Label Smoothing 原理三、Label Smoothing 在YOLO中的应用label smoothing是一种在分类问题中,防止过拟合的方法。一、提出背景交叉熵(Cross-Entropy)损失函数是分类模型中的一种非常重要的目标函数。在二分类问题中,交叉熵损失函数的形式如下:L=−[ylogy^+(1−y)log(1−y^)]L=−[ylog \hat{y}+(1−y)log (1−\hat{y})]L=−[ylogy^+(1−y)log(1−y^)] 其中原创 2021-04-28 10:54:42 · 5606 阅读 · 1 评论 -
【Trick2】torch.cuda.amp自动混合精度训练 —— 节省显存并加快推理速度
目录一、什么是amp?二、为什么需要自动混合精度(amp)?三、如何在PyTorch中使用自动混合精度?1、autocast2、GradScaler四、多GPU训练一、什么是amp?amp:Automatic mixed precision,自动混合精度,可以在神经网络推理过程中,针对不同的层,采用不同的数据精度进行计算,从而实现节省显存和加快速度的目的。自动混合精度的关键词有两个:自动、混合精度。这是由PyTorch 1.6的torch.cuda.amp模块带来的:from torch.cuda原创 2021-04-27 22:53:42 · 15584 阅读 · 9 评论 -
【trick 3】Focal Loss —— 解决one-stage目标检测中正负样本不均衡的问题
来自:https://arxiv.org/abs/1708.02002目录一、提出背景二、设计思路三、总结优缺点一、提出背景目前目标检测的框架一般分为两种:基于候选区域的two-stage的检测框架(比如fast r-cnn系列),基于回归的one-stage的检测框架(yolo,ssd这种),two-stage的速度较慢但效果好,one-stage的速度快但效果差一些。对于one-stage的检测器准确率不高的问题,论文作者给出了解释:由于正负样本不均衡的问题(感觉理解成简单-难分样本不均衡比原创 2021-04-30 18:00:18 · 3516 阅读 · 3 评论 -
【trick 4】multi-scale training多尺度训练 —— 提高模型对物体大小的鲁棒性
# 图像要设置成32的倍数 gs = 32 # (pixels) grid size assert math.fmod(imgsz_test, gs) == 0, "--img-size %g must be a %g-multiple" % (imgsz_test, gs) grid_min, grid_max = imgsz_test // gs, imgsz_test // gs # 是否多尺度训练 默认是 if multi_scale: im原创 2021-05-06 14:06:00 · 4027 阅读 · 3 评论 -
【trick 5】warmup —— 一种学习率调优方法
目录一、warmup定义二、为什么使用warmup2.1、理性分析2.2、感性分析三、常用的warmup3.1、Constant Warmup3.2、Linner Warmup3.3、Cosine Warmup3.4、Warmup的改进:gradual warmup四、PyTorch实现总结Reference学习率是模型训练中最重要的超参之一,针对学习率的优化有很多种方法,而warmup是其中重要的一种。一、warmup定义在模型训练之初选用较小的学习率,训练一段时间之后(如:10epoches或10原创 2021-05-06 13:46:33 · 2275 阅读 · 2 评论 -
【trick 6】mosaic数据增强
def load_mosaic(self, index): """ 将四张图片拼接在一张马赛克图像中 :param self: :param index: 需要获取的图像索引 :return: """ # loads images in a mosaic labels4 = [] # 拼接图像的label信息 s = self.img_size # 随机初始化拼接图像的中心点坐标 xc, yc = [int(rand原创 2021-05-07 08:34:45 · 1816 阅读 · 0 评论 -
【trick 7】Rect矩形推理 —— 显著的减少推理时间
目录一、Square Inference(lettlebox)二、Rectangular inference三、代码四、实验结果一、Square Inference(lettlebox)为了说明什么是Rectangular inference(矩形推理),就得先说说什么是 Square Inference(正方形推理 )。Square Inference就是输入为正方形,通常的做法是lettlebox:求得较长边缩放到416的比例,然后对图片长宽按这个比例缩放,使得较长边达到416再对较短边进行填充使原创 2021-06-16 20:06:22 · 1279 阅读 · 1 评论