- 博客(66)
- 收藏
- 关注
原创 论文《OneLLM:One Framework to Align All Modalities with Language》
表中作者将自己的模型那一行选择灰色作为背景,更加凸显自己的数据,另外对于最好的结果用加粗黑体表示,次好结果用下划线表示。(没有会员只有做100个节点,mindmaster金主爸爸可不可以给我一个会员啊啊啊啊呜呜呜~)对于一些模型没有的数据,直接短横线。
2024-10-10 19:20:53 222
原创 C++的联合体union
union只有一个成员,如果我们在联合体中声明4个浮点数abcd,联合体的大小仍然是4个字节。当我尝试去改变它们的数值,它们的内存都是一样的,如果a的值是5,那么d的值也是5.通常我们有一个结构体,声明了4个浮点数,那么结构体中就有4*4=16字节。当我们不断向类或者结构体中添加成员时,其大小也会不断增大。当我们想给同一个变量起两个名字时,union真的很有用,比如我们声明了一个数学向量xyz,我们也可以用这个向量表示颜色rgb。通常union是匿名使用的,但是匿名union不能含有成员函数。
2024-10-07 11:38:34 244
原创 C++的lambda
lambda的用法是:在我们会设置函数指针指向函数的任何地方,我们都可以将它设置为lambda。只要我们有一个函数指针,我们就可以在C++中使用lambda。lambda是我们不需要函数定义就可以定义一个函数的方法。
2024-09-29 18:43:08 279
原创 C++函数指针
lambda本质上就是一个普通函数,只是它不像普通函数这样作声明,它是我们的代码在过程中生成的,用完即丢的函数,是匿名函数。我们使用函数的方法,可能会给函数传入参数,或者传入参数,函数可能有返回值,也可能没有返回值(void)auto关键字可以方便地帮助我们声明一个变量,或者当数据类型过长时,auto关键字是一个不错的选择。问:在上面那个例子中我们是否可以将HelloWorld函数赋值给auto声明的变量呢?因为HelloWorld()函数没有返回值,返回值是void。
2024-09-29 18:13:36 196
原创 CVPR论文《DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets》
这篇论文在理论上对于我来说可能就是让我大致了解了这个领域(因为我的研究方向不是这方面),看完以后也没有看得特别懂(说实话)。12)在表 9 中与其他最先进的方法在推理速度和性能准确性方面进行了比较。2)动态稀疏窗口注意力,每一个子集的格子数是相同的。8)表5消除了我们动态稀疏窗口注意力的建模能力和效率。11)表8所示,我们的池化操作优于所有其他基线。9)表 6 中进一步消除了旋转集分区的有效性。10)表7显示了不同混合窗口形状的结果。更多的收获应该是在论文的写作思路上吧。1)不同方法的性能对比。
2024-09-29 11:44:17 344
原创 C++使用库(静态链接)
静态链接在技术上更块,因为编译器或者链接器实际上可以执行链接时优化之类的,静态链接在技术上可以产生更快的应用程序。静态链接意味着这个库会被放到我们的可执行文件中,它在exe文件中或者其他操作系统下的可执行文件中。静态链接和动态链接的主要区别是:库文件是否被编译到exe文件中或者链接到exe文件中。GLFM库提供了两种库,静态库和动态库。我们可以选择是静态链接还是动态链接。动态链接库是在运行时被链接的,我们可以选择在程序运行时装载动态链接库。当动态链接库被运行时的程序装载时,程序的部分将被补充完整。
2024-09-28 20:57:49 221
原创 C++的vector优化
因为当我们创建vertex时,我们实际上是在主函数的当前栈帧中构造它,所以我们是在main函数的栈上创建它,然后我们需要做的是,是把它放在vector中,所以我们需要做的是把main函数中把这个创建的vertex放在实际的vector中,放在vector分配的内存中。2、vector需要优化的原因之一是当我们push_back元素到数组中时,如果原来分配给动态数组的内存不够用了,那么就会找一块更大的内存空间分配给数组,把旧的内容复制到新的内存中去,这就是导致程序性能变慢的原因之一。为什么会发生这种情况呢?
2024-09-27 18:50:25 214
原创 C++的复制和拷贝构造函数
当我们想要把一个对象或者一个原语或者一段数据从一个地方复制到另一个地方时,我们实际上有两个副本,我们想要复制对象,以某种方式修改它们。但是我们可以避免复制,拷贝指的是要复制数据、复制内存。
2024-09-27 17:56:48 101
原创 C++的动态数组
2、当存储的数据超过动态数组的大小时,它会在内存中创建一个比第一个数组还大的新数组,把所有的东西都复制到这里,然后删除旧的那个。这样我们就有了一个新数组,有更多的存储空间,我们可以像这样不断地向它添加东西。3、实际中,动态数组倾向于经常分配,因此并不能得到最佳性能。1、动态数组是内存连续的数组,在分配时不用指定所需的大小。4、当我们固定分配数组大小时,有时可能不够灵活。vector如何优化?因此想要动态数组更加灵活。请看下一篇博客~~~
2024-09-27 17:55:21 233
原创 CVPR论文《DETRs Beat YOLOs on Real-time Object Detection》读后思维导图
高效混合编码器通过基于注意力的尺度内特征交互(AIFI)和基于cnn的跨尺度特征融合(CCFF)将多尺度特征转化为图像特征序列。然后,最小不确定性查询选择选择固定数量的编码器特征作为解码器的初始对象查询。7、最小不确定性查询和普通查询对比。所选编码器特征的分类和IoU分数。紫色点和绿色点分别表示用最小不确定性查询选择和普通查询选择训练的模型中选择的特征。9、不同变体(A、B、C、D、E)的性能对比,即混合编码器的消融实验。3、IoU阈值和置信度阈值对准确性和NMS执行时间的影响。10、查询选择的消融实验。
2024-09-27 11:07:58 376
原创 C++的智能指针
如果其中一个die了,那么它就会释放这段内存,也就是说,指向同一块内存的第二个unique_ptr指向了被释放的内存,所以我们不可以复制unique_ptr。智能指针实际上是一个原始指针的包装,当我们创建一个智能指针,它会调用new并为我们分配内存,然后基于我们使用的智能指针,这些内存会在某一时刻自动释放。共享指针shared_ptr的工作方式是通过引用计数,引用计数基本上是一种方法,可以跟踪我们的指针有多少个引用,一旦引用计数达到0,它就被删除了。很久之前,我们说到了new和delete关键字。
2024-09-26 18:38:03 257
原创 C++的生存期
我们期望在主函数外面定义了一个函数来创建一个数组,然后在主函数使用这个数组,但是CreateArray函数创建的数组是基于栈创建的,一旦退出作用域,指针将自动释放,因此我们不能通过这种方式来获取指向数组内存地址的指针。我们可以使用堆来创建对象,但是在退出作用域时,它可以自动释放内存。也就是说结合了栈和堆的优点,这是可以做到的——智能指针。我们可以使用堆来创建。请看下一篇博客~~~
2024-09-26 17:50:15 287
原创 C++的this关键字
在C++中有一个关键字this,通过它可以访问成员函数。成员函数就是属于某个类的方法或者函数,在方法内部,我们可以使用this。this是一个指向当前对象实例的指针,该方法属于这个对象实例。
2024-09-26 17:29:25 73
原创 C++运算符以及运算符重载
2、运算符重载,重载这个术语本质上是给运算符重新赋予新的含义,或者添加参数,或者创建,重载允许在程序中定义或者更改运算符的行为。1、运算符是我们使用的一种符号,通常代替一个函数来执行一些事情。运算符就是函数,不用给出函数名。
2024-09-26 16:16:58 127
原创 C++的隐式构造函数、隐式转换和explicit关键字
2、explicit关键字是阻止C++使用隐式转换。explicit放在构造函数的前面,那么这个构造函数就不会隐式转换。如果要用一个整数构造这个Entity对象,就必须显式地调用这个被explicit修饰的构造函数。事实上这里发生了隐式转换,或者叫做隐式构造函数,它隐式地将22转换成为一个Entity,构造出一个Entity,因为有一个构造函数接收一个int类型的参数,有另一个构造函数接收字符串作为输入参数。1、隐式的意思是不用告诉它该怎么做,有点类似于自动化的意思。C++只会做一次隐式转换。
2024-09-26 15:18:19 186
原创 C++的new关键字
使用完new之后一定要使用delete来释放内存,不释放它就不会被放回到空闲列表中,所以就不能被new调用以后再分配,直到我们调用delete,我们必须手动释放内存.写了new,再写数据类型,不管是一个类,还是一个基本类型,还是一个数组,根据我们所写的决定必要分配的大小,以字节为单位。比如,我们写了new int,则会分配4字节的内存,new返回的是指向分配的内存的指针。int* b = new int[50] //200字节的内存。在堆上分配了4字节的内存,b存储的是内存地址。如果想要创建一个数组。
2024-09-26 14:43:01 244
原创 C++创建对象
在栈上创建的对象有一个自动的生存期,它的生存期实际上是由它声明的地方作用域决定的,只要变量超过作用域,内存就会被释放。因为当作用域结束时,栈会弹出作用域中的东西,栈中的任何东西都会被释放。在堆上创建的对象,只要我们不释放这个对象,它会一直在那里,占用着这一段内存。所以我们需要手动释放这些内存。即使我们写了一个完全为空的类,其中没有任何成员,它至少也要占用一个字节的内存。1、基本上,当我们写完一个类,就该使用我们创建的类了,我们需要实例化它。3、在C++中,我们创建对象时要选择是在栈上创建还是堆上创建。
2024-09-26 13:45:41 189
原创 C++的成员初始化列表
可以看到我们在Entity类的默认构造函数中使用了方法一进行初始化,并且传入了8这个参数,但事实上,我们在Example这个类中,并没有跳过不带参数的默认构造函数,而是不带参数的默认构造函数和带参数的构造函数都执行了,而这会造成性能浪费。1、构造函数初始化列表,这是我们在构造函数中初始化类成员(变量)的一种方式,因此,当我们编写一个类并向该类添加成员时,通常需要用某种方式对这些成员(变量)进行初始化。注意:在初始化成员列表时,需要按照顺序写,如果不按照顺序写,编译器可能会警告。
2024-09-26 12:06:07 349
原创 C++学习——const关键字
mutable实际上有两种不同的用途,其中之一,是与const一起使用,另一种是用在lambda表达式中国,或者同时覆盖这两者。如果我们把变量设为mutable,即使在const方法中,我们也可以修改var这个变量。3、lambda就像是一个一次性的小函数,我们可以写出来并且赋值给一个变量。const基本上就像我们做出的承诺,承诺某些东西将是不变的。即mutable允许函数是常量方法,但可以修改变量。1、const有点像类和结构体的可见性。2、关键字mutable。
2024-09-25 21:50:26 211
原创 C++字符串字面量
以下这段代码是不能运行的,因为name已经是const的,不能修改name的字符,但是把const去掉可能会运行(但好像也不可以)。但是不建议这么操作,因为这可能会导致所谓的未定义行为,这是因为C++标准并没有定义在这种情况下应该发生什么。因此,一些编译器可能会为此生成有效的代码,但我们不能依赖它。2、未定义是不被允许的,因为我们在这里所做的是:取了一个指向那个字符串字面量的内存位置的指针,而字符串字面量是存储在内存的只读部分的。如果我们确实想要修改字符串中的字符,我们可以定义一个字符串数组,而不是指针。
2024-09-25 20:25:53 193
原创 C++学习——字符串
string有一个构造函数,它接受char*或者const char*作为参数,当不希望字符串的内容改变时,使用const修饰。在C++中,当我们定义字符串时,用双引号引起来的一个单词或者多个单词,实际上是const char数组,而不是char数组。
2024-09-25 11:12:13 200
原创 C++学习——数组
在堆上创建的,直到程序把它销毁之前,它都是处于活动状态的,所以我们需要使用delete关键字来删除。在栈上创建的,当我们达到主函数最后的花括号时,它就会被销毁,因为跳出了作用域范围。最大的原因在于生存期不同,用new分配的内存,它将一直存在,直到我们删除它。即可得到数组的大小,但是用堆创建的数组不可以通过这种方式计算数组大小。1、数组定义方式,以下两种的区别在于生存期不同。在栈上创建的数组,我们可以很容易的计算数组的大小。int表示数组中的元素类型,5表示数组的大小。2、我们何时使用栈?
2024-09-24 18:22:40 275
原创 C++可见性
4、如果我们在Entity类中私有化的两个变量X和Y,那么我们在主函数中声明一个Entity的实例e时,我们不能直接对e.X=2这样操作,因为X是私有的,只有Entity类和它的友元才能访问这些变量。可见性是为了让代码更加容易维护、容易理解,不管是阅读代码还是扩展代码,与性能无关,也不会产生完全不需要的代码。1、可见性是一个面向对象编程的概念,它指的是类的某些成员或者方法实际上有多可见。注意,这里的可见是指:谁能看见它们,谁能调用它们,谁能使用它们。在其他的语言如Java或者C#中,有其他的关键字。
2024-09-24 12:43:08 480
原创 C++学习
在面向对象中,创建一个类,只由未实现的方法组成,然后强制子类去实际实现它们,这非常常见,这通常被称为接口。因此,类中的接口只包含未实现的方法,作为模板。注意:以下代码与前一篇博文的代码相比有改动,主要是Entity类中的虚函数写成=0了,那么本质上就是一个纯虚函数了。纯虚函数允许我们在基类中定义一个没有实现的函数,然后强制子类去实现该函数。纯虚函数本质上与其他语言(如Java,C#)中的抽象方法或接口相同。纯虚函数必须被实现,才能创建这个类的实例。(接口只是C++的类而已)
2024-09-23 18:47:55 597
原创 阅读CVPR论文——mPLUG-Owl2:革命性的多模态大语言模型与模态协作
1)实验部分非常丰富,并且论文中的图制作的非常精美,论文开篇的图制作的别出心裁,将几种不同的方法表现出的性能差异不是以普通的表格形式展现,而是制作成了一副环状折线图,论文中其他的图、表格也包含了很丰富的信息;2)模态之间协作能够使模型更好地理解和处理输入信息。
2024-09-23 18:03:01 661
原创 C++虚函数
原因:我们通常声明函数时,我们的方法通常在类内部起作用,当要调用方法的时候,会调用该类型的方法,我们的PrintName函数,它的参数是Entity,当我们调用该函数时,它会去Entity类中找这个叫做GetName的函数,所以Player(p指针)的输出也是Entity。(overr非必需,但加上为好,告诉我们这是一个覆写函数,代码可读性更好)方法:加上virtual。
2024-09-22 21:37:51 358
原创 C++学习
虚函数引入了一种动态联编(Dynamic Dispatch)的东西,它通常通过v表(虚函数表)来实现编译,v表就是一个表,它包含基类中所有函数的映射,这样我们可以在运行它时,将它们映射到正确的覆写(override)函数。假设我们有两个类A,B,B是由A派生出来的,即B是A的子类,如果我们在A中创建一个方法,标记为virtual,我们可以在B中重写这个方法,让它做其他的事情。2)每次调用虚函数时,我们需要遍历v表,来确定要映射到哪个函数,这是额外的性能损失。输出为8(因为float占4字节,两个8字节)
2024-09-22 21:11:08 1433
原创 C++学习
当在结构体或者类外使用static时,被static修饰的变量或者函数仅仅在当前翻译单元(当前.cpp文件)可见,当在另一个.cpp文件中想要使用到该变量或者函数时,是找不到的(看不到的)。构造函数,不实例化对象,就不会运行。构造函数的主要目的是初始化该类,当我们创建一个新对象实例时,构造函数确保初始化了所有的内存,做了所有需要的设置。构造函数是创建一个实例对象时运行的,析构函数是销毁对象时运行。在类中写的每一个方法,每个静态方法总是获得当前类的一个实例作为参数,静态方法与在类外部编写的方法相同。
2024-09-22 20:19:53 165
原创 《适合跨域目标检测的雾霾图像增强_郭强》论文泛读笔记
读过这篇文献后做了一些思考和总结,邀你一起阅读 《适合跨域目标检测的雾霾图像增强_郭强》 https://www.xljsci.com/editor/?id=itvs8Lz0HKIM6aU1EQNQHIzhE%2FzomJdiPFn%2FolWDagQ%3D(请在浏览器中打开此链接)
2024-09-21 21:28:46 133
原创 C++学习笔记
1、编译阶段,编译器会遍历所有的预处理语句并对其进行处理,常见的预处理语句有include、if、ifdef等等。每个文件被编译成单独的目标文件(obj文件,一个翻译单元),但是它们之间没有联系,无法交互。#include指定了我们想要打开的文件,预处理器打开这个文件,阅读这个文件,拷贝这个文件到当前文件中。5、类中的成员默认下是私有的,类允许我们将变量分组到一个类型中,并为这些变量添加功能。2、链接阶段主要是找到每个符号和函数在哪里,并把它们链接起来。4、引用必须初始化,引用必须是对已有的变量引用。
2024-09-21 21:27:55 231
原创 《Exploit temporal cues in multi-camera 3D object detection》论文泛读
针对单帧数据含有的信息太少的问题,提出了一种新的方法,BEVDet4D,这种方法可以访问时间线索,并且取得了较好的表现,大幅提升了性能,未来研究集中于主动挖掘时间线索的框架与范式设计。
2024-09-14 21:36:56 182
原创 《基于深度半监督学习的目标检测综述》泛读
1、这篇论文将目前主流的所有的方法进行了归类,对于不同方法列表进行了对比,在不同的数据集上也有对比。对典型方法进行了性能对比,最后分析了其挑战和发展趋势,旨在为相关研究提供参考。4、数据对比越多越好,在不同的数据集上对比,越多越好。2、对比数据很多,mAP对比,其他指标对比等等。基于深度半监督学习的目标检测方法分为。4、伪标记方法和混合方法。2、一致性正则化方法。
2024-09-12 21:26:40 241 2
原创 如何高效阅读论文呢???
泛读这篇论文不在状态,求助前辈们该如何高效的阅读论文呢?论文题目《多模态数据融合研究综述》,介绍了多模态数据融合技术以及对齐方法,最后是展望以及未来的发展。
2024-09-11 20:50:16 287
原创 研一小白读论文记录,计算机视觉,Transformer
2、文章使用了大量的不同模型做比对,目前已知的Transformer模型进行了对比试验,对于首先提出的CrossFormer和后来改进的CrossFormer++,作者对比了现存的模型以及文章中提出的两种模型结构,消融实验也是很丰富——是否存在CEL、PGS、ACL等对准确性的影响等等。1、文章在实验的结果中呈现了大量的图片和表格,并且对于自己的数据使用了高亮显示,且在括号里还标注了与最好的模型相比,精度提升的具体数值,从而读来一目了然。附上简单制作的思维导图,希望各路大神能够指点一二,不胜感激!
2024-09-09 16:52:04 668
原创 Python面向对象学习小记——面向过程VS面向对象
面向对象就好比你一个包工头,你可以差遣你下面的工人去做】【面向过程就好比你是一个工人,你得亲自去做一个个任务。
2024-02-15 15:18:35 485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人