自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 Bag of Tricks for Image Classification with Convolutional Neural Networks(图像分类神经网络训练技巧)

该篇文章其实就是各个网络中训练技巧的一个集合。由于之前在图像分类中取得的大部分的进展其实都是由训练过程的改进得到的,比如数据增强和优化方法的改进得到的。但是在提出方法的文章中,我们只能在实验细节或者开源代码中见到,所以该篇文章就将这些训练技巧进行了汇总,并进行实验进行验证评估。实验证明,将这些改进结合起来能够将ResNet-50的准确率由75.3%提升到79.29%,实验还验证了,图像分类精度的提高也能应用在其他领域,带来更好的迁移学习的性能。

2022-11-18 17:29:39 1508 2

原创 BN层详解(含有公式推导过程)

如果以上的你懂看明白的话,BN你就理解的差不多了。BN层就是用在激活函数前,用来使上一层的输出,分布在均值为0,方差为1的情况下,也就是对下一层的输入做归一化的操作,这样就能够使它经过激活函数时能够有一定的梯度,从而避免值太大而进入饱和区,梯度就非常小了,不利于梯度下降。并且除了均值和方差,BN层还有自己的学习参数γ和β,网络通过学习来得到想要的数据分布,参数γ和β在训练中通过反向传播中的γ与β求得梯度,从而不断改变每个通道的γ和β参数。

2022-09-19 15:46:54 19610 6

原创 RepVGG论文详解(结合代码)

主要创新点为结构重参数化。在训练时,网络的结构是多分支进行的,而在推理时则将分支的参数进行重参数化,合为一个分支来进行的,所以推理的速度要比多分支网络快很多,并且精度也比单分支的网络更高。

2022-09-16 21:27:22 6165 7

原创 理解ConvNeXt网络(结合代码)

ConvNeXt网络本身没有什么亮点,全是应用的现有的方法来进行网络的调整,特别是大量细节的设计都是参考了swin transformer的网络结构的。并且ConvNeXt是以ResNet50网络为backbone来进行调整的,所以ConvNeXt的网络结构非常简单,一目了然,理解起来也是非常容易的。并且不仅精度比swin Transformer高,推理速度还快。综合来说,ConvNeXt是一个非常好的文章。这里放上我看到的一个网友对ConvNeXt网络的评价。“感觉这篇论文的思路是照着swin-

2022-09-13 11:14:08 15406 8

原创 目标检测算法中,COCO评价指标的解析

AR(averagerecall)即平均召回率,是IoU在[0.5,1.0]上所有recall的平均,对于不同的iou取。与图像分类的评价指标有所不同,图像分类是在所有的图像中分类正确和错误的概率。AP为IOU从0.5开始,每次增加0.05直到0.95,一共有十个IOU值,求出每一个IOU的AP,然后求平均得到。OB(IOU=0.5)表示当目标框与GTbox的IOU大于0.5时就为Ture,小于0.5就为False。FPIoU...

2022-07-20 19:58:05 3126 1

原创 关于目标检测中正负样本的理解

一开始学习时我没有太关注正负样本的问题,我以为正样本就是标注好的GT box,然而学到后面发现有很多的区别正负样本的方法,我才知道自己理解错了。正例是用来使预测结果更靠近真实值的,负例是用来使预测结果更远离除了真实值之外的值的。看了好几篇博文之后我大概有了一些基础的理解,在分类问题中,对于狗这一类来说,所有标签为狗的图片都是狗类的正样本,其他的图片都是负样本,正负样本也就是所有图片都进入损失函数进行梯度下降。而在目标检测中的位置回归的问题中就不适用了,因为不能将所有的预测框都进入损失函数进行计算,这样的话就

2022-07-07 14:32:58 4675

原创 动手学深度学习——6.循环神经网络

处理序列数据需要统计工具和新的深度神经网络架构。为了简单起见,我们以所示的股票价格(富时100指数)为例。图8.1.1 近30年的富时100指数其中,用𝑥𝑡表示价格,即在时间步(time step) 𝑡∈𝑍+时,观察到的价格𝑥𝑡。请注意,𝑡对于本文中的序列通常是离散的,并在整数或其子集上变化。假设一个交易员想在𝑡日的股市中表现良好,于是通过以下途径预测𝑥𝑡:为了实现这个预测,交易员可以使用回归模型, 例如在中训练的模型。仅有一个主要问题:输入数据的数量, 输入𝑥𝑡−1,…,𝑥1本身因𝑡而异。

2024-07-24 00:30:51 988

原创 动手学深度学习——5.卷积神经网络

现在,我们将上述想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络架构。平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。卷积神经网络是包含卷积层的一类特殊的神经网络。

2024-07-17 20:55:27 1052

原创 动手学深度学习——4.深度神经网络

现在我们可以更仔细地看看Sequential类是如何工作的, 回想一下Sequential的设计是为了把其他模块串起来。为了构建我们自己的简化的, 我们只需要定义两个关键函数:一种将块逐个追加到列表中的函数;一种前向传播函数,用于将输入按追加块的顺序传递给块组成的“链条”。

2024-07-17 18:02:24 984

原创 动手学深度学习——3.多层感知机

例如,线性意味着单调假设: 任何特征的增大都会导致模型输出的增大(如果对应的权重为正), 或者导致模型输出的减小(如果对应的权重为负)。有时这是有道理的。例如,如果我们试图预测一个人是否会偿还贷款。我们可以认为,在其他条件不变的情况下, 收入较高的申请人比收入较低的申请人更有可能偿还贷款。但是,虽然收入与还款概率存在单调性,但它们不是线性相关的。收入从0增加到5万,可能比从100万增加到105万带来更大的还款可能性。

2024-07-15 23:24:01 929

原创 动手学深度学习——2.预备知识

为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。通常,我们需要做两件重要的事:(1)获取数据;(2)将数据读入计算机后对其进行处理。如果没有某种方法来存储数据,那么获取数据是没有意义的。首先,我们介绍𝑛维数组,也称为张量(tensor)。使用过Python中NumPy计算包的读者会对本部分很熟悉。无论使用哪个深度学习框架,它的张量类(在MXNet中为ndarray, 在PyTorch和TensorFlow中为Tensor)都与Numpy的ndarray类似。

2024-07-12 15:58:06 674

原创 动手学深度学习—— 1.引言

首先介绍一些核心组件。无论什么类型的机器学习问题,都会遇到这些组件:可以用来学习的数据(data);如何转换数据的模型(model);一个目标函数(objective function),用来量化模型的有效性;调整模型参数以优化目标函数的算法。

2024-07-12 14:46:03 461

原创 理解CAE

我们提出了一种新的掩模图像建模(MIM)方法,上下文自编码器(CAE),用于自监督表示预训练。我们通过在编码的表示空间中进行预测来预训练编码器。预训练任务包括两个任务:掩模表示预测—预测掩模块的表示,以及掩模块重建—重建被掩模块。该网络是一个编码器-回归器-解码器架构:编码器将可见的patch作为输入;回归量使用可见补丁的表示以及可见和被掩盖的补丁的位置来预测掩码补丁的表示,该掩码补丁预计将与从编码器计算的表示对齐;解码器根据预测的编码表示重建掩码补丁。

2024-03-04 15:34:45 1064

原创 MoCo全系列论文详解(含单GPU训练代码)

对比学习的本质实际上是让两个相似(比如相同类别)的图像在特征空间内尽可能相近,不相似的图像尽可能远,这里相似的图像就是正样本,不相似的图像就是负样本。而如何区分正负样本对的方法就形成了各式各样的代理任务(pretext task)。那MoCo所用的代理任务就是个体判别了,每张图像都是单独的一类,在网络中只有原图经过数据增强后的图像属于原图的正样本,其他的图像都是负样本。有了区分正负样本的方法后就是常规的,进入encoder提取特征,输出的特征用NCEloss进行反向传播,梯度下降。

2023-12-26 22:16:58 3501 15

原创 对比学习综述

代理任务:个体判别。把每一个图片看作是一种类别,把每一个图片都区分开来。正负样本选择:正样本是图片本身,负样本是数据集里的其他图片,该文章从memory bank中随机抽取4096个负样本出来进行训练。损失函数:NCEloss。

2023-12-22 19:14:24 551

原创 自监督学习综述

其实自监督学习的核心思想很简单,利用大量的无标签数据训练模型,然后将其作为预训练模型在下游任务上进行微调(有标签)。在用无标签图像训练模型时主要通过设计辅助任务,用图像自身的信息作为标签训练。常见的就是对比学习,将原图本身和经过图像增强的图像作为正样本,其他作为负样本。对比学习,cv通过对输入图像进行数据增强,将数据增强的图像作为原图的正样本,其他输入图像作为负样本。但是这种模式在nlp中却不好使用,将一句话中的单词替换为同义词,预测的结果很可能会产生偏差,所以nlp选择用dropout的方法。

2023-12-19 20:39:25 1801 1

原创 理解VAE(变分自编码器)[结合代码]

贝叶斯理论的思路是,在主观判断的基础上,先估计一个值(先验概率),然后根据观察的新信息不断修正(可能性函数)。P(A):没有数据B的支持下,A发生的概率,也叫做先验概率。这完全是根据经验做出的判断,这也是前面说的贝叶斯公式的主观因素部分。P(A|B):在数据B的支持下,A发生的概率,也叫后验概率。即在B事件发生之后,我们对A事件概率的重新评估。P(B|A):给定某参数A的概率分布:也叫似然函数。这是一个调整因子,即新信息B带来的调整,作用是使得先验概率更接近真实概率。

2023-12-08 17:27:33 834

原创 理解DALL-E 2

DALL-E 2的效果想必大家都已经很清楚了,效果是非常惊人的,该篇文章就是讲一下DALL-E 2的原理是什么。

2023-11-28 09:20:40 1139

原创 理解CLIP模型

学习深度学习必看CLIP!论文链接。简单来说就是传统的分类任务被用来预测指定的类别,有监督训练限制了模型的通用性和可用性,并且需要带有标签的数据来训练,该篇论文就想直接从原始文本中学习图像特征,具体就是从网络上采集大量的带有文字描述的图片,同时向网络输入原始文字和图像,网络来学习他们之间的关系。预测时通过输入一句话就能判断图像是否与其匹配了,具有很强的泛化性能。这就是zero shot,不用数据集中任何一张图片,就能够达到ResNet-50的精度。

2023-11-24 17:13:52 578

原创 从0开始微信小程序开发

分别对应的是布局,文本,图像,导航跳转。WXML和HTML的区别。view默认占满一行。

2023-10-11 10:22:21 239

原创 知识储备--基础算法篇-回溯法

每一个递归都包含回溯,回溯是一种纯暴力搜索方法。每个回溯法都可以抽象为一种N叉树。树的宽度为子集的个数,深度为递归返回的条件。二叉树中的递归都会有回溯算法,只不过有些题目用到了,有些没有用到。

2023-09-29 20:19:20 206

原创 知识储备--基础算法篇-贪心算法

贪心算法能够通过局部最优去推出全局最优,而背包问题不行,需要用动态规划的方法来解决。

2023-09-25 16:59:41 276

原创 知识储备--基础算法篇-二叉树

2**k-1满连续。

2023-09-17 17:31:51 127

原创 知识储备--基础算法篇-链表

链表在python中是可以自定义的,属性包括val和next。一般表示链表都是用头节点表示,得到下一个节点用next,都是地址,想要得到值用val。

2023-09-15 15:43:00 171

原创 知识储备--基础算法篇-子串

给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的连续子数组的个数。2一开始想用滑动窗口,但是在运行过程中碰到了很多不好处理的例子,不好弄。就直接看解析了,决定用ij范围遍历,结果超时。看了解析,说实话挺不好想的。

2023-09-05 19:57:31 92

原创 知识储备--基础算法篇-滑动窗口

给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc",所以其长度为 3。心得:用哈希表来一点点遍历,但是因为哈希表占内存,我又是两个循环遍历,所以速度又慢,占的内存还多。看了解析,我的整体思路差不多,不过他用了滑动窗口,计算量少了很多 ,而且一开始没有理解left的含义,left是用来从窗口的左边开始删除元素,直到哈希表中没有相同的元素为止。还有就是用set()不要用{},set需要使用add和remove。

2023-09-04 21:56:22 108

原创 知识储备--基础算法篇-矩阵

第一题上来就跪了,看了官方答案感觉不是很好理解,找了一个比较容易理解的。还有一个暴力方法,其中有几个知识点,技巧:使用zip(*matrix)代码:这里*解包,zip压缩,zip后变成zip类型,zip会把原有矩阵从第一列开始,把每一列打包成一个元祖,把元祖强转为list达到矩阵转置的效果。但是实现顺时针旋转效果还需要配合[::-1]使用,先把行调换,第一行与最后一行换,然后再矩阵转置,达到矩阵旋转的效果。

2023-09-04 11:14:30 1037

原创 知识储备--基础算法篇-数组

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。心得:一直在纠结这个连续的事情,最后发现根本没必要管,因为如果前一个数与当前数相加小于当前数,前面的部分就会直接被舍弃,如果相加大于当前数则会一直叠加。时间和内存占用太多,根本没必要再生成一个dp数组,直接用nums数组更新就行。

2023-09-02 15:11:30 240

原创 知识储备--基础算法篇-动态规划

有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x

2023-08-21 20:36:31 700

原创 知识储备--基础算法篇-Hash table

做完哈希表的题发现有几个重点,一个是什么时候用,在需要快速查找一个元素是否在集合里时,就要用到哈希表。一个是需要掌握数组,dict(),set()的基础用法,不然真的很麻烦。

2023-08-20 21:45:24 143

原创 知识储备--基础算法篇-排序算法

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

2023-08-20 13:35:29 323

原创 知识储备--基础算法篇-二分搜索

最近准备开始刷算法题了,搜了很多相关的帖子,下面三个很不错,计算机视觉秋招准备过程看这个:​​​​​​计算机视觉算法工程师-秋招面经 - 知乎 (zhihu.com)复习深度学习相关知识看深度学习500问:深度学习500问(github.com)刷题看这个:算法模板,最科学的刷题方式,最快速的刷题路径,你值得拥有~ (github.com)准备每天学习一点,刷几道题,后面将会持续更新。

2023-08-17 23:40:32 207

原创 理解Deformable Convolution网络

偶然了解到了可形变卷积这篇文章,看了几篇博文后大致了解的差不多了,但是有些细节还是看了代码之后才理解。这里想自己写一下关于这篇论文的了解,希望自己能够讲清楚。这里放一篇写的很好地博文链接,想更深入了解代码的可以去看一下。这里先放一下原文的摘要:卷积神经网络(cnn)由于其构建模块中固定的几何结构,固有地局限于模拟几何变换。在这项工作中,我们引入了两个新的模块来增强cnn的变换建模能力,即形变卷积和形变RoI池。

2023-07-16 12:31:33 492

原创 全景图像畸变校正

理想的相机基本上是小孔成像的,在小孔成像模型中,如果焦距一定,那么图像传感器像素平面的面积直接决定了相机视场角的大小,超过这个视场角范围的物体不会被镜头获取到。因此基于透镜成像原理的相机,视场角无法做到足够大,水平视场角一般小于140°。但是在一些领域,比如气象科学,科技工作者需要对天空天象变化进行观测,需要有一种相机能将整个半球形天空一次性拍摄下来。而在安防监控领域,安保团队期望有一种相机能从俯视角度一次性拍摄整个监控区域。而为了实现这些目的,就需要相机具有水平180°甚至更大的视场角能力。

2023-04-12 11:29:48 2647 1

原创 多目标跟踪MOT(Multiple Object Tracking)最全综述

多目标跟踪,一般简称为MOT(Multiple Object Tracking),也有一些文献称作MTT(Multiple Target Tracking)。在事先不知道目标数量的情况下,对视频中的行人、汽车、动物等多个目标进行检测并赋予ID进行轨迹跟踪。不同的目标拥有不同的ID,以便实现后续的轨迹预测、精准查找等工作。MOT是计算机视觉领域的一项关键技术,在自动驾驶、智能监控、行为识别等方向应用广泛。如下图所示,对于输入视频,输出目标的跟踪结果,包括目标包围框和对应的ID编号。

2023-03-14 10:56:42 30324 3

原创 多目标跟踪MOT:Deepocsort+YOLOv8+OSnet实战(代码讲解)

因为我一开始完全看不懂代码,自己摸索真的很累,所以我想能够帮助需要的人来快速理解代码,重要部分我都已经打上注释,还有不理解的地方可以在评论区留言。""""""import pdbimport cv2# 若轨迹的观测数为0dt = k - i""""""""""""else:return Qreturn R""""""count = 0""""""else:if new_kf:else:# 每有一个卡尔曼轨迹id就加一""""""""""""break。

2023-03-13 23:13:29 7394 14

原创 Java基础:经典算法题

【代码】Java基础:经典算法题。

2023-03-03 19:56:07 586

原创 Java基础:lambda表达式

【代码】Java基础:lambda表达式。

2023-03-02 23:13:32 90

原创 Java基础:Arrays

由于都是静态方法, 所以可以直接通过类名调用.

2023-03-02 22:29:25 66

原创 Java基础:常见算法(排序算法)

【代码】Java基础:常见算法(排序算法)

2023-03-02 22:05:40 104

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除