自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多模态(三)--- BLIP原理与源码解读

传统的Vision-Language Pre-training (VLP)任务大多是基于理解的任务或基于生成的任务,同时预训练数据多是从web获取的图像-文本对,存在很大的噪声。因此作者提出了BLIP架构,引导语言图像预训练,以实现统一的视觉语言理解和生成。

2024-02-17 20:47:30 1444

原创 多模态基础---BERT

BERT用于将一个输入的句子转换为word_embedding,本质上是一个transformer的Encoder。

2024-02-15 19:34:12 1055

原创 多模态基础--- word Embedding

原始的单词编码方式:one-hot,维度太大,不同单词之间相互独立,没有远近关系区分。wordclass,将同一类单词编码在一起,此时丢失了类别和类别间的相关信息,比如class1和class3都属于生物word Embedding编码方式:将每个word映射到高维向量上。

2024-02-15 17:08:45 957

原创 多模态(二)--- CoCa原理与源码解读

CoCa代表Contrastive Captioner 的缩写,代表模型用两个目标函数训练出来的,一个是Contrastive Loss,一个是Captioning Loss。

2024-02-05 16:17:24 606

原创 多模态(一)--- CLIP原理与源码解读

CLIP的英文全称是Contrastive Language-Image Pre-training,即一种基于。CLIP是一种,训练数据是文本—图像对:一张图像和它对应的文本描述,这里希望通过对比学习,模型能够学习到文本-图像对的匹配关系。

2023-12-27 16:44:06 2075

原创 Stable Diffusion 基本原理

输入一张和我们所需结果图的噪声图像,通过Denoise模块逐步减少noise,最终生成我们需要的效果图。图中Denoise模块虽然是同一个,但是它会根据和选择denoise的程度。

2023-12-23 20:07:20 1889

原创 BEV (3)---DETR3d

①. 利用Resnet101 + fpn提取6张环视图像特征,获得1/4, 1/8, 1/16, 1/32, 4个不同尺度的输出(②. 预设900个预测框(object_querys), 拆分object query为query和query_pos, 利用全连接处理query_pos获得BEV空间3D reference point (x, y, z)的预测结果。

2023-05-16 20:27:32 1875 1

原创 PINet

采用关键点检测+实例分割的思想,完成对车道线点位置的定位,以及每个检测点属于哪个车道线示例。

2023-05-11 13:48:31 633 1

原创 【目标检测】---- centernet

centernet将keypoints思想和encoder-decoder结构用在了目标检测任务中,核心思想就是检测物体的中心点,一个中心点就对应一个物体。可以看成是yolov1的改进版本。

2023-05-10 17:24:20 170

原创 BEV(2)----BEVDepth

常见的自底向上方法的会显示的估计每个特征点的距离,但是这些距离是隐式学习的,在BEVDepth中会利用lidar的点云来监督预测出来的深度,使得预测的距离更加接近真实值。此外,考虑到相机外参可能会对结果进行干扰,文章增加一个网络来学习相机参数,作为注意力权重作用于图像和深度特征。同时,利用cuda实现了高效的体素池化操作。

2023-05-05 23:22:16 1509

原创 BEV (0)---DETR

①. 对给定的输入图像通过resnet进行特征提取,最终得到特征图C5∈R,其中h、w为输入图像尺寸得1/32。随后再用一层1×1卷积压缩一下通道,得到特征图P5∈R。将其转换为Transformer输入格式:[B, h*w, 256]。②. 为了保证图像二维的特性,需要在X和Y两个维度都去计算Position Embedding。利用Position Embedding为输入序列提供位置信息。综上,经过self.backbone(),可以获得图像特征src以及对应得位置编码pos。

2023-04-30 21:00:28 602

原创 BEV(0)---Transformer

Transformer是一个Sequence to Sequence model,特别之处在于它大量用到了self-attention,替代了RNN,

2023-04-30 17:22:08 3648

原创 BEV(1)---lift splat shoot

如图,已知世界坐标系上的某点P(X, Y, Z)经过相机的内参矩阵可以获得唯一的图像坐标p(x, y),但是反过来已知图像上某点p(x, y),无法获得唯一的世界坐标(只能知道P在Op这一射线上),只有当深度坐标Z已知时,我们才可求得唯一的世界坐标P,因此2D坐标往3D坐标的转换多围绕Z的获取展开。

2023-04-16 22:44:21 1169

原创 【目标检测】----损失函数

log的底数为ey表示样本 i 的标签,正类为1,负类为0(注:BCE并不是只能学习0或1的label),使用的是one_hot编码p​表示样本 i 预测为正类的概率,是经过sigmoid后的数N 表示样本个数,这里是取了均值的假设x为输入特征,y为标签,当标签为1时,概率为p。那么标签为0时的概率为1-p。利用最大似然估计将其结合:P(y|x)= p(1-p)我们希望的是概率 P(y|x) 越大越好。

2023-03-31 23:09:17 916 1

原创 【目标检测】---- 正负样本匹配策略

无论是anchor box 还是anchor free,在训练计算类别/前背景损失时都需用到正负样本匹配,目前分为两大类:第一类 fixed label assignment,常用的主要有MaxIou、ATSS、focos第二类 dyanmic label assignment,常用的主要有simOTA、TaskAlign。

2023-03-29 23:14:31 1130

原创 【目标检测】---- YOLOX 旷视2021

YOLOX 以YOLO v3作为baseline主要做了以下改进:①. 输入端的图像增强(Mosaic、Mixup、RandomHorizontalFlip、ColorJitter、多尺度训练)⑤, 训练策略(EMA + 余弦学习率策略)

2023-03-26 23:44:04 572

原创 CNN卷积神经网络基础知识

①. 保护位置信息,奇数卷积核的中心点位置在中心,有利于定位任务。②. padding时左右对称。①. 两个3x3卷积核的感受野与一个5x5卷积核的感受野相同②. 两个3x3卷积核的参数量为3x3x2=18,而一个5x5卷积核的参数量为5x5=25。③. 两个3x3卷积核比一个5x5卷积核多进行了一次非线性(卷积层后面通常接激活层)。

2023-03-17 22:54:39 3247

原创 C++基础16---左值、右值、左值引用、右值引用、move

1 左值与右值2 引用的分类主要有三种形式的引用,左值引用、常量引用、右值引用。2.1 左值引用将变量绑定到左值的引用即为左值引用,左值引用必须初始化,不存在空引用,且不可以绑定右值。int test(){ int a = 1; int &ref = a; cout << ref << endl; //1 ref = 5; cout << a << endl; //5 a = 10; c

2021-04-12 18:10:26 177 1

原创 topk问题

1. 求出现频率前 k 高的元素(1)遍历整个数组,并使用哈希表记录每个数字出现的次数,并形成一个「出现次数数组」。(2)找出原数组的前 k个高频元素,就相当于找出「出现次数数组」的前 k大的值。class Solution {public: class myComparison{ public: bool operator()(const pair<int, int>& lhs, const pair<int, int>& r

2021-03-26 16:07:57 157

原创 智能指针

1 智能指针的类别(1)auto_ptr(c++98), 弃用(2)unique_ptr、shared_ptr、weak_ptrunique_ptr:独占式指针,同一时间内,只有一个指针能指向该对象shared_ptr:共享式指针,多个指针指向同一对象,最后一个指针被销毁时,这个对象被释放。weak_ptr:辅助shared_ptr。2 shared_ptr2. 1 工作原理引用计数,每个shared_ptr的拷贝都指向相同对象。只有最后一个指向该对象的shared_ptr不需要再指向该对

2021-03-26 11:08:30 155

原创 03 移动零(leecode 283)

1 问题给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。2 解法先利用快慢指针移除数组中的0,再在末尾补0class Solution {public: void moveZeroes(vector<int>& nums) { int slow = 0;

2021-03-23 22:26:03 81

原创 05 删除排序链表中的重复元素(leecode 83)

1 问题给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->32 解法链表去重,快慢指针法。最后将slow后面的节点断开。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *n

2021-03-23 21:46:53 77

原创 04 删除有序数组中的重复项(leecode 26)

1 问题给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicate

2021-03-23 21:31:32 151

原创 c++常见问题

1 基本概念1.1 变量的声明和定义有什么区别变量的定义为变量分配地址和存储空间, 变量的声明不分配地址。一个变量可以在多个地方声明, 但是只在一个地方定义。加入extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。1.2 简述#ifdef、#else、#endif和#ifndef的作用利用#ifdef、#endif将某程序功能模块包括进去,以向特定用户提供该功能。在不需要时用户可轻易将其屏蔽。1.3 sizeof 和strlen 的区别(1)sizeof是一个标识符,

2021-03-13 16:21:07 468 1

原创 04 文本检测(三)-FOTS

1 背景常见的深度学习OCR过程中,会把文本检测与文本识别拆分成两个部分,通过先检测后识别的方法对图片中的文本进行OCR识别。FOTS是一个快速的端到端的集成检测+识别的框架,和其他two-stage的方法相比,FOTS具有更快的速度。FOTS通过共享训练特征,互补监督,从而压缩了特征提取所占用的时间。2 网络结构FOTS的整体结构由四部分组成。分别是:卷积共享特征(shared convolutions),文本检测分支(the text detection branch), RoIRotate操作

2021-03-07 16:16:08 428

原创 03 文本检测(二)-EAST

1 背景传统的文本检测方法和一些基于深度学习的文本检测方法,大多是multi-stage,在训练时需要对多个stage调优,这势必会影响最终的模型效果,而且非常耗时.针对上述存在的问题,EAST提出了端到端的文本检测方法,消除中间多个stage(如候选区域聚合,文本分词,后处理等),直接预测文本行。2 网络结构EAST模型的网络结构分为特征提取层、特征融合层、输出层三大部分。2.1 特征提取层特征提取层采用了PVANet,分别从stage1,stage2,stage3,stage4的卷积层抽取

2021-03-07 15:26:36 1414

原创 02 文本检测(一)-CTPN

1 CTPN的背景CTPN是在ECCV 2016提出的一种文字检测算法。CTPN结合CNN与LSTM深度网络,能有效的检测出复杂场景下横向分布的文字。2 CTPN的原理2.1 网络结构CTPN 用到了 CNN 和 双向LSTM 的网络结构:(1) CNN使用了VGG16进行图像的特征提取。(2)双向LSTM对序列各元素前后的联系进行学习。(3)最后为一个全连接层输出要预测的参数2.2 竖直Anchor定位文字位置Faster RCNN用来检测文字时采用的是一个大框,未考虑文本长条型的特性。

2021-03-06 18:09:20 885

原创 循环神经网络 RNN

1 背景传统的全连接网络、卷积神经网络他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列;当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。这时,就需要用到深度学习领域中另一类非常重要神经网络:循环神经网络(Recurrent Neural Network)。2

2021-03-05 16:10:25 395 1

原创 06 整数拆分(leecode 343)

1 问题给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。示例 1: 输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。2 解法class Solution {public: int integerBreak(int n) { vect

2021-02-24 19:55:29 85

原创 05 不同路径 II (leecode 63)

1 问题一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路

2021-02-24 19:25:30 75

原创 04 不同路径 (leecode 62)

1 问题一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -> 向右 ->

2021-02-24 18:56:39 91

原创 03 使用最小花费爬楼梯 (leecode 746)

1 问题数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20] 输出:15 解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。 示例 2:输入:cost =

2021-02-24 17:45:43 99

原创 02 爬楼梯 (leecode 70)

1 问题假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入:2输出:2解释:有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入:3输出:3解释:有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶2 解法爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就

2021-02-24 16:45:21 154

原创 01 斐波那契数 (leecode 509)

1 问题斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2示例 3:输

2021-02-24 16:11:36 102

原创 17 买卖股票的最佳时机含手续费 (leecode 714)

1 问题给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1: 输入: prices = [1, 3, 2, 8, 4, 9], fee = 2 输出: 8解释: 能够达到的最大利润:在此处买

2021-02-23 20:22:59 94

原创 16 单调递增的数字(leecode 738)

1 问题给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)示例 1:输入: N = 10输出: 9示例 2:输入: N = 1234输出: 1234示例 3:输入: N = 332输出: 299说明: N 是在 [0, 10^9] 范围内的一个整数。2 解法遇到strNum[i - 1] > strNum[i]的情况

2021-02-23 19:48:26 110

原创 15 合并区间(leecode 56)

1 问题给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。2 解法首先,将区间按照左边界由小到大顺序进行排列。当前一个区

2021-02-23 18:23:51 93

原创 14 划分字母区间(leecode 763)

1 问题字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例:输入:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。提示:S的长度在[1, 500]

2021-02-23 17:22:08 153

原创 13 无重叠区间(leecode 435)

1 问题给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1 解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输入: [ [

2021-02-23 12:57:43 137

原创 12 用最少数量的箭引爆气球(leecode 452)

1 问题在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆

2021-02-23 11:30:40 83

空空如也

空空如也

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

TA关注的人

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