- 博客(66)
- 收藏
- 关注
原创 理解目标检测模型中的矩形训练rect参数
这是一个非常核心且重要的问题,它能帮助您彻底理解 rect=True 的价值所在。如果不开启 rect(即 rect=False),当模型接收到一张 1137 x 799 的图片并要将其处理成 imgsz=640 时,它会执行以下**“保持比例缩放并填充”(Letterboxing)**的操作。
2025-06-13 11:42:42
354
原创 用数据说话,为你的YOLO模型选择一个合适的起点
必做:运行分析脚本,获取你数据集的尺寸分布和宽高比分布。首选策略查看宽高比直方图。如果有一个非常明显的峰值(比如 1.5),说明你的数据形状很统一。查看统计摘要,找到宽和高的中位数将这两个中位数尺寸向上取整到32的倍数,得到一个矩形尺寸,例如 (w, h)。在训练时使用这个尺寸,并开启矩形训练 (--rect)。例如:python train.py --img-size 640 --rect (这里640指最长边) 或者在新版YOLO中直接指定 imgsz=[w, h]。
2025-06-12 17:29:26
590
原创 SGDvsAdamW 优化策略详细解释
**每个参数都有自己的学习率**:更厉害的是,他的地形探测仪是针对**每一个维度(参数)**的。| **泛化能力** | 有时**更好**。| **学习率** | **固定**(或手动调整),对初始值非常敏感。2. **迈出固定一步**:他会朝着最陡的下坡方向,迈出**固定长度的一步**(这个步长就是**学习率 Learning Rate**)。1. **原地感受坡度**:他伸出脚,在**一小片区域**(一个 mini-batch 的数据)内感受地面哪个方向是向下的(计算梯度)。
2025-06-12 16:04:40
185
原创 D-FINE详细解读
在介绍D-FINE之前,回顾下YOLO模型的预测过程,具体可参考上篇博文。想象一下,你的任务是在一张人山人海的合影里,把每个人都用方框圈出来。先说说大家更熟悉的 YOLO 系列(以它经典的思路为例)YOLO 的工作方式,就像一个急性子、眼神超好的“撒网捕鱼者”。划分网格(撒下一张大网):YOLO 先把整张照片划分成很多个小格子,比如 13x13 或者 26x26 的网格。这张网撒下去,覆盖了整个图片。每个网格快速上报(每个网眼都报告):每个小格子都像一个“小侦察兵”,它只负责自己这片区域。它会快速判断:“我
2025-06-10 15:50:12
981
原创 小目标、狭长目标检测的一些优化方法
可以增加一个更早、分辨率更高的特征层(如 P2,下采样 4 倍)用于检测非常小的目标。调整非极大值抑制 (NMS) 的 IoU 阈值 (--iou-thres),如果小目标密集,可能需要更小的 IoU 阈值来区分它们。调整损失函数中不同部分的权重,例如适当提高小目标样本的损失权重,或者提高 Objectness Loss 的权重(如果小目标容易被误判为背景)。需要一定的模型结构理解。使用在大型数据集(如 COCO)上预训练的权重作为起点,然后在你自己的包含大量小目标的数据集上进行长时间、充分的微调。
2025-04-16 09:06:20
1089
原创 从TRPO到GRPO
在 LLM 的情况下,策略会在每个步骤中输出可能标记的概率分布:简而言之,这就是模型用来采样下一个要生成的标记的内容。在本文中,我们将重点介绍强化学习 (RL) 方面的内容:我们将介绍 TRPO、PPO 以及最近的 GRPO(别担心,我很快就会解释所有这些术语!其目标是使用我们获得的奖励来预测我们采取的每个动作(模型生成的每个标记)的价值(请记住,该价值应代表预期的累积奖励)。即使在实践中,奖励模型通常源自策略(仅训练“头部”),但我们最终仍需要维护许多模型并处理多个训练程序(策略、奖励、价值模型)。
2025-03-31 17:31:57
610
原创 一文讲清DeepSeeK R1 的来龙去脉(无公式版)
此步骤是最耗费时间、计算资源的一个环节,通常需要上千万美元,几月的时间训练完成,涉及到大规模分布式训练的工程技术,因此,一般只有大厂才能训。其次,在SFT阶段,需要人大量编写理想的回应,但是一些创造性工作就难以写,相比之下,RLHF不需要写,只需要order,这个就比较简单。此过程可以理解为微调模型,提高模型的泛化能力,其核心思想就是在给定答案的基础上,让模型练习,找到最佳解决方案,这就是RL的训练的核心思想,非常简单。人类给出好笑的等级,让模型自己打分,然后建立损失函数,优化“奖励模型”。
2025-03-20 17:14:29
975
原创 大模型常见依赖库的安装问题汇总
如果上下文(Token)很长的话,QK计算会呈平方式增长,f为了加速QKV计算的算法,主要原理是通过某种方式将本来在VRAM(显存)挪到更快SRAM中计算,安装时需要事先安装CUDA ToolKit,安装方式如下参看repo。Note:我自己测试中发现,我在已经安装完CUDA ToolKits=11.8的情况下,直接使用命令,会自动下载cuda12的运行库,如下图。,从torch2.0后,在安装时会自动安装nvidia runtime,避免用户手动安装 CUDA ToolKits和配置环境变量。
2024-10-31 16:56:42
710
1
原创 YOLO原理,看这一篇就够了
正如我上面所解释的,边界框的处理在 CPU 上运行,而不是在 GPU 上运行。事实证明,大多数这些框的置信度分数非常低,因此我们只保留最终分数为 30% 或更高的框(您可以根据您希望检测器的准确度更改此阈值)。然后您需要做的就是计算边界框的最终分数,并丢弃分数低于 30% 的分数。回想一下,卷积网络的输出是一个 13×13×125 张量:覆盖在图像上的网格中的每个单元都有 125 个数据通道。我感兴趣的一件事是采用不同的网络架构,例如 SqueezeNet,并重新训练该网络以预测其最后一层的边界框。
2024-05-17 14:28:24
6664
2
原创 VSCode 分布式Debug 参数设置说明
如果想在vscode中debug一个项目,比如python3 run.py --args。这个时候你需要着重关注几个参数。
2024-01-23 15:06:58
1008
1
原创 T-SNE的详细介绍
t-sne被称为非线性降维,这意味着允许我们分离任何不能用直线分离的数据。主要用于理解高维数据并将其投影到低维空间(2D或3D),使得它在处理CNN网络时非常有用。
2023-11-10 14:29:19
175
原创 Docker运维命令大全
nvidia-docker 2.0 的核心东西是nvidia-contained-runtime,它主要通过修改docker的配置文件/etc/docker/daemon.json来让docker使用NVIDIAContainerRuntime。如你安装完nvidia-docker2,deamon.json 内容如下,确保本地部署的模型在GPU上正确运行。示例:docker run --runtime nvidia my_image。属于特定的厂商产品,需要特定的。的时候,你需要做的有两件事。
2023-10-19 10:57:19
546
原创 GitHub新手使用详细教程
-----------------------------------------------------------同步guthub仓库中的代码----------------------------------------------------------------------------------------------将本地修改文件同步到远程github仓库------------------: 如果其他人在您上次拉取或克隆之后对仓库进行了更改,您需要将这些更改拉取到您的本地仓库。
2023-10-09 16:46:44
1234
原创 GitHub提示Permission denied (publickey)解决方法
如果问题仍然存在,请确保您已按照所有指示进行,并查看GitHub的官方文档或寻求社区帮助。当GitHub提示“Permission denied (publickey)”错误,这通常意味着您的SSH密钥没有被正确地配置。文件,并复制其内容。然后,转到GitHub的设置页面,在“SSH and GPG keys”部分添加一个新的SSH密钥,并将复制的公钥内容粘贴到提供的文本框中。如果一切正常,您应该看到一条消息,表示您已成功地连接到GitHub。(或相应的名称,如您选择的其他名称或类型)。
2023-10-09 16:07:54
2434
原创 多模态大模型微调记录
1 为了避免纯文本训练和图像指令训练的干扰,视觉token 只在语言模型的最开始几层Transformer Block 添加 + prefix adpter + 语言token ,3 将视觉模型输入改为448*448, 同时微调vit第一个卷积层+视觉投影层部分参数+微调语言部分。2 解锁更多训练参数,将 llama 层的 linear中的bias +归一化层参与训练。2 将视觉模型输入改为448*448, 同时微调视觉投影层部分参数并微调语言部分。实测效果:知识可以注入,效果也比较好。
2023-09-25 16:53:16
311
原创 Self-Attention && Cross-Attention 区别
为什么是512*512?人们常说,Transformer不能超过512,否则硬件很难支撑;从输入输出角度,N个Transformer Encoder block中的第一个Encoder block的输入为一组向量 X = (Embedding + Positional Embedding),向量维度通常为512*512,其他N个TransformerEncoder block的输入为上一个 Transformer Encoder block的输出,输出向量的维度也为512*512(输入输出大小相同)。
2023-07-10 17:08:59
1617
转载 jetson Nx 刷机
比如我的工程,需要安装opencv4和Cuda10.2,所以我选择安装JetPack4.5版本,这样我在刷机之后就不需要再更换软件版本了。将 Xavier 连接电源,先不开机,通过自带的一根Type-C转USB转数据线,将Xavier与宿主电脑连接起来即可。宿主电脑需要联网,且网络稳定,这对于刷机也很重要。点Enter键,这时会进入JetPack SDK,系统会提示你登陆nvidia账号。如下图所示,选择你要刷机的设备Xavier,和合适的系统版本JetPack4.5,然后点击continue。...
2022-09-01 17:37:58
68
转载 提高模型泛化能力的几大方法
作者:OpenMMLab链接:https://www.zhihu.com/question/540433389/answer/2629056736来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这一方法最早在一文中被提出,原文中被称为。在 EfficientNet 的实现中被 Google 称为。因为和撞名,在 timm 的实现中又被改名为drop path(但是这个名字也和撞名了,尴尬)。因此大家听到这几个名词的时候最好注意区分一下到底是哪个。...
2022-08-17 16:25:55
6190
原创 YOLOV5_lite
YOLOv5 Lite在YOLOv5的基础上进行一系列消融实验,使其更轻(Flops更小,内存占用更低,参数更少),更快(加入shuffle channel,yolov5 head进行通道裁剪,在320的input_size至少能在树莓派4B上的推理速度可以达到10+FPS),更易部署(摘除Focus层和4次slice操作,让模型量化精度下降在可接受范围内)。1输入端方法1、Mosaic数据增强YOLOv5 Lite的输入端采用了和YOLOv5、YOLOv4一样的Mosaic数据增强...
2022-03-10 15:23:28
747
1
原创 C/C++编译开发过程中容易混淆的概念
1 声明和定义的区别 :声明出现很多次,但定义必须只能出现一次。 可以把声明理解成一个指针,就是通过声明一个变量就可以获取到该变量内存位置,从而进行操作如果想引用别的源文件里的全局变量和函数,在源文件最开始加上extern varibaleextern function()如果源文件里的一些函数和全局变量不想被人访问,可以在前面加上static。在全局变量前面加上static: 就是防止其他文件可见,所以其他源文件可以使用相同的变量名字在局部变量前面加上static: 当调用到该..
2022-03-05 10:13:10
278
原创 CenterNet 模型后处理 (C++和python代码)
该网络有三个部分组成 backbone(提取高级语义特征),上采样(恢复分辨率),head (三个卷积最终输出三个向量 )heatmap[B,C,H,W],wh [B,2,H,W],reg[B,2,h,w]heatmap 存放的是目标中心点位置,整张图那个位置最接近1 ,代表那个位置,是目标的中心点。wh 总共两个通道,存放的是目标在该点的目标框的长和宽,所以计算左上和右下点 x-w/2reg 总共两个通道,存放的是目标中心点的x,y偏移量,加上这个数值即可w........
2022-02-24 16:39:32
2654
2
原创 深度学习中 BN、 LN 归一化的作用以及意义
之前一直对各种归一化只停留下会使用的阶段,后来研究了一下,写下此文章当做读后感,如有任何理解错误,还请评论区指正。提出背景: 总所周知,深度神经网络是很多层堆积而成,比如说一个网络有50层,第一层的参数更新,经过层层相乘,会使得第50层的输入变化非常剧烈,就要不断去适应,降低的收敛速度。 其次底层输入过大或者过小,会使得输出落入饱和区(sigmoid),导致梯度消失,使得学习过早停止。所以将输入数据映射到非饱和区提高模型表达能力是一个非常重要的任务 ...
2021-09-25 11:28:06
1658
1
转载 pytorch 分布式训练
作者 | 堂姐来源 |九点澡堂子编辑 | 极市平台导语:前段时间工作涉及到修改分布式训练代码,在自研的工具库里直接调用简单的几行代码就可以,很多复杂的东西都封装起来了,但总感觉还是尽可能多了解下背后的东西比较好,原理和Pytorch的类似,就直接以torch来分析记录了。过程中碰到想不明白的地方就“骚扰”同事小伙伴和mentor,周末也不放过,远程表感谢和歉意hh。正文:Pytorch 分布式训练主要有两种方式: torch.nn.DataParallel ==> 简称.
2021-09-13 16:46:18
4988
转载 面试常见问题CV
作者:忆臻链接:https://zhuanlan.zhihu.com/p/376369795来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。优化算法深度学习优化学习方法(一阶、二阶)一阶方法:随机梯度下降(SGD)、动量(Momentum)、牛顿动量法(Nesterov动量)、AdaGrad(自适应梯度)、RMSProp(均方差传播)、Adam、Nadam。二阶方法:牛顿法、拟牛顿法、共轭梯度法(CG)、BFGS、L-BFGS。自适应优化算法有哪些.
2021-06-30 10:53:00
506
原创 Pytorch 最常用的数据增强API
作者:极市平台链接:https://zhuanlan.zhihu.com/p/379977527来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。介绍Pytorch是一个深度学习框架,广泛用于图像分类、分割、目标识别等各种任务。在这种情况下,我们必须处理各种类型的数据。很可能在大多数情况下,数据可能不是我们所需要的格式。PyTorch转换就是救星。torchvision.transforms模块提供了可以使用的各种图像转换。我们使用变换对数据进行一些操作,使其适合于.
2021-06-23 15:01:26
965
1
原创 gitee 使用说明
与在github 上创建仓库,在国内的码云上创建仓库,访问速度会快一点,它的功能可以满足团队的需要,参考链接https://www.runoob.com/git/git-basic-operations.html大体上来说,git的工作流程分为克隆git 资源作为工作目录 在资源上添加或者修改文件 如果其他人修改了,可以更新 提交自己的修改,可以撤回1 现在gitee 上创建仓库如果没有添加ssh 钥匙可以使用https 连接2 git remote 命令这个是将本...
2021-03-11 10:59:25
673
转载 Pytorch 使用技巧
本文转载自 Jack Cui 微信公众号。不少读者问我,Pytorch深度学习框架怎么学,答曰:Github大法好啊!这个是我当初入门Pytorch的教程,简洁易懂:https://github.com/yunjey/pytorch-tutorial其实,学习Pytorch最好的资料是官方文档,不过需要先具备一些基础:https://pytorch.org/docs/stable/index.html本文对Pytorch常用的代码段进行了整理,祝你代码写起来事半功倍,值得收藏,欢迎传
2021-03-10 14:31:30
1249
原创 python 语言特性
python属于解释性语言计算机不能直接理解高级语言,需要将高级语言翻译成机器语言,翻译的方式有两种:编译和解释编译就是事先把语言编译成可执行程序,也就是机器语言,这样运行过程中就不用翻译了解释就是语言不需要编译,在运行过程中才翻译,每个语句都是执行的时候才翻译,这样没执行一次就翻译一次,效率比较低,也不能脱离解释器独自运行python 中可变对象类型: list, dict,set 不可变对象类型: int ,float,bool,str,by...
2021-03-09 20:14:00
293
原创 ubuntu18.04 &&NVIDIA装机 &&pytorch 开发环境安装指南
写下此文章目的是以后在装机的时候直接来参考,不用到处找命令一:安装ubuntu18.04 桌面版本 带GPU 装机的时候要显示屏要接到主板的视频输出口,装完系统,把显示屏接到显卡输出口,因为系统一般会自带nouveau驱动。这个时候要把ssh,samba,静态ip配好 其中在装机过程中,选择清楚整个磁盘并安装ubuntu ,如果要自定义分区,选择其他选项然后就会让你重新划分磁盘,有几个区是必须要有的efi 分区。大约1G,类型逻辑分区 swap 分区,看自己硬盘大......
2021-03-08 15:33:37
1124
原创 Vision Transformer在CV领域的理解
最近这玩意比较火,找了好多资料和源码研究了下,写下这篇读后感在CV领域是怎么用呢?1 CNN backbone 处理的是 [B,3,H,W] 图像,经过层层提取特征,输出是[B,C,H,W],backbone 只做这一件事。2 Encoder部分: 先用1X1 卷积,将通道数从C 压缩到D,得到新的特征图[B,D,H,W] 将[B,D,H,W]的空间维度(高和宽)压缩成一个维度,得到序列化数据【B,D,HW】 在得到了【B,D,H,W】特征图之后...
2021-02-26 10:13:17
976
3
原创 ubuntu 18.04 安装 opencv3.4 C++ 版本
先从官网上下载:https://opencv.org/releases/安装依赖:sudo apt-get install build-essentialsudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libswscale-dev ffmpeg libavcodec-dev libavformat-dev libavdevice-dev#以下可选sudo
2020-10-12 14:40:25
1138
原创 conv1d 卷积的理解与应用
1 在tansorflow 中:conv1d(value,filter,stride,padding)conv1d(in_channel,out_channel,kernel_size,stride,padding)一般输入为3D 张量【B,X1,X2】这里之所以使用X1,X2,代表维度,是因为一维卷积不仅可以应用在语音文字上,在图像处理方面也有应用,所以使用X,来统一总结下。如果输入为以上,对于tensorflow.conv1d()中的filter参数设置应当如下:fileter.
2020-07-09 15:47:12
10242
4
原创 Non_Local 网络模块的解析
该模块可以插入到现有的CNN网络结构中,优点是可以提高整体的性能,缺点是参数多,计算量大写此文章只为自己日后回顾首先base cnn 为resnet50 ,插入在block3之后,模块的输入和输出都不变,这也是可以即插即用的原因。首先输入为【B,H,W,C】 先对输入使用1X1大小的卷积核做卷积,降低输入通道。减少计算量。然后把【B,H,W,C】reshape 成[B,HW,C],然后两个相乘(其中一个transpose),这样可以得到【B,HW,HW】,可以得到图像像素和其他位置的相关性,然后
2020-07-06 15:35:49
1833
原创 理解SVM(附代码)
参考内容:https://blog.csdn.net/weixin_39605679/article/details/81170300SVM 支持向量机是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的分类器,SVM还包含核技巧,这使它可以成为非线性的分类器。SVM的学习策略就是间隔最大化。算法原理SVM 学习的基本思想就是求解能够正确划分训练数据集并且几何间隔距离最大...
2020-01-19 16:31:40
1750
原创 STnet 解析
这是百度2018年底发表的一篇论文。主要思想:可以基于任何现有的网络结构,插入三个模块步骤:(tensorflow版本的)输入图像序列【8,224,224,3】--》把输入的图像每N个图像(本次2个)看成一个超图【4,224,224,6】,相应的第一层卷积核通道需要修改下 --》经过RESnet两个残差块(3,4,6,3)--》加入temporal module在(4和6之后插入)...
2020-01-19 16:31:05
1100
原创 Faster-RCNN 源码解析
参考文档:读懂Faster RCNN - 白裳的文章 - 知乎 https://zhuanlan.zhihu.com/p/31426458一 :目标检测发展概述如上图所示,目标检测在2012年之前还是使用传统的方法。之后深度学习在计算机视觉的应用,使得各种框架涌现出来,这里我们挑选最经典的进行解析,领悟其中的思想。在之前的经验基础上,2016年提出faster-rcnn,将...
2020-01-19 16:30:27
601
原创 TSM,TRN 神经网络模型解析附代码
TSM是一个保持2DCNN复杂度但是却能达到3DCNN效果的网络结构对于视频识别的关键就是时间信息,这也是众多分析序列网络模型的研究点。TSM提出了一种可以基于现存的网络模型(Resnet)加入temporal shift module的方法例如基于resnet50的改进办法:首先得到resnet50的网络模型,在每个残差块的第一卷积之前,进行shift操作,假如入模型输...
2019-11-19 10:53:03
6990
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人