深度学习
文章平均质量分 60
CV矿工
这个作者很懒,什么都没留下…
展开
-
monocular depth estimation 网络的 regression loss 选择
其具体实现见:https://github.com/marcelampc/d3net_depth_estimation/blob/master/pytorch/util/loss_bank.py。原创 2024-04-01 19:49:53 · 173 阅读 · 0 评论 -
视觉问答(Visual_Question_Answering, VQA)介绍
VQA任务定义如下:给机器输入一张图片和一个跟这幅图片相关的问题,机器需要根据图片信息对问题进行回答。训练阶段,需要先在一个由图像,问题,答案组成的三元组集上训练一个模型。测试阶段,给该预训练模型输入一张新的图像和一个新的问题,要求模型能够预测正确的答案。设模型参数为,则该任务的目标为求取!对于open-Ended问题,机器的输出是自然语言(算法需要生成一个字符串来回答问题)。对于multi-choice问题,机器挑选出正确答案。原创 2024-03-18 20:09:45 · 2190 阅读 · 0 评论 -
Active learning Tiny Review for autonomous driving
阅读某一特定主题的一本书不会使你成为专家,阅读多本包含相似内容的书也不会。真正掌握一项技能或领域的知识需要来自多样化信息源的大量信息。这对于自动驾驶和其他人工智能技术同样适用。负责自动驾驶功能的深度神经网络需要经过详尽的训练,不仅要在日常行程中可能遇到的情况下,还要在希望它们永远不会遇到的异常情况下进行训练。成功的关键在于确保它们受到了正确数据的训练。什么是正确的数据呢?那些新颖或不确定的情境,而不是反复出现相同的场景。原创 2023-10-26 11:28:51 · 160 阅读 · 0 评论 -
Python如何优雅地可视化目标检测框
通过cv2.rectangle 函数设置 thickness, 我们可以得到填充后的图像,进而利用opencv中的 cv2.add_weight 函数可以实现透明效果.上述代码中, 首先计算标签文本的大小, 然后据标签文本大小进行矩形填充, 最后使用函数cv2.putText 来画出对应的标签文本.接下来我们来给矩形框添加标签,我们观察上述画图函数,注意最后一个参数thickness,如果此值等于-1,那么将对矩形框执行填充效果.原创 2023-09-28 17:18:46 · 1627 阅读 · 0 评论 -
在对bbox 进行坐标系转换时heading的处理--使用向量的旋转
接下来我们对这个结论进行一下简单的推广,对于任意两个不同的点A和B(对于求点绕另一个点旋转后的坐标时,A B重合显然没有太大意义),求A点绕B点旋转θ角度后的坐标,我们都可以将B点看做原点,对A和B进行平移变换,计算出的点坐标后,在其横纵坐标上分别加上原B点的横纵坐标,这个坐标就是A’ 的坐标。结论的进一步推广:对于任意非零向量AB(零向量研究意义不大),对于点C进行旋转,我们只需求出点A和B对于点C旋转一定角度的坐标即可求出旋转后的向量A’ B’ ,因为向量旋转后仍然是一条有向线段。原创 2023-09-22 18:06:14 · 144 阅读 · 0 评论 -
pytorch 使用DataParallel 单机多卡和单卡保存和加载模型的正确方法
这里我为了把三个模块save到同一个文件里,我选择对所有的模型先封装成一个checkpoint字典,然后保存到同一个文件里,这样就可以在加载时只需要加载一个参数文件。原创 2023-09-22 18:03:50 · 747 阅读 · 0 评论 -
3D IoU python代码
【代码】3D IoU python代码。原创 2023-02-08 16:20:21 · 334 阅读 · 1 评论 -
什么是范数
常用的范数有L1范数,也叫曼哈顿距离:是一个向量中所有元素的绝对值之和。L2范数,也叫欧几里得范数:是一个向量中所有元素取平方和,然后再开平方。范数定义了向量空间里的距离,它的出现使得向量之间的比较成为了可能。简单理解:范数可以把一组实数列表,映射成一个实数。范数是一个函数,表示方式为||x||,原创 2023-01-03 10:28:41 · 335 阅读 · 0 评论 -
一文了解模型量化中的QAT和PTQ
简单概括就是,我们在网络训练过程去模拟量化,我们通过设定一个可学习的scale,这个scale一般可以与weights或者激活值相绑定,然后我们利用一个量化过程 q = round(r/s)*127,将需要量化的值量化到0-127之间,再接着一个反量化过程q * s,就实现了一个误差的传递,接着我们利用反量化后的结果继续前传,最后得到loss,我们求量化后权重的梯度,并用它来更新量化前的权重,使得这种误差被网络抹平,让网络越来越像量化后的权重靠近,最后我们得到了量化后的权重q和缩放因子s。原创 2022-11-19 21:09:08 · 1064 阅读 · 0 评论 -
tensor复制与保存
tensor clone detach 的区别和使用原创 2022-11-08 17:35:00 · 2106 阅读 · 0 评论 -
loss不降低原因以及解决方法
知乎上还有个总结也挺经典train loss 不断下降,test loss不断下降,说明网络仍在学习;train loss 不断下降,test loss趋于不变,说明网络过拟合;train loss 趋于不变,test loss不断下降,说明数据集100%有问题;train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。原创 2022-11-08 17:18:31 · 6591 阅读 · 1 评论 -
详解深度学习中,如何进行反向传播
通过正向传播求初基于输入x的y_pred后,需要通过比较y_pred和原数据y,得到损失函数(一般是它们差值的L2范数)然后,各个权重矩阵就可以根据损失函数反向传播回来的梯度进行学习更新,从而使得下一轮的损失函数更小总的来说,反向传播起到一个提高训练模型精确度的作用。原创 2022-11-08 17:14:22 · 1115 阅读 · 0 评论 -
【DeepLearning】【PyTorch 】PyTorch 损失函数封装中 size_average、reduce 和 reduction 三个参数的意义
已过时(Deprecated)(见 reduction). 一般地,losses 损失函数值为 batch 中对所有 loss 元素的平均值. 这里注意,对有些类型的损失函数,在单个训练样本中存在多个元素. 如果 size_average 域设为 False,losses 损失函数值为 minibatch 中对所有 loss 元素的求和. 当 reduce 设为 False 时,忽略 size_average 域. 缺省为:True.size_average (布尔类型, 可选参数)原创 2022-11-08 17:02:38 · 1096 阅读 · 0 评论 -
数据科学中常见的9种距离度量方法,内含欧氏距离、切比雪夫距离等
在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。在本文中,数据科学家 Maarten Grootendorst 向我们介绍了 9 种距离度量方法,其中包括欧氏距离、余弦相似度等。许多算法,无论是监督学习还是无监督学习,都会使用距离度量。这些度量,如欧几里得距离或者余弦相似性,经常在 k-NN、 UMAP、HDBSCAN 等算法中使用。了解距离度量这个领域可能比你想的更重要,以 k-NN 为例,它常被用于监督学习中。但是,如果你的数据是高维的,欧几里德距离还能用吗?原创 2022-11-02 16:14:13 · 629 阅读 · 0 评论 -
YOLOv5 PyTorch TXT label文件格式讲解
YOLOv5PyTorchTXTlabel文件格式讲解。原创 2022-08-02 13:49:44 · 1209 阅读 · 0 评论 -
深入理解Python中的GIL(全局解释器锁)
因为GIL的存在,只有IOBound场景下的多线程会得到较好的性能。如果对并行计算性能较高的程序可以考虑把核心部分也成C模块,或者索性用其他语言实现。GIL在较长一段时间内将会继续存在,但是会不断对其进行改进。...转载 2022-08-01 13:37:30 · 347 阅读 · 0 评论 -
DataParallel(DP) and DistributedDataParallel (DDP)的区别
First,DataParallelissingle-process,multi-thread,andonlyworksonasinglemachine,whileDistributedDataParallelismulti-processandworksforbothsingle-andmulti-machinetraining.DataParallelisusuallyslowerthanDistributedDataParallelevenonasinglemachineduetoGILconten。原创 2022-08-01 13:28:56 · 316 阅读 · 0 评论 -
JDE发展历程详讲
JDE算法引进过程详讲原创 2022-06-21 10:35:39 · 133 阅读 · 0 评论 -
Warmup预热学习率
学习率是神经网络训练中最重要的超参数之一,针对学习率的优化方式很多,Warmup是其中的一种(一)、什么是Warmup?Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时候先选择使用一个较小的学习率,训练了一些epoches或者steps(比如4个epoches,10000steps),再修改为预先设置的学习来进行训练。(二)、为什么使用Warmup?由于刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡),选择原创 2022-06-17 17:23:16 · 113 阅读 · 0 评论 -
padding的用途
padding的用途:(1)保持边界信息,如果没有加padding的话,输入图片最边缘的像素点信息只会被卷积核操作一次,但是图像中间的像素点会被扫描到很多遍,那么就会在一定程度上降低边界信息的参考程度,但是在加入padding之后,在实际处理过程中就会从新的边界进行操作,就从一定程度上解决了这个问题。(2)可以利用padding对输入尺寸有差异图片进行补齐,使得输入图片尺寸一致。(3)在卷积神经网络的卷积层加入Padding,可以使得卷积层的输入维度和输出维度一致。(4)卷积神经网络的池化层加入Paddin原创 2022-06-17 17:18:52 · 3742 阅读 · 0 评论 -
pytorch中tensor和numpy转化
CPU tensor转GPU tensor:cpu_imgs.cuda()GPU tensor 转CPU tensor:gpu_imgs.cpu()numpy转为CPU tensor:torch.from_numpy( imgs )CPU tensor转为numpy数据:cpu_imgs.numpy()note:GPU tensor不能直接转为numpy数组,必须先转到CPU tensor。如果tensor是标量的话,可以直接使用 item() 函数(只能是标量)将值取出来:print loss_outpu原创 2022-06-15 14:57:29 · 477 阅读 · 0 评论 -
Pytorch:torch.clamp()函数
1 torch.clamp()将输入input张量每个元素的夹紧到区间 [min,max],并返回结果到一个新张量。torch.clamp(input, min, max, out=None) → Tensor操作定义如下:y_i = | x_i, if min原创 2022-06-10 15:34:28 · 606 阅读 · 0 评论 -
Pointnet 论文解读精讲
点云是一个很重要的几何数据形式。但由于他具有无序性(irregular format),所有大部分算法在处理点云时,都将点云变换到顺序的3D 体素(3D voxel)或者投影成图片形式等。但这样一般会导致输入数据变得的稀疏,会产生其他问题。所以在本篇论文中,我们提出了一个算法叫PointNet用来直接对点云进行操作,使用一个神经网络对点云进行语义分割,分类,部分分割等操作。而且本算法还用到置换不变性。以及表述了他在当时最棒的情况。原创 2022-05-23 22:06:47 · 478 阅读 · 0 评论 -
MOTR: End-to-End Multiple-Object Tracking with Transformer 详细解读
一篇MOT领域基于Transformer的工作,是第一个真正严格意义上端到端的多目标跟踪框架,超越了此前的TransTrack和TrackFormer等工作。后续的GTR也借鉴了此算法。原创 2022-05-03 12:02:51 · 4119 阅读 · 0 评论 -
Pytorch 中 model.eval() 和 with torch.no_grad() 的区别
而with torch.no_grad()则主要是用于停止autograd模块的工作,以起到加速和节省显存的作用,具体行为就是停止gradient计算,从而节省了GPU算力和显存,但是并不会影响dropout和batchnorm层的行为。在val模式下,dropout层会让所有的激活单元都通过,而batchnorm层会停止计算和更新mean和var,直接使用在训练阶段已经学出的mean和var值。在PyTorch中进行validation时,会使用model.eval()切换到测试模式,在该模式下,原创 2022-04-01 11:20:50 · 700 阅读 · 0 评论 -
深度学习中的batch的大小对学习效果有何影响?
1)batch数太小,而类别又比较多的时候,真的可能会导致loss函数震荡而不收敛,尤其是在你的网络比较复杂的时候。2)随着batchsize增大,处理相同的数据量的速度越快。3)随着batchsize增大,达到相同精度所需要的epoch数量越来越多。4)由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。5)由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。原创 2022-03-25 17:06:33 · 7453 阅读 · 0 评论 -
epoch iter以及batchsize的关系
(1)当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch。(2)在不能将数据一次性通过神经网络的时候,就需要将数据集分成几个 batch。(3)在一个 epoch 中,batch 数和迭代数是相等的例如:比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。...原创 2022-03-23 16:16:36 · 1655 阅读 · 0 评论 -
学习率与batchsize的关系(batchsize越大,lr越大)
在模型训练过程中,学习率是一个非常敏感且重要的参数,在神经网络的反向传播算法中,梯度下降是一种常用的参数求解方法,学习率影响着梯度下降过程中参数更新的步长。通常,神经网络的参数空间很大,梯度下降的求解目标是最小化定义在参数空间中的损失函数,由于参数维度很大,目标函数一般包含着许多局部最小值点(现有的研究证明,局部极小值已经不是影响神经网络效果的最大障碍了,也即,即使我们找不到全局最小值,一个好的优化算法一般总能找到一个“足够好”的局部极小值)。原创 2022-01-29 16:42:52 · 1758 阅读 · 0 评论 -
error in ms_deformable_col2im_cuda: invalid device function 报错
一句话总结:使用你github上代码的原环境,就会没问题,没什么原因,就是pytorch torchvision cudatoolkit 的版本以及你显卡版本不匹配。同时DCN对不同的pytorch版本支持不同,验证下来,1.4肯定会有问题。1.2肯定没问题。其他高版本,看了网友留言多多少少都有点问题。conda安装cudatoolkitsconda installcudatookit=10.X当然你肯定要先看下和你的NVIDIA版本匹配不,或者说支持不。pytorch 安装https://py原创 2022-01-29 11:13:31 · 5058 阅读 · 0 评论