- 博客(50)
- 收藏
- 关注
原创 Torch 模型 model => .onnx => .trt 及利用 TensorTR 在 C++ 下的模型部署教程
Torch 模型 model => .onnx => .trt 及利用 TensorTR 在 C++ 下的模型部署教程
2025-03-07 22:32:01
778
原创 StarCoder 微调《个人编程助手: 训练你自己的编码助手》
在和中存在一个微调 StarCoder 模型的教程,但没有讲清楚如何配置环境,以及其他所需附加知识点,本帖旨在解决这两个问题。
2025-03-07 22:08:01
724
原创 Ubuntu 安装 CPU 和 GPU 版本 OpenCV (C++)
进入原先编译 opencv 的 build 目录,在该目录下打开终端;执行以下代码(如果 build 已经删除了,可以重新编译一遍该版本的 opencv,然后在最后一步执行 sudo make uninstall)执行代码后可能会报错,忽略掉执行完以上步骤,一般就可以完全卸载OpenCV。
2025-02-17 13:39:02
1246
原创 旋转的描述[旋转矩阵/Euler角/四元数/旋转轴和旋转角度]
针对旋转这一操作,存在四种描述方式,分别是:旋转矩阵/Euler角/四元数/旋转轴和旋转角度。
2024-11-28 17:58:36
755
原创 大模型低秩适配器LoRA源码解读
以上两篇博客写的非常好,强烈建议仔细阅读,本篇博客是对上面第二篇博客中的 LoRA 微软官方源码的进一步解读。包含对源码框架的解读,对源码中训练过程和推理过程的分析,以及对源码一句一句的汉语注释。
2024-05-22 15:26:43
880
原创 【python】中的可迭代对象、迭代器、生成器
在类中只要实现了 __getitem__(),则会自动生成 __iter__() 方法,所以凡是实现了__getitem__()方法的类也都称之为。凡是包含 yield 的函数都会自动生成一个包含 __iter__() 方法和 __next__() 方法的类,这个类称之为。,凡是实现了 __iter__() 方法和 __next__() 方法的类都称之为。凡是实现了__iter__() 方法的类都称之为。凡是实现了__iter__() 方法的类都称之为。
2024-05-13 21:34:20
363
1
原创 对 Transformer 中位置编码 Position Encoding 的理解
位置编码 | PositionEncoding | Sinusoidal 位置编码 | RoPE 位置编码 | ALiBi 位置编码
2024-03-26 22:12:25
2026
原创 深度学习常用代码总结(k-means, NMS)
因为图像中的目标是多种多样的形状、大小和长宽比,目标检测算法中为了更好的保障目标的召回率,通常会使用 SelectiveSearch、RPN (例如:Faster-RCNN)、Anchor (例如:YOLO) 等方式生成长宽不同、数量较多的候选边界框 (BBOX)。step5:将IOU与NMS预设阈值Thre进行比较,若某bbox与bbox1的IOU大于Thre,即视为bbox1的“邻域”,则在该类别边界框列表中移除该bbox,即去除冗余边界框;step8:输出列表即为想要输出的检测框,NMS流程结束。
2024-01-16 23:26:10
1881
1
原创 图片双线性插值原理解析与代码 Python
图片插值是图片操作中最常用的操作之一。为了详细解析其原理,本文以 3×3 图片插值到 5×5 图片为例进行解析。
2024-01-11 23:05:27
1842
原创 leetcode滑动窗口问题总结 Python
滑动窗口是一类比较重要的解题思路,一般来说我们面对的都是非定长窗口,所以一般需要定义两个指针 left 和 right,分别用来限制窗口的左边界和右边界。在解题时一般需要设定两个嵌套的循环,外循环不设定条件,完全是遍历模式,驱动右指针的移动;内循环需要设定条件,在满足条件的情况下,驱动左指针的移动。整体实现滑动窗口的向右移动。外循环虽然没有设定条件,但其实存在隐藏的条件就是不满足内循环所设定的条件时运行。在这个框架下,我们可以增加对窗口长度和数据的记录,进而实现丰富的功能。
2024-01-09 15:15:24
1498
原创 leetcode动态规划问题总结 Python
如果第 i-1 数字为 1,那 dp[i] == dp[i-1] + dp[i-2];本题采用二维 dp 作为中间存储数据结构,dp[i,j] 表示 s[i] 到 s[j] 是否为回文字符串,主对角线表示每个单独的字符均为长度 1 的回文字符,如果首尾两个元素相等,中间部分也是回文字符串,那当前字符串也为回文字符串,所以递推公式为 dp[i,j] = dp[i+1,j-1] and s[i]==s[j],从递推公式可以得到遍历输出是 i 从大到小 j 从小到大,至此可以获取任意字符串是否为回文字符串。
2024-01-07 18:52:37
1597
原创 leetcode双指针问题总结 Python
这两个思路都需要解决同一个问题即怎么判断两个 node 是同一个 node,leetcode 原生代码是推荐使用 == 运算法直接判断,但是这样判断只能说明两个 node 的值相等,不能保证是同一个 node,所以还是推荐使用 id() 函数比较 node 的地址。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。给你一个字符串 s,最多可以从中删除一个字符。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。
2024-01-04 10:31:57
1152
原创 leetcode深度优先搜索和广度优先搜索总结 Python
访问完右分支后,退回到最初根节点的上一级节点,再访问右分支。迭代法的思路其实是以层作为粒度,弹出一层的所有节点,然后放进去下面一层的所有节点,这里需要在注意的是在 que 中我们是无法区分两个节点是否来自于同一层的,所以在编程时,需要实现获取一层的长度。递归法就是函数在函数实现中调用函数本身,但函数实现中还需要增加调用终止条件,在函数实现中可以先假定函数已经实现,所以在考虑一个根节点和两个子节点时,可以直接调用函数本身实现两个子节点的遍历,函数实现中仅仅考虑根节点的遍历和终止条件即可,编程思路一目了然。
2024-01-03 16:40:06
2000
原创 leetcode回溯问题总结 Python
每次分割都可以看做一个选择,所以本问题依然是不定数量的选择问题,所以本问题用回溯来实现分割,但与之前回溯不一样的是,本问题在调用回溯函数时,需要完成两个数值的选择,之前的应用都是仅仅完成一个数值的选择(其实本质上没有区别)。该问题看起来与有重复元素的子集问题极为相似,都是遍历的每个路径都需要保存,都是包含重复元素,都是需要去除重复子集,但是实际解法有些不同,原因是该问题不能首先排序,因为排序会打乱原有的顺序,而本问题需要提取非递减序列。回溯算法是在递归思想的基础上制定的算法框架,用于解决一类问题。
2024-01-02 16:17:30
1263
1
原创 CAN/CANFD总线简述
CAN总线是由德国博世公司在20世纪80年代专门为汽车行业开发的一种广播机制的串行通信总线。速率最高可达1Mbps,当信号传输距离达到10km时,CAN仍可提供高达50Kbps的数据传输速率。在没有CAN总线之前,不同车载ECU之间通过直连的方式进行通信,这会造成线束过多,连接点过多,可靠性不足的问题。
2023-11-19 16:59:50
587
原创 markdown 教程与 Jupyter 教程
Jupyter notebook 源于 Fernando Perez 发起的 IPython 项目。IPython 是一种交互式 shell,与普通的 Python shell 相似,但具有一些更高级的功能,例如语法高亮显示和代码补全,还有一些 magic 操作,十分方便。Jupyter notebook 将 IPython 做成了一种 Web 应用,我们可以通过它的基本架构更清楚的了解。
2023-09-22 15:29:45
942
原创 bevfomer/maptr模型中时序对齐模块的改进
当前在自动驾驶感知领域,最流行的算法就是基于bev原理的检测算法,其中基于bev目标检测的典型算法是bevformer,基于bev建图的典型算法是maptr。为了提升模型性能,两者均使用了完全相同的bev时序对齐模块以实现bev时序检测。其bev时序对齐模块的原理比较难懂,本文主要对bev时序对齐模块的原理进行解释,并基于发现的问题做出了改进,同时附上了具体实现代码。
2023-05-26 17:13:01
3855
10
原创 无人驾驶中常用坐标系及相互转换的数学原理介绍
在无人驾驶中存在多种传感器,例如相机camera,激光雷达lidar,毫米波雷达radar等。在每个传感器中都有自己的坐标系,所以在无人驾驶中存在诸多的坐标系转换问题。本文将会基于nusenes数据集介绍一下世界坐标系,自车坐标系,相机坐标系,像素坐标系,激光雷达坐标系,毫米波雷达坐标系,IMU坐标系,以及最近在无人驾驶领域最流行的bev检测方案中的bev坐标系和bev像素坐标系,之后会说明一下nusenes数据集与argoverse数据集的区别,最后会介绍相机内外参和不同坐标系之间的转换。
2023-05-26 09:45:59
8755
4
原创 torch中affine函数与grid_sample函数的注解
在深度学习算法开发中,尤其是在图片时序对齐部分中,经常会对原始图片进行旋转和平移,然后重新采样,在这个过程中,最常用的函数就是affine和grid_sample。affine函数是先旋转再平移,旋转部分是支持二维线性差值的,但是平移部分平移数值只能是整数,这会造成一定的取整误差,但是其使用方便,只需提供旋转和平移数值即可。grid_sample函数只是一个采样函数,支持二维线性差值,为了完成采样,需要自己基于旋转矩阵和平移矩阵,计算出采样位置,所以使用比较麻烦。
2023-05-23 18:44:48
1214
原创 【python】关于import相关知识总结
为了理解mmcv中的模块导入过程,首先需要理解python中的相对路径/绝对路径,以及__init__.py文件在import中的作用,然后再学习mmcv关于Register类和build的相关知识。
2023-05-19 23:25:47
6709
2
转载 [转载]卡尔曼滤波(kalman filter)和均值滤波有什么关系?
看了一篇文章《傻瓜也能懂的卡尔曼滤波器(翻译自外网博客)》,发现评论里很多人说看不懂,决定写一篇真傻瓜也能懂的卡尔曼滤波。文章先从简单的平均值开始,问题从简单到复杂,最后引入卡尔曼滤波。...
2022-07-31 21:22:40
702
原创 CenterNet目标检测模型及CenterFusion融合目标检测模型
CenterNet是一种基于free-anchor的目标检测模型,其继承自CornerNet目标检测模型,可以很容易迁移到例如3D目标检测和人体关键点检测等任务。CenterFusion是一种通过融合毫米波雷达数据和可见光相机数据进行3D目标检测模型,该模型属于中端融合模型..........................................
2022-07-12 23:57:53
5808
1
原创 DLA模型(分类模型+改进版分割模型) + 可变形卷积
Deep Layer Aggregation (DLA) 是一种网络特征融合方法,发表于CVPR 2018。相比传统串联的卷积网络,其典型特点是实现了不同层级的深度融合,相比目标检测中的FPN和PAN结构,相比Desnet的密集连接,其连接方式更复杂更综合。论文中包含两个网络,一个是DLA的特征提取模型,可用作分类模型和检测模型的backbone,第二个网络是在DLA的基础上加入一个decoder模块,组成一个分割模型,相当于把DLA看做encoder。...........................
2022-06-25 23:00:32
10650
1
原创 轻量级实时语义分割:ENet & ERFNet
ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation 发表在CVPR2016。ERFNet: Efficient Residual Factorized ConvNet for Real-Time Semantic Segmentation 发表在2018年1月的IEEE Transactions on Intelligent Transportation Systems。两者任务均为轻量级实时性语义分割。.
2022-06-07 18:51:34
2861
原创 ConvNeXt的网络结构和实现代码总结(torch)
ConvNext是在ResNet50模型的基础上,仿照Swin Transformer的结构进行改进而得到的纯卷积模型,当然原生模型是一个分类模型,但是其可以作为backbone被应用到任何其它模型中。ConvNext模型可以被称之为2022年cv算法工程师抄作业必备手册,手把手教你改模型,把ResNet50从76.1一步步干到82.0。
2022-04-17 22:45:24
10241
7
原创 densenet的网络结构和实现代码总结(torch)
densenet网络是CVPR 2017 (Best Paper Award),这篇论文是在Stochastic Depth的启发下提出的。densenet和Stochastic Depth都是清华的黄高博士提出的。DenseNet(密集卷积网络)的核心思想是密集连接,即某层的输入除了包含前一层的输出外还包含前面所有层的输出。
2022-04-17 22:44:15
9145
1
原创 深度学习模型计算量评价指标FLOPs, MACs, MAdds关系
在评价深度学习模型的大小和计算量时,经常使用的参数有:parameters, FLOPs, MACs, MAdds。除此以外,我们还经常见到FLOPS, GFLOPS, TFLOPS,这三个参数其实并非用来评价模型的计算量,而是用来评价计算机硬件的计算能力。
2022-03-28 20:58:30
17926
1
原创 shufflenet v1/v2的网络结构和实现代码总结(torch)
# 根据torch官方代码修改的shufflenetv2的网络模型 https://github.com/pytorch/vision/blob/main/torchvision/models/shufflenetv2.py# 权重文件下载 download url: https://download.pytorch.org/models/shufflenetv2_x0.5-f707e7126e.pth# 权重文件下载 download url: https://download.pytorch....
2022-03-09 20:35:51
10289
3
原创 torch的pth模型转换为onnx模型并对比测试
import torchimport torch.onnxfrom PIL import Imageimport torchvision.transforms as transformsimport onnxruntime as rtimport numpy as np################################################################################################################.
2022-02-22 20:17:36
2628
6
原创 通过python全量备份或增量备份文件夹中所有文件
基于《python实现对文件的全量、增量备份 - goodTOgreat - 博客园》代码修改而成的新代码,新代码能够实现基于python全量备份或增量备份文件夹中所有文件。# 用于实现对某些要求文件夹的全量备份和增量备份import osimport shutilimport timeimport hashlibimport pickle as p# 将文件转换为md5文件def md5check(fname): m = hashlib.md5() with ope
2022-02-09 23:44:18
1770
原创 mobilenet v1 v2 v3的网络结构和实现代码总结(tf2.x+torch)
本文总结了mobilenet v1 v2 v3的网络结构特点,并通过tensorflow2.x以tf.keras的方式实现了mobilenet v2 v3。其中,mobilenet v3代码包含large和small两个模型,所以本文包含3个模型的代码实现,所有模型都包含通道缩放因子,可以搭建更小的模型。其实tensorflow官方已经实现了v1 v2 v3的代码,可以直接调用,但是自己手动实现一遍可以加深对网络结构的理解,以及进行自定义网络结构修改。
2022-01-03 14:31:50
3108
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人