- 博客(94)
- 收藏
- 关注
原创 Boosting Object Detection with Zero-Shot Day-Night Domain Adaptation
摘要:低亮度场景检测是一个小众且重要的方向,首先在于数据集和过往的研究都集中在光照充足的环境下,其次如果使用传统的训练方法的话由于训练难度大,模型效果也不会很好,有幸的是,现在关于低亮度的研究已经提上日程,且有了一些进展,通过收集和标注低光照场景下的数据集,和相关检测方法的研究,有了长足的进步。低光照检测的不同方法和策略:1,通过增强进行检测:首先利用低光照增强技术生成明亮的图像,然后再进行物体检测,通过增强图像的亮度和对比度,使得物体检测算法能够在增强后的图像上进行更加有效的检测。
2024-10-24 18:01:38 729 1
原创 Deformable Detr
在初始化的时候(自注意力机制),你对于特征图上所有像素点赋予的权重基本上是相同的,所以导致要训练很长的周期。为了识别每个查询像素点所在的特征层,作者在特征表示中添加了一个尺度级的嵌入,(除了位置嵌入外的另一个嵌入),提供了特征图的层级信息。摘要部分:作者首先是肯定了Detr在目标检测上的贡献,然后指出了其不足,在收敛速度,以及对于小目标检测上仍然存在一定的漏洞,在此,作者提出了可变型detr,目的是针对每一个特征点,只针对周围小批量的特征点进行采样。作为补偿,以固定的时间间隔关注key元素,增加感受野。
2024-10-23 16:42:10 822
原创 Detr论文精读
作者提到,该方法将物体检测看做直接的集合预测,在传统的目标检测算法中,会先生成候选区域,然后对每个候选区域进行单独的预测(包括物体的分类和预测框的回归),集合预测就是直接基于原始图像生成一系列预测结果,避免了划分区域。(不知道我这样理解对不对)。这样能够简化流程。该模型基于二分匹配(我的理解是预测结果与真实结果之间的匹配)以及transformer机制(简单来说就是编码和解码过程)对目标进行检测的,并且是并行输出,(看来是直接拿transformer的结果来用啊,改都不改一点)。
2024-10-20 18:47:03 1012
原创 试着了解YOLOx
使用的是anchor-free网络。再者就是CAM注意力模块儿,首先将输入的向量进行全局的池化,拼接过程中伴随着通道数的缩小(减少计算量),将得到的结果进行mish处理,然后再做逆向切分,将得到的两个部分都使用sigmoid激活函数的处理,处理后的结果扩展为x的形状,与x做逐元素相乘得到返回的结果。关注YOLOHead部分,将预测分为两部分,左侧的部分预测的是物体的种类,右侧的部分预测的是是否包含物体以及是否特征点的回归系数(预测框的坐标)。包括:主干网络,自底向上的特征提取,,自顶向下的特征融合。
2024-10-14 20:31:55 1095
原创 YOLO5的修改
C2f相对复杂,将输入层经过多次分割,更好的融合了不同层次的特征。(但是仅有理论不能确定其在yolov5中是否更加有效,在此我将源代码中的C3全部替换变成C2f(包含主干部分和头部分),结果效果仍然是变差的)),当然也有可能是我选择添加的位置不对。输出是将输入先放到第一个卷积中,然后将得到的结果放到瓶颈层中,同时与原始输入经过第二个卷积层得到的结果相拼接。由于yolo的显著优势就是能快速收敛,所以对于模型的速度要求很高,这里我们就固定取100轮,在使用SE的基础上,我们将所有C3层改为C2f层。
2024-10-10 20:28:24 649
原创 我的深度学习笔记
重新梳理一下:dert和deformable dert的最大不同在于注意力机制的采样不同,dert在得到特征图之后,用特征图加上位置编码经过初始化的Q,V,K层(可训练)训练得到初始的Q,K,V,通过对得到的QKV进行运算之后,得到输出,输出加上之前进入注意力层之前的特征图,作为下一个注意力层的输入,经过多个注意力层之后得到输出结果,在decoder层中初始化100个向量(用来预测注意力的位置),进行自注意力机制提取之后,进行解码,解码层引入了编码层的输出结果。经过多个解码层之后得到预测的框和内容的输出。
2024-09-28 21:23:33 925
原创 机器学习与模式识别大作业
这段代码是初始化的代码,在data类中,主要内容是解析游戏相关配置,从指定文件中读取并解析游戏相关配置信息,包括地图尺寸,地图内容,玩家信息,敌方基地和飞机信息,并将这些信息组织成易于处理的数据结构。当队列非空时,从队列中取出一个节点进行处理,遍历当前节点的四个相邻位置,针对每个相邻位置,进行越界检查,检查是否有充分的燃油供给(计算当前位置到基地的距离,确保基地燃油减去当前位置之后仍然》0)。实现过程中,循环创建飞机对象,添加到plane_arr中,并为每架飞机计算最近的己方基地,敌方基地的路径。
2024-06-19 16:29:11 635
原创 数据库的一些知识点
常用模型是E-R模型设计。数据冗余,插入异常(应当插入的数据不能执行插入操作),删除异常(不应该删除的数据被删除)。数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL),嵌入与会话规则。用户标识和鉴别,存取控制(自主存取控制,强制存取控制),视图机制,数据加密,审计。外模式(对局部数据逻辑结构的描述),模式(对全局数据逻辑结构的描述),内模式。一体化,非过程化,面向集合操作方式,灵活的使用方式(交互式,嵌入式)。概念模型(E-R模型),数据模型(层次模型,网状模型,关系模型)。
2024-05-22 15:14:56 483
原创 神经网络构建
目前形状为27*27,经过padding=1的处理之后,形状是29*29,卷积核形状是3*3,经过卷积核处理之后形状是27*27,由于步长还是1,结合输出通道数,所以最终得到的形状是1*192*27*27。我们的输入形状是1*128*55*55,显然,使用2*2的滑动窗口并不能把我们的权重全部覆盖,这里的处理是将未覆盖部分舍去,所以对于每一个二维面的覆盖部分是54*54,经过池化处理之后,得到的二维面的形状是27*27。看下一层卷积,仍不改变二维平面的形状,所以得到的是1*128*13*13。
2024-05-18 17:33:25 614
原创 操作系统复习第二弹进程管理
如果系统中剩余的可用资源数足够满足进程的需求,那么这个进程暂时是不会阻塞的,可以顺利的执行下去,如果这个进程执行结束了把资源归还系统,就可能使某些正在等待资源的进程被激活,并且能顺利的执行下去。每个锁都有一个布尔变量available表示锁是否可用,如果锁是可用的,调用acquire会成功,且锁不能再被访问,当一个进程试图获取不可用的锁时,会被阻塞,直到锁释放。用户级线程,也就是线程库支持的线程,由应用程序通过线程库实现,所有线程的管理工作都有应用程序负责,包括线程的切换。这是银行家算法的核心思想。
2024-05-10 21:28:44 647
原创 操作系统复习第一弹
应用程序通过系统调用请求操作系统的服务,而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(存储分配,I/O操作,文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。不同的中断信号,需要用不同的中断处理程序来处理,当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的位置,执行中断处理程序。中断的类型:内中断(与当前指令有关,中断信号来自于CPU内部),包括陷阱,陷入,故障,终止。
2024-05-09 16:42:36 1026
原创 小测和期中考试知识点
t0到t1时刻之间,看接收方反馈的信号,接收方期望发送方能发送3号帧,说明0,1,2号帧已经被接收,所以甲方可以断定乙方已经正确接收的数据帧有三个,分别是S0,0,S1,0,S2,0。第三问,你发出去S4之后,对方要求你发送S2,说明S2对方没接到,这时你要发送,S2,3,S3,3,S4,3。都是一次性滑动N,一旦发生传输错误,哪怕仅有一个帧,都要重发N帧,只有当N个帧都没有问题的时候,才能滑动N个窗口。发送方,一次性发送N个帧,等待应答,对NAK帧重传,待N个帧都收到ACK后,窗口推进N。
2024-04-30 23:50:31 687
原创 关系数据库理论续
关系模式分解后会带来两个问题:1,查询时的连接操作是否会丢失某些信息或多出某些信息。这引出了无损连接的概念。2,分解后的关系模式是否保持了原来的函数依赖。这是保持函数依赖的问题。显然,一个关系可以有很多种分解方法,我们需要判断分解的好与坏。我们给出一个例子:
2024-04-01 19:50:54 802 1
原创 操作系统--死锁
显然,这个就有可能存在死锁,R2的资源全都被持有,而P3还要请求R2的资源,要等P2或P1执行完释放,而P1释放首先要请求R1,而R1被P2所持有,所以要先等P2释放,P2释放首先要请求R3,而R3被P3所持有,所以首先要等到P3释放,但是在请求到R2的资源之前,P3不能完成进程,不能完成进程就不能释放资源,总结起来就是P3请求R2资源的必要条件是P3已经拥有R2的资源,显然自相矛盾,故会被死锁。消耗性资源:有一个进程产生,被另一个进程使用的短暂时间后便无法使用的资源,又称为临时性资源,如消息。
2024-03-30 20:17:10 903
原创 关系数据库理论
3,插入异常,一个元组在主键的属性上存在空时,该元组无法插入。显然,这不是我们追求的高效的模式,高效的模式要保证插入,删除,更新正常,而且数据冗余要尽可能少。对于a1,有c1,c2与之对应,对于a1b1,有d1,d2与之对应,不存在依赖关系。4,删除异常,删除了不应被删除的数据(学生全部离去,系主任信息也会被删除)。2,更新异常,更新数据付出代价比较大,更换系主任后,所有条目都要更新。函数依赖的实例:描述一个学生关系,可以有学号,姓名,系名等属性。1,数据冗余高,系名,系主任名重复出现。
2024-03-29 21:58:47 805
原创 数据库语言一些基本操作
若要查询的串本身就具有%或者_,则使用ESCAPE<换行字符>对通配符进行转义,ESCAPE'\'短语表示\为换码字符,这样匹配串中紧跟在\后面的字符"_"就不在具有通配符的含义,而是取其本身含义,被转义为普通的_符号。目的是:细化集函数的作用对象,如果未对查询结果进行分组,集函数将作用于整个查询结果,即整个查询结果只有一个函数值,否则,集函数将作用于每一组,即每一组都有一个函数值。例如:查询所有男生的学号,系,年龄,结果按照所在的系进行升序排序,同一系中学生按照年龄降序排序。
2024-03-23 20:54:18 705
原创 Leetcode--198
而f[i]在未被赋值之前被默认定义为0,那么进入我们的循环,偷到nums[0]这家获得的最大金额是max(0,0+nums[0])可以理解,偷到第一家是前一家获得的最大金额和当前金额+前两家获得的最大金额的最大值,和我们的解答反差不大,但是这个更简化。这是一个动态规划问题,我们可以考虑对于第n间房,是偷还是不偷,设Sum[i]表示偷到第i间房能偷到的最大金额,那么Sum[i]可以表示为第i间房里面的金额nums[i]+偷前i-2间房能偷到的最大金额和偷前i-1间房能偷到的最大金额中较大的一个。
2024-03-18 19:42:45 397
原创 谷歌地图调用
由于谷歌地图有偏差,所以我们将转化之后的数据带入进去我们的模型,会不太准确,所谓是否准确,主要是看我们对精度的要求,运行结果可知,大概会偏移几个操场的距离。不过对于我们来说,我们理论上可以通过添加偏置来使我们得到的坐标和谷歌地图要求的坐标相拟合。当然,在给定的代码中,我计算的是从武汉大学信息学部16舍到武汉大学39栋的路线。
2024-03-17 18:04:41 1183
原创 LeetCode--67
这里就单纯利用了二进制的加法计算,如果加上去之后数值大于1,就向前一位进一,在这里,数值位最大是3,利用2表示为0,3表示为1的特性进行计算。最后再在最前面一位判断是否进行补加一位。但是我的这种方法再处理比较长的二进制数据的时候,会遇到困难,长的二进制数据转化为十进制数处理时间较长。我使用的是最低级的方法,也就是先转化为十进制,然后进行十进制求和,之后再将结果转化为二进制。,以二进制字符串的形式返回它们的和。抱歉,看不懂,我使用chat一下。给你两个二进制字符串。
2024-03-17 13:33:01 403
原创 LeetCode--151
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用。作用就是先将整个字符串进行翻转,然后对每一个单词进行翻转。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。
2024-03-17 12:32:32 414
原创 LeetCode--58
由若干单词组成,单词前后用一些空格字符隔开。是指仅由字母组成、不包含任何空格字符的最大。最后一个单词是长度为6的“joyboy”。最后一个单词是“World”,长度为5。最后一个单词是“moon”,长度为4。和我的方法差别不大。
2024-03-16 21:03:20 432
原创 Leetcode--12
const auto&[value,symbol]:valueSymbols表示在键值对列表中,value表示键,类型为int,symbol表示的是值,类型为string。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。官方解答使用了键值对的方法,使用pair对象,其中键值对为<int,string>。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。,即为两个并列的 1。给你一个整数,将其转为罗马数字。例如, 罗马数字 2 写做。
2024-03-16 17:19:48 385
原创 Leetcode--13
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。虽然有点繁琐,但是不管怎么说,也是能跑出来的。给定一个罗马数字,将其转换成整数。显然,官方的代码很有美感。,即为两个并列的 1。
2024-03-16 16:40:47 411
原创 pytorch之诗词生成6--eval
这段代码的作用是将预训练模型加载到变量model中,以便后续使用该模型进行古诗生成或其他任务,加载的模型可以是之前使用的TensorFlow训练得到的模型,也可以是由其他方法训练得到的模型,加载模型之后,可以使用model变量调用模型的方法和属性。最后我们传递的参数改成藏头诗,我们传递的head将被分成一个个词,并对每个词进行相应的生成,然后将得到的结果组合在一起,形成完整的诗词,当然,我们对每个词进行生成的时候不止简单的考虑到我们head所提供的第一个词,而是考虑到前面已经生成的词。
2024-03-15 13:41:03 982
原创 pytorch之诗词生成5--train
回调函数是在训练的过程中特定时间被调用的函数,用于执行一些额外的操作,回调函数是在每个训练周期结束后被调用,在每轮训练的on_epoch_end事件中,回调函数会被触发并执行相应的操作。在TensorFlow的回调函数中,logs是一个字典,其中包含了训练过程中的各种指标和损失值。是模型对象的方法,用于使用生成器进行模型训练。定义了一个回调类Evaluate,它是tf.keras.callbacks.Callback类的子类,回调函数是在训练的不同阶段调用的函数,用于执行额外的操作或监控模型的性能。
2024-03-14 21:00:56 996
原创 pytorch之诗词生成3--utils
后面的target = p_args[target_index] + 3,其中+3是必不可少的,我刚刚因为没有+3就运行报错了,因为我们得到的target是对应于token_ids的索引,而token_ids的前三项是特殊字符,为了和实际中的模型相对应,我们需要将预测的token编号做一些偏离处理。得到索引数组之后,我们通过p=_probas[p_args],根据排名靠前的token的索引p_args,从预测的概率分布_probas中获取对应的概率值,这样得到的p就是排列后的概率顺序(概率值从大到小)。
2024-03-14 17:01:21 1070
原创 pytorch诗词生成3--创建模型
来看一个例子:如果我们有一个输入形状为(batch_size,timesteps,intput_dim)的3D张量,其中timesteps表示时间步的数量,input_dim是每个时间步的输入维度,将一个层包装在TimeDistributed中,就可以对输出序列的每个时间步应用该层,并生成一个形状相同的输出序列。通过堆叠多个LSTM层,可以逐渐提高模型的表示能力,并且在处理复杂序列数据时能提供更好的性能,然后,需要根据具体任务和数据集的特点进行实验和调整,以确定最佳的网络结构和层数。
2024-03-13 16:14:54 1655 3
原创 pytorch之诗词生成--2
如果词不在词汇表中,则返回低频词[UNK]的编号,注意我们的token_dict字典的键是词,值是编号,我们可以通过词来找到对应的编号,而token_dict_rev的键是编号,值是词,我们可以通过编号找到对应的值。通过这种方式,当调用for_fit方法时,会得到一个生成器对象,每次迭代该生成器,会从self.__iter__()生成的数据中获取一个批次的训练数据,并将其作为生成器的输出,由于采用了死循环的设置,这个生成器会持续的生成数据,直到外部的训练过程停止或中断。明显,该字典中的键词的编号,值是词。
2024-03-12 21:55:53 1286
原创 诗词生成之setting
最小词频为8表示我们把出现八次一下的词汇指定为出现八次,用于确保每个出现但是频率比较低的词汇都能有一定的权重参与进来,虽然看起来八次已经很高了,但是考虑到我们的训练集中词汇的个数,其实八次的频率算是很低。DISALLOWED_WORDS:我们的禁词列表是包含多个字符串的列表,用于指定在进行唐诗处理的时候要被忽略的特定字符或词语。之后我们定义训练的轮数,在我们的代码中指定为20,也就是共训练20轮,每一轮都会进行一次权重的更新,训练20轮之后得到的权重能更多的综合我们的训练集的信息。
2024-03-12 18:42:37 372
原创 操作系统结构
系统调用充当了应用程序与底层操作系统之间的接口,使应用程序能够利用操作系统的服务和资源,实现更高级的功能。系统调用还提供了一种安全的方式,限制应用程序对底层系统资源的直接访问,确保系统的稳定性和安全性。将操作系统中的内存管理,设备管理,文件管理等高级服务功能尽可能从内核中分离出来,变成几个独立的非内核模块。每层都利用较低层的功能和服务,为较高层隐藏一定的数据结构,操作和硬件的存在。文件操作,状态信息,文件修改,程序语言支持,程序调用和执行,通信。操作系统向用户提供的接口:命令接口,图形接口,程序接口。
2024-03-09 15:32:51 389
原创 猫狗分类图像识别
常见的学习率调度策略包括学习率衰减,学习率周期性变化等,我们使用的StepLR是指学习率衰减,step_size指的是按照给定的步骤进行衰减,也就是每隔十轮进行衰减一次,衰减因子是gamma,表示每次调整使得学习率*gamma。在神经网络的训练过程中,通常将大量的数据按若干个批次进行训练。全连接层:linear,对向量(一维)进行线性处理,可以按照我们的意愿得到我们希望的维度,但是需要较多的权重,一个比较好的解决办法是在卷积层的时候,将张量权重元素的输出尽量控制到一个较小的范围,但是会影响提取能力。
2024-03-05 19:35:56 996
原创 LeetCode--42
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。显然,这样时间复杂度更大。
2024-03-03 11:57:09 387
原创 操作系统导论
目前没有一个关于操作系统的十分完整的定义。一个公认的定义是:操作系统是一直运行在计算机的程序(通常称之为内核)。操作系统是一组控制与管理计算机硬件和软件资源,合理地组织计算机工作流程,以及方便用户的程序集合。
2024-03-01 19:27:37 1268 1
原创 thethree--with my girl
前面已经设置参数和建立模型了,下面我们来对数据进行处理,我们做的是风格迁移模型,所以需要处理的数据就是jpg类型。
2024-02-28 18:48:33 838 1
原创 thetwo--TO BE BETTER!!!
training=None的时候,表示模型的训练模式将由框架自动确定,通常情况下,在调用模型的时候,如果没有显式指定训练模式,框架会自动将模型置于推断模式下。model.trainable=False是指定模型的参数不可训练,即在模型进行反向传播算法优化参数时,这些参数不会被更新,意味着模型的参数将不会参与训练过程,他们的值将会保持不变,这通常用于在迁移学习或特定场景下,固定住某些层的参数,只训练模型的部分参数,或者在指定的任务中只使用模型的特征提取能力而不更新模型的参数。表示这个类是一个Keras模型。
2024-02-27 21:44:28 1554 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人