
ML&DL
文章平均质量分 68
可keke
君子慎始,差之毫厘,谬以千里。
展开
-
kitti数据集object3D
https://developer.aliyun.com/article/855136转载 2025-01-05 14:17:32 · 162 阅读 · 0 评论 -
自动驾驶数据集nuscenes、kitti
https://www.cnblogs.com/ytwang/p/17729720.htmlhttps://www.aicmty.com/115474.html转载 2025-01-04 14:58:44 · 52 阅读 · 0 评论 -
自动驾驶数据集:nuscenes、KITTI、Waymo和BDD100K
https://www.aicmty.com/115474.html转载 2024-12-30 20:21:23 · 263 阅读 · 0 评论 -
ONNX Runtime、CUDA、cuDNN、TensorRT版本对应
注意,到目前为止,onnxruntime-gpu在CUDA 12.x和CUDA 11.x下的安装命令是不同的,仔细阅读官方文档。原创 2024-07-16 11:09:48 · 4197 阅读 · 0 评论 -
gpustat
【代码】gpustat。原创 2024-06-17 12:46:50 · 269 阅读 · 0 评论 -
Linux软连接和硬连接
软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。换句话说,也可以理解成Windows中的快捷方式。-s表示是软链接,dir1是真实的文件夹,dir2是dir1的软链接。命令查看,带有箭头的便是软链接文件,箭头指向的是源文件。目录下就会生成一个COCO文件夹的软链接。硬链接的作用感觉上像是用来备份文件数据的。工作中通常来说基本都是使用软链接。,就会把源文件删除,例如。原创 2024-06-16 15:44:51 · 451 阅读 · 0 评论 -
MMDetection3D学习笔记一:环境搭建
更推荐直接参考学习官方文档以及官方GitHub仓库,其所包含的内容最全面权威。MMDetection3D是一个基于PyTorch的开源对象检测工具箱,专门用于处理3D场景中检测和分割任务,属于OpenMMLab项目的一部分。可以基于MMDetection3D实现基于点云、图像和多模态数据的3D检测与分割。目前MMDetection3D已经支持数十种不同的算法及多个主流数据集,每个算法都提供了多个SOTA的预训练模型,可以直接使用这些预训练模型实现推理。可以参考模型库和数据集。原创 2024-06-14 17:13:19 · 1164 阅读 · 1 评论 -
部分基于深度学习的主流目标检测算法
CNN首先通过选择性搜索算法Selective Search从一组对象候选框中选择可能出现的对象框,然后将这些选择出来的对象框中的图像resize到某一固定尺寸的图像,并喂入到CNN模型(经过在ImageNet数据集上训练过的CNN模型,如AlexNet)提取特征,最后将提取出的特征送入到分类器来预测该对象框中的图像是否存在待检测目标,并进一步预测该检测目标具体属于哪一类。这样做对小物体的检测不利,因为小物体本身具有的像素信息较少,在下采样的过程中,这些信息很容易丢失,从而降低了算法的性能。原创 2024-05-15 16:26:02 · 1384 阅读 · 0 评论 -
推理(推断)(Inference)与预测(Prediction)
预测是解释将要发生的事情,而推理是关于已经发生的事情。简言之,关键是给定一些随机变量(X1,X2…Xn)或特征,如果你对估计某物(Y)感兴趣,那么这就是预测。如果你想了解(Y)如何随着随机变量的变化而变化,那么这就是推理。作者 Alexandros Zenonos引用 https://zhuanlan.zhihu.com/p/206399469。转载 2024-04-17 16:40:19 · 1044 阅读 · 0 评论 -
Ubuntu系统进行深度学习时查看GPU、CPU实时使用情况等
纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,原创 2024-04-05 17:00:06 · 5151 阅读 · 0 评论 -
python之parser.add_argument()
argparse — 命令行选项、参数和子命令解析器 — Python 3.12.0 文档argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,可以让人轻松编写用户友好的命令行接口。通过在程序中定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。原创 2023-12-06 15:42:30 · 2868 阅读 · 0 评论 -
Transformer Decoder的输入
大部分引用参考了既安的https://www.zhihu.com/question/337886108/answer/893002189这篇文章,个人认为写的很清晰,此外补充了一些自己的笔记。弄清楚Decoder的输入输出,关键在于图示三个箭头的位置:以翻译为例:输入:我爱中国输出: I Love China因为输入(“我爱中国”)在Encoder中进行了编码,这里我们具体讨论Decoder的操作,也就是如何得到输出(“I Love China”)的过程。Decoder执行步骤T原创 2023-12-18 20:24:31 · 2057 阅读 · 0 评论 -
卷积的计算过程
参考引用:https://zhuanlan.zhihu.com/p/634882615。原创 2023-12-18 16:02:54 · 1040 阅读 · 0 评论 -
Pytorch nn.Linear()的基本用法与原理详解及全连接层简介
torch.nn.Linear(in_features, # 输入的神经元个数out_features, # 输出神经元个数bias=True # 是否包含偏置Linear其实就是对输入Xn×iXn×i执行了一个线性变换Yn×oXn×iWi×obYn×oXn×iWi×ob其中WWW是模型想要学习的参数,WWW的维度为Wi×oWi×o。原创 2023-12-18 14:39:42 · 36625 阅读 · 4 评论 -
向量、矩阵、数组、向量空间
在学习机器学习的过程中,会经常遇到向量、矩阵和数组这些概念,并涉及到多维度,造成许多困惑,因此进行一个总结,主要参考了:https://blog.youkuaiyun.com/qq_33419476/article/details/105546442。原创 2023-12-14 15:34:21 · 1365 阅读 · 0 评论 -
独热编码和词向量的简单理解
把单词用向量表示,是把深度神经网络语言模型引入自然语言处理领域的一个核心技术。想要让机器理解单词,就必须要把它变成一串数字(向量)。下面介绍的 One-Hot Encoding(One-Hot 编码)和 Word Embedding (词嵌入)和就是把单词变成向量的两类方法。原创 2023-12-12 19:42:09 · 645 阅读 · 0 评论 -
注意力机制和自注意力机制
理论上Self-Attention (Transformer 50个左右的单词效果最好)解决了RNN模型的长序列依赖问题,但是由于文本长度增加时,训练时间也将会呈指数增长,因此在处理长文本任务时可能不一定比LSTM(200个左右的单词效果最好)等传统的RNN模型的效果好。LSTM通过这些门控机制,避免了传统RNN中梯度消失和梯度爆炸的问题,在一些情况下仍然是一种有效的模型选择,研究者也提出了一些结合LSTM和Self-attention的模型,以发挥它们各自的优势。它们描述了单词之间的关联和句子的意义。原创 2023-12-11 16:21:56 · 1239 阅读 · 0 评论 -
简单了解RNN循环神经网络
总结来说网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。一个句子中,前一个单词其实对于当前单词的词性预测是有很大影响的,比如预测苹果的时候,由于前面的吃是一个动词,那么很显然苹果作为名词的概率就会远大于动词的概率,因为动词后面接名词很常见,而动词后面接动词很少见。而 RNN 的隐藏层的值 s 不仅仅取决于当前这次的输入 x,还取决于上一次隐藏层的值 s。的信息,即前面的输入和后面的输入是有关系的。原创 2023-12-08 14:58:56 · 956 阅读 · 0 评论 -
预训练(pre-learning)、微调(fine-tuning)、迁移学习(transfer learning)
当你觉得结果很满意的时候,你就可以将训练模型的参数保存下来,以便训练好的模型可以在下次执行类似任务时获得较好的结果。预训练模型就是已经用数据集训练好了的模型。这时候,你可以直接使用之前保存下来的模型的参数来作为这一任务的初始化参数,然后在训练的过程中,依据结果不断进行一些修改。通常的做法是截断预先训练好的网络的最后一层(softmax层),并用与我们自己的问题相关的新的softmax层替换它。fine-tune是把别人的模型的已经训练好的参数,作为我们的初始化参数,这样,收敛速度快,而且需要的计算力也小。原创 2023-12-07 14:08:45 · 1268 阅读 · 0 评论 -
Pytorch中的resize和reshape
如果可能,返回的张量将是输入的视图,也就是说原本的tensor并没有被改变,如果想要改变那么就将改变的tensor赋值给原本的就行,即:tensor_temp = torch.reshape(tensor_temp, xxx))。个人理解是给数组一个新的形状,数据和元素数量及顺序不变,按照形状截断、重新拼起来成为一个张量,可以使用reshape用来增加数组的维度。要注意的一点是PILImage对象size属性返回的是w, h,而resize的参数顺序是h, w。读取的图片,这两种方法得到的是。原创 2023-12-06 19:00:17 · 4084 阅读 · 0 评论 -
model.parameters()的简单理解与使用
生成器每次生成的是Tensor类型的数据。model.parameters()保存的是Weights和Bais参数的值。在自定义网络中,model.parameters()方法继承自nn.Module。parameters()会返回一个。更加详细的说明可以参考。原创 2023-12-03 15:25:52 · 1428 阅读 · 0 评论 -
Loss function和Cost function的区别
则是计算单个样本预测误差的度量。在训练过程中,通过不断调整模型参数,目标是最小化。的值,从而使模型在整个数据集上的预测误差最小化。都是用来度量模型预测结果和实际结果之间的差距。的目的是最小化整个数据集上的误差。看作是对模型在整个数据集上的性能评估,而。值相加,并取平均值得到的总体误差度量,是针对整个数据集的预测误差的度量。是针对单个样本的预测误差的度量。原创 2023-12-03 12:39:18 · 789 阅读 · 0 评论 -
torch.ones()的简单理解
torch.full()以及torch.zeros()类似。原创 2023-12-01 15:58:19 · 1867 阅读 · 0 评论 -
PIL、cv2读取类型以及转换,PIL、numpy、tensor格式以及cuda、cpu的格式转换
CPU tensorGPU tensorPILarrayCPU tensorGPU tensor同cpu tensor的转换方式PIL(img_PIL)array或或tips:注意PIL与cv2转换要变换颜色通道。参考:https://blog.youkuaiyun.com/hjkdh/article/details/123097434。原创 2023-11-28 13:45:20 · 1427 阅读 · 0 评论 -
深度学习backbone、neck 和 head
在 R-CNN 模型之后,出现了 Fast R-CNN、Faster R-CNN、Mask R-CNN 等一系列的目标检测模型,这些模型都采用了 backbone、neck 和 head 这种模型架构,并取得了不错的性能。通过添加或修改 neck 和 head 的结构,可以轻松地将模型应用于不同的任务和数据集,从而提高模型的泛化能力和性能。采用 backbone、neck 和 head 这种形式可以使深度学习模型更加灵活、可重用、易于训练和优化,同时也更易于扩展和应用于不同的任务。转载 2023-10-21 14:49:43 · 837 阅读 · 0 评论 -
预训练模型
预训练模型是一种深度学习的方法(强化学习中就基本没有预训练方法),它利用大量的无标注数据来训练一个通用的模型,然后在特定的任务上进行微调,以适应不同的场景和需求。比如NLP中的BERT,CV中的ResNet、Swin Transformer。预训练模型可以学习到语言的通用知识和特征,提高模型的泛化能力和鲁棒性。预训练-微调方法指的是首先在大数据集上训练得到一个具有强泛化能力的模型(预训练模型),然后在下游任务上进行微调的过程。原创 2023-10-15 15:25:58 · 316 阅读 · 0 评论 -
对神经网络的初步简单理解
然而,由于损失函数的方程不包含权重和偏置(指的是不直接包含),所以我们不能直接计算损失函数对权重和偏置的偏导数。然而,我们仍然需要一种方法来评估我们的预测的「优秀程度」(即,我们的预测与真实值相差多少?现在,我们已经找到了预测误差的方法(损失函数),那么我们需要一种方法将错误「传播」回去,从而更新权重和偏置。为了确定权重和偏置调整的适当值,我们需要知道损失函数对权重和偏置的偏导数。在训练过程中,我们的目标是找到一组最佳的权重和偏置,使损失函数最小化。从微积分的角度来看,函数的偏导数也就是函数的斜率。原创 2023-09-21 13:35:23 · 91 阅读 · 0 评论 -
对于一元函数y=f(x)梯度的理解
参考链接:https://www.zhihu.com/question/310955590/answer/678086435。时,其梯度方向水平向左,因此负梯度方向则为向右,参数向右侧更新一小步,此时。这也解释了一元函数梯度下降的过程,当。便减小,逐步更新,直至达到最低点。注意:其中 ,i,j 分别代表。处梯度方向为水平向左。原创 2023-09-20 16:57:46 · 1161 阅读 · 0 评论 -
梯度下降法(GD)与随机梯度下降法(SGD)
随机梯度下降法(SGD)的思想就是按照数据生成分布抽取m个样本,通过计算他们梯度的平均值来更新梯度(梯度下降法采用的是全部样本的梯度平均值来更新梯度)。一般来说我们在实现SGD一般采用的都是以上方法,即通过每次取一个batch_size大小的样本来更新梯度而不是每次仅取1个样本来更新。梯度方向是函数增长最快的方向,梯度的反方向是函数减少最快的方向,而梯度下降法就是往梯度反方向前进"一小步"来达到函数减少的效果。(x)是第i个样本所对应的损失函数,f(x)是目标损失函数。其中η就是学习率,g是梯度。原创 2023-09-20 15:43:21 · 395 阅读 · 0 评论 -
Epoch、Batch Size和迭代
(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;(2)iteration:1个iteration等于使用batchsize个样本训练一次;(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;100次iteration,1次epoch。原创 2023-09-20 14:27:33 · 284 阅读 · 0 评论