- 博客(78)
- 收藏
- 关注

原创 可变形卷积(DCN,Deformable Convolution Network)
ICCV 2017的一篇文章。可变形卷积(DCN)的原理和实现。在目标检测领域应用广泛,在项目、课程设计、毕业设计、比赛中对许多数据集和许多目标检测算法(只要含卷积操作),都能有不错的提升,泛化性很强。
2022-08-10 16:38:09
51820
15
原创 RuntimeError: Triton Error [CUDA]: device kernel image is invalid
(其实内心是不太想改版本的,因为我的torch 2.5.1明确指定要triton==3.1.0及以上,而且跑这个训练需要太多编译的依赖库诸如flash-attn,vllm,ms-swift,改个版本很容易连锁反应不兼容)背景:最近在尝试用ms-swift做多模态大模型的GRPO训练,发现一个很坑的问题。所以确定是num_infer_workers这个参数没正确传入导致发生的该报错,太隐蔽了。后面多加了个一个空格,即变成了--num_infer_workers 2+空格。我尝试了一下,还是不行。
2025-03-31 11:22:47
251
原创 Visual-RFT论文解读
OpenAI o1、DeepSeek-R1等大型推理模型模型中的强化微调(Reinforcement Fine-Tuning ,RFT)在微调数据(FT)稀缺的情况下特别重要,但是这种具备可验证奖励的强化学习在多模态领域的应用没有得到充分的探索(前阵子其实还有一篇VLM-R1的开源仓库)。这篇工作介绍了VRFT,简单来说,用VLM对输入生成多个推理结果和最终答案,然后使用提出的视觉感知验证奖励函数进行优化模型(通过策略优化算法比如GRPO)。
2025-03-11 10:29:28
789
原创 Swin-transformer和ViT的竞争
背景:读研的时候做目标检测算法的课题,那会基本都用ResNet当主干网络。为了“创新”,蹭了最新的Transformer,ViT比较简单粗暴,将Image 切成一个个小patch并且token化,但是随之带来的也有很多问题,比如对于目标检测的多尺度特征不友好,大尺寸图计算效率低等,于是后面有人提出了Swin-Transformer,在目标检测上也更友好,后面我的课题和小论文里backbone也采用了Swin-Transformer。
2025-03-05 11:17:11
720
原创 ms-swift 3.x和2.x中参数不一致的暗坑
虽然ms-swift 3.x发布也有一段时间 官方文档也对使用上参数的变动做了一些说明但是这个说明基本上都是说发生了变化对于一些的变化 暂时还没给出说明/统计文档我这边基于工作中遇到的一些坑,整理了部分,希望大家在使用的时候留意。注意,在这个文档里官方已给出的参数差异我在这不做赘述分析,只展示我个人发现的一些暗坑,时间关系没有做精准校对,如果发现写错or官方更新文档 还请评论区提醒我。
2025-02-26 16:37:12
497
原创 [解决错误]AttributeError: ‘MiniCPMVTokenizerFast‘ object has no attribute ‘image_processor‘
大概原因就是缺少原pretrained模型中一些.py,.json文件导致的,就是训练后只保存了一些权重相关的文件,但是要进行推理的话,还需要自行cp过去一些“配置文件”比如MiniCPM-V-2.6在进行官方的finetune后(swift进行finetune后好像不会有这个问题,具体没去看),保留下来的ckpt文件夹跟原版的对比(左finetune右pretrained),缺少了三个文件。其他的大模型或多或少也有类似的问题,比如InternVL-2,我都会习惯性加这个命令后再推理。
2024-09-25 11:00:01
597
原创 MiniCPM-V 2.6训练时fuse_adam报错
原本pip install deepspeed安装了0.15.1版本的,但是在进行sft训练的时候还是报错。大概就是fuse_adam这个op编译有错,c++版本要大于17什么的,一堆错。我原本的gcc是5.3.1,编译的时候一直报错,升级到了 8.3.1发现可以。1.下载DeepSpeend源码。2. 升级gcc版本。
2024-09-24 18:46:52
551
2
原创 InternVL-2B尝试
如果hf-cli不会用or安装失败 可以自行去hugging face搜索InternVL-2B安装或者上hf-mirror.com镜像站安装,这里不做阐述。利用这个脚本测试,注意修改path = 'OpenGVLab/InternVL2-8B'为InternVL-2B的路径。这个脚本最好放在InternVL-2B目录下,这样输入的图像都在相对路径./examples中,否则也需要相应修改。这个demo有纯文本对话、输入单图单轮对话、输入单图多轮对话、输入多图多轮对话、输入视频对话等等。
2024-09-05 19:48:43
536
原创 DriveLM的baseline复现
DriveLM是一篇在ECCV 2024上发表的论文,它探讨了自动驾驶领域中结合图视觉问答(Graph Visual Question Answering)的技术。这篇论文的主要内容是关于如何将自动驾驶技术与语言的无限潜力结合起来,以解锁自动驾驶的未来。这项研究可能涉及到使用自然语言处理和机器学习技术来提高自动驾驶系统的理解能力和交互性,使其能够更好地理解和响应驾驶环境中的各种情况。
2024-09-03 20:34:09
1879
2
原创 Depth anything v2环境相关问题
2.x的版本不兼容。因为我的torch版本较高,所以numpy改成一个较高的版本:1.26.4。可用。
2024-08-27 14:34:01
1445
2
原创 python setup.py build install的GCC版本报错
在进行一些python三方库编译的时候,有时候会因为环境中的GCC版本导致编译错误,比如在mmdet3d,mmcv-full等库的使用中。比如这个case中,说我的g++版本是4.8.5,需要把GCC提高到5.0以上。最后查看新的gcc 版本。
2024-08-26 20:14:32
597
1
原创 MapTR的BEV结果可视化到PV图中
标注是在lidar坐标系中的,因此lidar的z=0是跟lidar平高的,然而地面点是低于lidar的,因此需要设置一个z。MapTRv2这篇工作很有意思的一点是预测可视化的时候,在Argoverse数据集上把BEV的预测结果投影到PV图中,来更直观地评估预测结果的好坏,如下图所示。注:实际上笔者认为,BEV下的标注是ego坐标系下的,而如果要用lidar2img转换为图像坐标系下进行可视化,中间还需要进行一步ego2lidar。这一步人工加了一个z维度,而argoverse所有的点z=0。
2024-08-21 15:16:02
459
原创 Mac系统使用COLMAP
注意PATH="/usr/local/opt/qt@5/bin:$PATH"和-DQt5_DIR=/usr/local/opt/qt/lib/cmake/Qt5。因此需要改成/opt/homebrew/opt/qt@5/bin和/opt/homebrew/opt/qt@5/lib/cmake/Qt5。这两行代码中的路径根据依赖安装qt5时返回的具体路径而定,比如。如有出入,参照官网手册最新版。2.配置并编译COLMAP。查看是否跳出帮助和界面。
2024-06-06 14:54:39
608
1
原创 colmap导出相机内参/外参
后者images.txt里包含了相机外参,注释写的很清楚,包含了外参中的旋转矩阵R代表的四元数和平移向量T的三个分量。这里很好理解的是前面几个参数"1 OPENCV 1280 720 "分别代表了 CAMERA_ID, MODEL, WIDTH, HEIGHT。后面的参数"1249.43 519.15 640 360"分别代表了内参矩阵中的fx,fy,cx,cy。找到头文件,根据下面的源码地址可以看出实际上这四个数字对应了k1, k2, p1, p2。我们重点来看cameras.txt里的相机内参。
2024-05-21 20:12:39
2745
原创 以目录创建的conda环境添加到jupyter的kernel中
其中第一个HFT为我的环境目录名,虽然没有在conda里的环境name,但是通过目录activate后显示的name是当前目录名 因此作为--name的参数 第二个参数--display-name自定义为想显示在kernel上的。场景:由于某些原因,服务器上的conda环境不能通过--name的方式创建,只能通过指定目录即-p的方式,在这种情况下该环境在conda env list中没有显示,无法在jupyter kernel中搜到,只能手动添加。2.手动添加到Jupyter kernel中。
2024-05-09 20:19:07
365
原创 使用gradio时报错Could not create share link, please check your internet connection.
解决gradio的一个报错
2024-05-09 14:45:21
2126
2
原创 When localhost is not accessible, a shareable link must be created. Please set share=True.
在用服务器部署gradio模型的时候出现了这个问题,后来发现是因为服务器开了代理,代理了公司的电脑,命令行输入下列命令去掉代理即可。
2024-05-07 15:04:17
3123
原创 [解决错误]mmyolo的bbox_loss和检测bbox都是空
最近用mmyolo训练自己的数据集的时候发现训练的时候loss_bbox=0,测试和eval的时候结果也全是空的,排除了数据集读取的问题,最后发现是config中自定义了自己的类别但是没有传给dataset。简而言之,在自定义了数据集里的metainfo即类别后,还需要再dataloader构造的时候传入这些metainfo。
2023-12-11 16:53:57
1296
3
原创 mmyolo框架中计算各类别的AP@0.5指标
本文所用的mmyolo版本:0.3.0首先要知道,mmyolo中在eval和test阶段进行指标计算的时候,对于COCO数据集默认用的就是mAP@0.5:0.95,即不同IoU阈值下的mAP计算,并且没有给出各类别的具体指标,如可以看出,只给了 不同IoU下AP和AR的值,以及最后不同IoU下的mAP,当然也有针对small、medium、large下的指标,这一切都因为这是。而如果我们需要训练我们自己的任务场景,比如,就不需要这些东西,我们需要的是:1.各个类别的AP值。
2023-12-11 14:52:13
1748
5
原创 mmdetection里的测速脚本
由于大论文里需要对各个算法进行测速,因此抛开官方文档的使用说明,记录一下我是怎么使用mmdetection里的脚本进行测速的。mmdetection版本:2.23.0。
2023-12-10 14:43:06
1178
原创 VSCode连接服务器
Pycharm连接服务器参考我的另一篇文章本质上Pycharm和VSCode都只是IDE,没有什么好坏之分。但是因为Pycharm连接服务器(准确来说是部署)需要买professional。而VSCode是免费的,因此不得不用VSCode跑深度学习。再加上Pycharm的部署要在本地也配一份代码,改动的时候要等待上传到服务器,而不是直接在服务器上修改代码,很麻烦。所以我个人也更推荐用VSCode一些。
2023-08-27 19:53:16
1013
原创 torch.functional.affine_grid的坑
最后得出结论:平移中心是图像中心,归一化实际上只有图像的一半尺寸,也就是说shift_x和shift_y这俩平移参数设置成1,才能平移一半。即需要将平移像素相对于全图的比例乘2。那么需要先构造一个transform_matrix,这里网上说的是偏移量不是像素值,而是归一化的比例。问题描述:在用torch进行图像仿射变换的时候,平移始终有问题。比如现在想要让一张图对应的tensor平移0.5个图像长度。但是得到的结果是图像只平移了不到一半。
2023-08-09 14:49:59
320
原创 Pytorch/MMlab的Dataloader中用pdb进行debug报错
mmdet与mmcls编程技巧(一):persistent_workers option needs num_workers > 0 单线程debug问题 - 知乎
2023-07-13 17:30:28
590
原创 mmcv中BaseModule和Pytorch的nn.Module的区别
比起torch.nn.Module类而言,多了init_cfg和init_weights。type里的override是用来init这个实例里一些特殊的部分,比如self.reg。注册在mmcv/cnn/utils/weight_init.py。所有的init方法都是一个INITIALIZERS。BaseModule类在mmcv.runner中。norm的weight都是1,bias都是0。这个实例中的可学习参数的初始化方式为。Module类在torch.nn中。constant是初始化为常数。
2023-04-16 16:47:03
1012
原创 Focal Loss论文解读和调参教程
本文是何恺明团队ICCV 2017的一篇文章,主要针对检测场景类别不均衡导致一阶段算法没有二阶段算法精度高,在CE loss的基础上进行改进,提出了Focal Loss,并且本文改动了faster rcnn,魔改成了一个一阶段的算法RetinaNet,也是后续很多工作拿来当baseline的anchor-based一阶段算法。
2023-04-16 14:09:04
4078
原创 Python实现得到乱序列表排序后的新下标
如果要实现标题里的,更进一步,即要得到一个list排序后的新下标,比如对于 [1,5,2,8,3,4],应该得到[0,4,1,5,2,3]但是我们想知道排序后的结果对应原本的下标是什么(答案是[0,2,1,3,4]),就可以用np.argsort()但是如果不仅限于得到一个排完序的列表,还希望记录原本的下标,那么对于一个numpy.array而言,可以用。但是如果就是个简单的list,想实现这个效果,就可以用。排序后变成[1,2,3,5,6]比如[1,3,2,5,6]倒序排序(从大到小)用。
2023-03-28 23:03:05
984
原创 车道线检测CondLaneNet论文和源码解读
这项工作作为车道线检测任务,比较新颖的是检测头head。并不同于常规的基于bbox进行目标检测,这项工作采用的是检测关键点构造mask,输出形式类似instance segmentation。
2023-03-05 11:38:24
2665
原创 CornerNet介绍
这篇论文提出了 CornerNet,这是一种新的目标检测方法,可以将边界框检测变成检测成对的角点。论文主要的思想就是摒弃用anchor,也不用中心点,而是预测一个物体的左上角和右下角。不用中心点的原因是一个需要四条边的信息,相当于需要知道四个角点才能算出一个中心点,而左上角只需要知道一个物体最左边和最上边两个信息。具体来说,论文使用单个卷积神经网络来预测同一物体类别的所有实例的左上角和右下角的热力图,以及每个检测到的角点的嵌入向量。嵌入向量用于对属于同一目标的一对角点进行分组。
2023-03-04 22:17:05
896
原创 python/pytorch计算tensor的余弦相似度
通过transform的编码器对两张图进行编码,得到了两个shape为[1,1,768]的tensor:img1和img2。很好的是,torch里有现成的函数cosine_similarity,不需要像网上那种要自己定义一个复杂的类来实现。很多场景里,需要比较两个tensor的相似度(NLP或者CV里都有可能)如果是批量化计算,得到一组cos,怎么方便计算平均余弦相似度呢?可以看到这两张图的相似度是0.9457。
2023-02-23 17:05:22
4868
原创 mmdet里workers_per_gpu和sampers_per_gpu的作用
python进程、mmdet里的worker_per_gpu和随机操作的一些理解
2023-02-08 22:05:55
8737
11
原创 YOLOv6: A Single-Stage Object Detection Framework for IndustrialApplications
YOLOv6最新paper的解读
2022-09-08 13:38:09
2208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人