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

原创 Torch知识点总结【持续更新中......】
1、torch.no_grad上一个上下文管理器,在你确定不需要调用Tensor.backward()时可以用torch.no_grad来屏蔽梯度计算;2、在被torch.no_grad管控下计算得到的tensor,它的requires_grad就是False;
2022-09-07 15:02:24
1671

原创 OpenCV、PIL知识点日常总结,Bug总结【持续更新......】
1、如果图片是中文路径,则在cv2.imdecode中使用np.fromfile,如果是英文路径则使用cv2.imread()2、opencv中的im.shape:(1080, 1920, 3),1080是height,1920是width,3是通道,2、im.size=(1920, 1080) ,1920是width,1080是height。1、Image打开图片使用的内部方法open;3、使用plt.imshow()方法显示图片,3、暂时没使用过im.size。
2022-09-02 19:59:53
2805
2
原创 TensorRT【详解】
参考:1、TensorRT Docker pytorch版本讲解:https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-24-11.html#rel-24-11
2025-02-11 19:12:17
177
1
原创 我的2025年leetcode刷题笔记【持续更新中。。。】
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。输入:nums1 = [1], m = 1, nums2 = [], n = 0。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [] 和 [1]。输出:[1,2,2,3,5,6]
2025-02-09 12:11:53
304
原创 使用gdb调试python程序
当 Python 代码调用底层 C 扩展(例如,numpy 或 torch 等)时,GDB 可以帮助你跟踪到 C 扩展的代码。如果 Python 崩溃或抛出错误,你可以使用 GDB 跟踪并分析调用栈,找出问题发生的底层 C/C++ 代码。通过 GDB 调试 Python 代码时,你可以设置断点、查看栈帧、分析崩溃,并跟踪底层的 C/C++ 代码。GDB 主要用于调试 C/C++ 代码,但也可以调试 Python 代码,特别是在与 C 扩展交互时。示例:调试 Python C 扩展(例如,PyTorch)
2025-01-11 15:53:21
822
原创 Ubuntu20.04安装cuda11.8和cudnn,以及TenserRT
我下载的cudnn安装包文件是cudnn-11.1-linux-x64-v8.0.4.30.solitairetheme8,如何根据这个安装包进行安装cudnn呢?将文件复制到 CUDA 安装目录,假设 CUDA 11.1 安装在 /usr/local/cuda-11.1,使用以下命令将文件复制到相应目录,的步骤一样,但是该博文没有cudnn验证命令,所以这里我给出了验证cudnn版本的有效命令,命令如下,,但是我使用该博文的设置环境变量的命令时没有生效,下面我给出有效设置环境变量的命令,其他步骤不变,
2024-11-12 14:26:42
1739
原创 使用人体关键点驱动FBX格式虚拟人原理【详解】
1、标准化向量: 将向量 A 和 B 标准化为单位向量 uA 和 uB。2、计算点积和叉积: 获取向量 uA 和 uB 之间的夹角信息(余弦值和正弦值)。3、处理数值稳定性: 限制点积值在 [-1, 1] 范围内,确保计算的准确性。
2024-10-14 17:44:57
1071
原创 相机坐标系和世界坐标系的转换以及图像坐标系和像素坐标系的转换【详解】
什么是相机标定?空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,需要建立相机成像的几何模型这些几何模型参数就是相机参数这个求解参数的过程就称之为相机标定(或摄像机标定)什么是世界坐标系由于摄像机与被拍摄物体可以放置在环境中任意位置,这样就需要来表示摄像机和被摄物体的位置,这个在环境中建立一个坐标系,坐标系就成为世界坐标系什么是相机坐标系也是一个三维直角坐标系,原点位于镜头光心处,x、y轴分别与相面的两边平行,z轴为镜头光轴,与像平面垂直,如下图所示为啥要把世界坐标系变到相机坐标系。
2024-09-29 15:49:50
3478
1
原创 数字人模型收藏的链接【计算机图形学之数字人驱动】
文章目录1、FBX格式的数字人/虚拟人模型链接:https://www.mixamo.com/#/?page=3&type=Character
2024-09-13 09:16:00
350
原创 Vision Transformer (ViT) + 代码【详解】
虽然 Transformer 架构已成为自然语言处理任务的事实标准,但它在计算机视觉领域的应用仍然有限。在 Vision 中,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持其整体结构不变。我们表明,这种对 CNN 的依赖是不必要的,直接应用于图像块序列的纯 Transformer 可以在图像分类任务中表现良好。
2024-09-03 17:01:59
4260
3
原创 Self Attention(自注意力机制) | Multi-Head Attention【详解】
attention和推荐算法具有相似性,推荐的机制大致如下:在搜索框输入商品名称键盘,后台会根据你输入的商品名称和商品的标签或title进行匹配,你输入的商品名称为query,商品的标签或title为key,query和key做计算后为相似度,后台会根据商品的一些特性,比如销量,好评度来进行商品排序,特性被称为value,相似度与value做计算后为总分。计算,得到的 q 和 k 的矩阵的维度都是 1x2,v 矩阵的维度是 1x3,每组的 q 乘以 k 的转置的维度是 1x1的,再除以。
2024-08-27 16:22:01
1082
原创 成功解决:RuntimeError: CUDA error: no kernel image is available for execution on the device
安装的 PyTorch 版本和 CUDA 版本不兼容。可以重新安装与系统上 CUDA 版本匹配的 PyTorch 版本。CUDA 版本与 GPU 驱动程序或 PyTorch 安装的 CUDA 编译版本不兼容。安装完成后,就可以完美解决这个Bug!
2024-08-23 09:44:21
3951
原创 Mediapipe holistic pose 以及 blazepose 的前端开发
1、blazepose:https://github.com/tensorflow/tfjs-models/tree/master/pose-detection/src/blazepose_mediapipe
2024-08-21 13:38:08
277
原创 DDPM | 扩散模型代码详解【较为详细细致!!!】
左图是Transformer的Positional Embedding,行索引代表第几个单词,列索引代表每个单词的特征向量,右图是DDPM的Positional Embedding,DDPM的Positional Embedding和Transformer的Positional Embedding的。另一个区别是DDPM的Positional Embedding并没有按照奇数位和偶数位进行拼接,而是按照前后的sin和cos进行拼接的,虽然拼接方式不同,但是最终的效果是一样的。这是下采样模块的解释,
2024-08-19 17:31:15
4320
4
原创 Positional Encoding | 位置编码【详解】
transformer的作者刚开始说固定的位置编码和可学习的位置编码的效果是差不多的,后来证明固定的位置编码没有太大的必要,还不如省事直接使用可学习的位置编码,如下图,设置token的数量为10,token的特征向量长度为128,偶数项和奇数项的位置编码公式如下图所示,代码中,token_num是句子中的单词数量,embed_dim表示每个单词的特征向量长度,将对应位置的位置编码直接加在输入的单词上,如下图中的最后一行,为什么 attention 并不能赋予 token 位置信息?
2024-08-14 15:35:56
2467
1
原创 pip如何快速安装包 / install packet
2、需要注意的是,如果在pip中下载安装比较慢可以换个源,可以到用户文件夹下,创建一个pip文件夹,然后在pip文件夹里创建一个txt文件。1、在后面加-i https://mirrors.aliyun.com//pypi//simple。
2024-05-23 17:21:54
392
原创 facenet人脸检测+人脸识别+性别识别+表情识别+年龄识别的C++部署
TAO工具包基于TensorFlow和PyTorch构建,采用了迁移学习的技术,可以将用户自己的模型或预训练模型与实际或合成数据进行适配,并针对目标平台进行推理吞吐量的优化,从而使整个训练过程变得更加简单、高效。TAO工具包的使用不需要专业的人工智能知识或大量的训练数据集,因此,它可以帮助更多的人轻松进入深度学习的领域,快速实现各种应用场景。运行环境:Tensorflow。运行环境:TensorRT。运行环境:TensorRT。运行环境:TensorRT。运行环境:TensorRT。
2024-04-16 23:12:51
1796
3
原创 YOLOV5检测+追踪使用deepstream部署(c++版)
DeepStream是一个基于NVIDIA GPU和TensorRT的开源视频分析框架。它提供了一个端到端的、可扩展的平台,可以处理多个视频和图像流,并支持实时的人脸识别、车辆识别、物体检测和跟踪、行为分析等视觉分析任务。DeepStream可以通过在不同的节点上进行分布式部署来实现高吞吐量和低延迟的处理,从而满足各种应用场景的需求,如智能城市、智能交通、工业自动化等。Deepstream稳定高效的读流和推流能力;Deepstream内置的目标追踪算法(deepsort等)
2024-04-16 15:25:35
3653
6
原创 Stable Diffusion扩散模型【详解】小白也能看懂!!
2、因为每一个像素都有自己的分布,都要预测出一个均值和方差,所以网络输出的尺寸需要和图像尺寸一致,所以我们选用 Unet 网络,假设数据集中有100张图片,每张图片的shape是4x4x3,假设每张图片的每个channel的每个像素点都服从正态分布,图像加噪不是在原有图像上进行加噪的,而是通过把图片的每个像素的值转换为-1到1之间,比如像素的值是。去噪是加噪的逆过程,由时间T时刻的图像逐渐去噪到时刻为0的图像,求导,但是对于扩散的过程是不可行的,如下面的公式无法求出,因为。
2024-04-04 20:49:29
4791
2
原创 Stable Diffusion扩散模型推导公式的基础知识
采样这个操作本身是不可导的,也就无法通过BP来对参数进行优化。但是我们可以通过重参数化技巧,将简单分布的采样结果变换到特定分布中,如此一来则可以对参数进行求导,注意: 对于连续型随机变量,期望就是积分,满足条件的积分也可以写成期望的形式。这在之后的 公式推导过程中,我们会使用到期望与积分写法的转换,马尔可夫链:下一状态的概率分布仅取决于当前状态,与过去的状态无关。期望是指随机变量取值的平均值,用来刻画随机变量的集中位置,概括描述:已知抽取的样本,求概率分布的参数。离散型随机变量X的取值为。
2024-04-03 19:58:22
1618
2
原创 MODNet抠图模型的C++部署
也是一类前背景分割问题,但是matting不是硬分割,而是软分割(Soft Segmentation),像玻璃、头发这类前景,对应像素点的颜色不只是由前景本身的颜色决定,而是前背景颜色融合的结果,matting问题的目标就是,找出前背景颜色,以及它们之间的融合程度,以便于将前景合并到新的背景上,matting属于。参考原文:https://blog.youkuaiyun.com/qq_46675545/article/details/123738493。构建、build engine、运行。
2024-04-01 23:07:15
555
原创 HRNet/hrnet人体姿态估计的C++部署
骨骼点识别(Human Pose Estimation, HPE)是计算机视觉领域中的重要任务,旨在从图像或视频中检测和定位人体关节。网络需要对每个关节点的每个像素位置产生一个标签,也就是说,每个关节点的heatmap对应一个标签heatmap,因此,如果一张图片中待检测的关节点有 m 个,则网络理想状态下会。此时heatmap大致长这样,同一张图上是不同人的同一类型关键点,如第一幅图,是两个人的鼻子的位置。本文中我们使用的是bottom up的多人骨骼点检测算法——higher hrnet。
2024-04-01 18:57:25
1824
4
原创 Transformer代码从零解读【Pytorch官方版本】
输入经过词向量层和位置编码层,得到最终的输入,通过掩码注意力机制,然后交互注意力机制与Encoder的输出做交互,Encoder的输出做K矩阵、V矩阵,Decoder的值做Q矩阵,再经过前馈神经网络层,得到Decoder的输出,解码端是没法并行的,因为输入【S】,输出【I】,然后输出的【I】作为下一阶段的输入,这一次的输入取决于上一次的输出,所以解码端无法并行,如果当前输入为【S】,则后面的【卷起来】被遮挡,当输入为【S卷】时,后面的【起来】被遮挡,形成上三角矩阵为1的矩阵,如何去掉PAD信息?
2024-03-16 15:18:45
2226
2
原创 基于BatchNorm的模型剪枝【详解+代码】
如下图所示,每个conv-layer会被计算相应的channel scaling factors,然后根据channel scaling factors筛选conv-layer,达到模型瘦身的作用,图中的1.170,0.001,0.290等就是下面我们将要介绍的学习参数。L2求导为:θ,梯度下降过程越来越慢,相应的权重参数都接近0,起到平滑的作用,值是1.17,1.16,1.15等,那如何筛选比较重要的。图中的1.170,0.001,0.290等就是学习参数。越小,其对应的特征图越不重要,
2024-02-08 11:38:33
2802
1
原创 ChatGLM-6B训练本地知识库【详解】
左边是Encoding,右边是Decoding,trm的输入和输出都可以是序列,所以trm可以做文本翻译,BERT是Bidirectional Encoder Representations from Transformers的缩写,BERT是Transformer的Encoder一个预训练的语言表征模型在大量未标注的文本数据集上训练论文发表时在11个NLP任务上取得最佳指标BERT所做的事情就是把一个句子输出一个Embedding,
2024-02-05 11:05:07
1992
1
原创 Transformer结构详解【学习笔记】
然后再对Encoders(编码),Decoders(解码)进行细化,如下图,需要注意Encoders之间的结构是相同的,Decoders之间的结构也是相同的,虽然Encoders和Decoders之间各自的结构是相同的,但是是单独训练的,Encoders和Decoders的数量是超参数,可以自己定义,,依次对输入的【我爱你。下面再举一个NLP的例子,Query代表【爱】,分别与Key1,Key2,Key3,Key4代表的【我】,【不】,【爱】,【你】做点乘,具体步骤如下2图,比如输入的词是【我爱你。
2024-01-11 12:44:11
1826
2
原创 图像传感器与ISP【相机成像原理(四)】
在许多传感器前面,通常会有一块作为OLPF的玻璃片,也被称为光学抗混叠滤波器,OLPF通常由两层双折射材料和红外滤波器组成。光线具有不同的振动方向,进入如下图左一的晶体后,就会分成不同的方向(振动方向不同)进行传播,所以会造成字的重影,然而,OLPF意味着降低分辨率,因为高频信号被滤除了随着现在像素数量变大,OLPF变得不再是必要的。所以摄影师经常破解他们的相机来移除OLPF,以避免分辨率的损失也有相机制造商提供带和不带OLPF的相机版本。
2024-01-08 11:56:58
2746
1
原创 摄影光学与真实镜头详解【相机成像原理(三)】
• 折射是光线在穿越折射率变化的界面时发生弯曲的现象,折射遵循斯涅尔定律;• 在近轴情况下,光轴上的任意一点向透镜发出的光线汇聚到透镜另外一侧的一点;• 通过近轴分析,可以求出透镜的焦距;• 在近轴情况下,可以通过透镜制造公式推导出高斯成像公式。
2024-01-05 10:41:17
3775
原创 YOLOV5 C++部署的人员检测项目,包括CUDA编程,PTQ校准,jetson部署,开发后处理【C++深度学习部署(十一)】
需要在有界面的主机上安装,远程ssh无法使用窗口# 建议使用conda虚拟环境 # 安装 pip install labelImg # 启动 labelImg深度学习量化就是将深度学习模型中的参数(例如权重和偏置)从浮点数转换成整数或者定点数的过程。这样做可以减少模型的存储和计算成本,从而达到模型压缩和运算加速的目的。如int8量化,让原来模型中32bit存储的数字映射到8bit再计算(范围是[-128,127])。加快推理速度:访问一次32位浮点型可以访问4次int8整型数据;
2023-11-21 17:26:53
1989
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人