- 博客(27)
- 收藏
- 关注
原创 一个形状为[2500,256]的张量,判断2500个向量中哪个为全0
your_tensor = np.random.randn(2500, 256) # 这里用随机数生成张量作为示例。your_tensor = torch.randn(2500, 256) # 这里用随机数生成张量作为示例。# 假设 your_tensor 是你的 [2500, 256] 形状的张量。# 假设 your_tensor 是你的 [2500, 256] 形状的张量。# 判断每个子张量是否全为零。# 判断每个子张量是否全为零。# 找出所有全零张量的索引。# 找出所有全零张量的索引。
2024-06-03 19:13:14 211
原创 构建 bev网格的两种方式:meshgrid和linspace+repeat
ref_3d = torch.stack((xs, ys, zs), -1) # [4,50,50,3] 构建3d bev网格坐标归一化。
2024-05-06 21:50:13 293
原创 wandb和tensorboard
default_hooks的visualization要设置draw=True才会显示验证过程中锚框的图。这里16006是自己改的本机未被占用的端口,6006是服务器未被占用的端口。这里vis_data/是tensorboard日志所在文件夹名。在浏览器中输入127.0.0.1:16006即可查看。
2024-04-20 19:35:08 405
原创 np.unique()
print(inverse_indices) # 输出:[0 1 1 2 3 3 4]print(unique_values) # 输出:[1 2 3 4 5]print(unique_values) # 输出:[1 2 3 4 5]print(unique_values) # 输出:[1 2 3 4 5]print(unique_values) # 输出:[1 2 3 4 5]print(counts) # 输出:[1 2 1 2 1]
2024-04-09 13:46:56 363
原创 wget在服务器上下载nuscenes数据集
选项可以从中断处继续下载,而不是重新开始下载整个文件。这对于大型文件或断网后需要恢复下载的文件非常有用。如果不加,就会逐条执行,下完一个再下下一个。命令中间尽量不要空一行,windows和linux换行符不一样,脚本执行会出问题。)用于继续下载已经存在的文件。如果你中断了之前的下载过程,使用。选项后面提供文件名或路径来命名保存的文件。关于引号中的链接怎么来:我使用的是谷歌浏览器。)用于指定保存下载文件的名称。将使用远程服务器上的文件名来保存文件。在链接处右击,复制链接地址即可。
2024-03-31 12:06:05 438
原创 为什么要使用contiguous
如果在view之前用了transpose, permute等,需要用contiguous()来返回一个contiguous copy。有些tensor并不是占用一整块内存,而是由不同的数据块组成,而tensor的view()操作依赖于内存是整块的,这时只需要执行contiguous()这个函数,把tensor变成在内存中连续分布的形式。原文链接:https://blog.csdn.net/zhaoyan123477/article/details/115345014。
2024-03-26 16:16:33 136
原创 nn.module的self.register_buffer()
nn.module中的一个方法,用于开辟一个缓冲区,命名为voxel_size,pytorch缓冲区常用于储存不需要梯度计算的数据。
2024-03-24 15:34:14 318
原创 mmcv创建目录mmcv.mkdir_or_exist
mmcv.mkdir_or_exist(default_root_dir) # 创建目录,路径为~/default_root_dir,若该路径已经存在,不会报错。
2024-03-24 11:06:34 358
原创 torch.autograd.Function
的一个子类,用于实现一个特定的操作,这个操作在前向传播中计算输入张量的累积和(cumulative sum),并根据。这确保了梯度正确地传回通过过滤操作保留下来的元素,而不是原始输入张量中的所有元素。是该操作的输入参数,而这个类的实现定义了这些输入是如何被处理以及如何计算它们的梯度的。方法中,实现了自定义的梯度传递逻辑,这是基于前向传播中保留下来的。张量过滤某些元素,然后在反向传播中计算这个操作的梯度。的一个内置方法,它允许你调用该函数。方法,并且自动处理反向传播(通过。时,实际上是在调用类的。
2024-03-12 22:10:30 371
原创 End-to-End Object Detection with Transformers,2020,ECCV
对于decoder,首先初始化个数固定为100个的object queries(初始化为0),其长度均为256,然后文中讲细节时提到object queries初始化时还会加上自身100个框的位置编码,相当于让每个框都关注不同的地方。DETR的position encoding会在x,y两个维度上都编码,x、y都是128维,然后拼接成256维,就相当于对每个网格点制造一个位置向量,然后和特征图相加,作为encoder的keys和query,values就是特征图。
2024-03-07 21:09:34 232
原创 Attention Is All You Need, 2017, NeurIPS
经过masked multi-head attention,这里的masked有两个,一是为了对齐batch用的padding mask,这个在encoder中也有,二是sequence mask,是为了在t时刻所用到的序列数据是t时刻之前的,而用不到t时刻之后的,具体是将归一化后的score在t时刻后的值都置为很大的负数,这样做softmax时,这些位置的值就为0,attention机制就不会关注这些位置了。将score归一化,score/=sqrt(dim),这里dim是64;
2024-03-07 21:09:02 161
原创 PIL和cv2读取图片为ndarray
使用PIL将ndarray转化为图片时,要确保ndarray为RGB格式,图片为[H,W,3],且为RGB格式,RGB格式这点PIL与cv2不同。用cv2直接就是ndarray。也是[H,W,3],也是BGR。
2024-01-22 21:26:25 625
原创 皮尔逊积矩相关系数R
Pearson Product-Moment Correlation Coefficient(皮尔逊积矩相关系数),通常简称为Pearson's correlation coefficient或Pearson's r,是一种用于度量两个变量之间线性相关程度的统计指标。这个公式的核心是计算两个变量之间的协方差并除以它们各自的标准差的乘积。协方差衡量的是两个变量如何一起变化,而标准差给出了每个变量自身的变化幅度。+1 表示完全正相关:当一个变量增加时,另一个变量也增加。
2024-01-19 20:39:36 684
原创 旋转目标检测的两个不一致问题
因为目标检测最终的评价指标还是以iou为主嘛,然后以smmooth l1 loss为损失的话,它与iou的变化不一致就导致了评价度量和回归损失不一致。简单来说,就是在五参数定义法中,每个参数都是独立的,相互没有耦合关系, 每个参数对iou的作用不一样且相互之间没有制约,因此会造成回归难以收敛。
2023-08-20 16:04:03 283 1
原创 R3Det解读
当使用相同的特征图进行多次分类和回归时,边界框位置的变化可能会引起特征错位,因此需要FRM。在FRM中,first stage回归出的水平框会refine成倾斜框,然后根据分类出的目标类别分数进行筛选高质量倾斜框(每个特征点只取分数最高的box,这样每个box只对应一个特征点),然后映射到经过Large Kernel特征重组后的原特征图,先将boxs的位置信息编码为一个个特征点,这些特征点的位置和原特征图的特征点的位置是一样的(因为box的偏移,旋转会引起中心点偏移,把它映射回去,
2023-08-12 11:04:36 348
原创 CSL没看懂---看懂了
五参数法和八参数法都存在边界问题导致梯度不连续,作者认为上周的RSDet和Gliding Vertex都是从复杂的回归来避免这个问题,他认为根本原因是在回归的时候,预测出来的东西存在超出定义范围的情况(因为回归是连续的,而超出定义范围的话就不连续了,回归难以进行)。这篇文章中,作者旨在设计一种没有边界问题的方法,即:不采用回归来预测,而是把角度预测当作一个分类问题(分类是离散的,作者说虽然从连续的回归转变成离散的分类任务,丢失的精度对于检测任务的影响是可以忽略的),
2023-08-12 11:03:21 147
原创 RSDet解读
gtbox的四个点的顺序不一定是按规则顺序来的,因此要对四个点进行排序:四个顶点顺序的定义方法是从最左边的点开始(如果是水平框的话就取左上角那个点),然后通过叉乘找到对角点,也就是第三个点,再根据这两个点构成的向量和叉乘的方法,顺时针方向找到另外两个点。其次五参数法还存在回归参数不一致问题:这是由五个参数的量纲不同引起的,意思就是这些参数对iou值的影响都不一样,以iou为衡量标准的原因是,最后检测指标中非常依赖于iou。八参数法的参数为四个顶点的坐标,不存在参数不一致问题。
2023-08-06 13:08:48 233
原创 Gliding Vertex解读
作者为了避免这个问题,引入了基于面积计算的倾斜因子r=area(O)/area(Bh) ,也就是倾斜框与水平框面积之比来判断目标预测框的倾斜程度,r越接近于1,则说明目标预测框越接近水平,并且对于大横纵比的倾斜的目标,r接近于0。因此,其实近似水平框的那种情况是存在误差的。没有pytorch源码,个人感觉他是先用dota数据集里的8参数定义倾斜框法的那四个顶点坐标去获得外接水平框的坐标,计算真实的倾斜框顶点的offest和倾斜因子;最后根据倾斜因子去输出水平框或者是倾斜框,倾斜框的后处理用的是倾斜nms。
2023-08-06 13:05:14 413
原创 R2CNN解读
2)roipooling时除了7*7的尺寸,还增加了3:11和11:3的两个大纵横比的尺寸(如何将这三种尺度不一样的feature拼接在一起论文也没说,个人猜测是用faster-rcnn图像预处理时将resize在一定范围内后的padding到相同尺寸一样);他是先rpn生成水平框去把目标都包围住,然后在fast-rcnn部分预测倾斜框,这个倾斜框的预测是有水平框的限制条件的(具体论文没细说),然后回归是水平框和斜框一起回归,这样更有利于检测斜框的精度提高。
2023-08-06 12:58:22 80
原创 SCRDet解读
损失函数采用多任务损失,N是proposals数,t′n = 1 for foreground and t′n = 0 for background,Lreg是smooth L1 loss,Latt是像素注意力损失,Lcls是分类损失,两者都为softmax crossentropy,v'和v是bbox回归参数,u'和u分别是每个像素点的分类得分和标签,pn是每个proposal的分类得分,tn是每个类别的标签。训练时采用交叉熵损失回归。SCRDet旨在解决:小目标检测,杂乱排列,任意方向检测这三个问题。
2023-08-05 11:08:20 211 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人