![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度学习
iddd
这个作者很懒,什么都没留下…
展开
-
yolox
yolox正负样本匹配原创 2022-08-23 11:21:51 · 451 阅读 · 1 评论 -
面试--交叉熵损失函数及softmax求导
在介绍交叉熵之前先介绍一些其他的概念。1、信息量:用公式-log(p(x))表示信息量的大小,p(x)表示某事件发生的概率,显然信息量与概率成反比2、信息熵:信息熵表示信息量的期望,期望的计算方法为:事件发生的概率乘以事件发生的信息量的总和,也就是I(X) = -p(x)*log(p(x))3、相对熵(KL散度):KL散度用来表示2个分布之间的差异,其公式为:KL = - p(x) * log( p(x) / q(x) )求和,展开之后就变为了 KL = 交叉熵 - 信息熵4、作用:交叉原创 2021-08-12 23:07:06 · 487 阅读 · 0 评论 -
面试题--小目标问题解决方法
1、数据增强,例如copy-paste2、预测时进行放大预测3、FPN融合不同尺度信息4、设置更小scale、ratio的anchor5、后处理中对于小目标设定较小的阈值6、loss上面选用iou loss及其变体7、loss上面可以给小目标更高的权重...原创 2021-08-12 14:31:07 · 214 阅读 · 0 评论 -
多卡bn怎么做
单卡bn: 不能在训练时只计算一个批次内的样本的均值和方差,然后通过减均值除以方差乘上缩放系数再加上偏移系数;多卡bn:多卡的时候,对于数据并行这种处理方式,如果想要同步bn,因为数据是平均放在多个gpu上面,但是模型又需要所有数据进行nomalize,常规的想法就是,首先各个gpu单独计算该gpu上的数据的均值,然后做一次同步,计算所有该批次内所有数据的全局均值,然后用全局均值去算每张卡对应的方差,然后再做一次同步,得到全局方差;但是这样多次通信会很耗时,所以为解决这个问题,提出来下面的方法:在第一次同原创 2021-08-02 21:46:45 · 681 阅读 · 0 评论 -
pytorch中dataset和dataloader、sampler关系
pytorch的数据加载模块主要包括dataset和dataloader、sampler,可以说是dataloader包含dataset和sampler,sampler用来生成索引,dataloader中默认的是randosampler,dataset根据生成的索引读取数据和标签,在dataset中必须要写进__getitem__、init、__len__这几个方法,__getitem__用来迭代数据,dataloader用来加载数据,其中有collect_fn这个参数,如果数据中只包含img和label就原创 2021-08-02 19:57:37 · 370 阅读 · 0 评论 -
关于crnn中的ctc
图文可以参考crnn就是卷积加lstm加ctc,cnn用于提取特征,lstm用于提取序列特征,ctc用来解决训练时标签对齐问题,假如没有ctc,经过lstm输出的维度为w×n×c,其中w为输入进lstm的特征图宽度,n为batch size,c为类别数,如果直接以softmax输出,我们需要为每一个时刻的序列都标注一个标签,而每一个序列在原图上会对应一个区域,这样我们会为一个图片标注w个标签,我们在标注标签的时候还需要计算每一个序列在原图对应的区域,是相当麻烦的,ctc提出了一种计算方法,引入blank,原创 2021-07-16 15:28:22 · 390 阅读 · 0 评论 -
分布式训练
单GPU训练 vs 多GPU训练单GPU训练 一般代码比较简单,并且能满足我们的基本需求,通常做法是设定变量CUDA_VISIBLE_DEVICES的值为某一块GPU来Mask我们机器上的GPU设备,虽然有时当我们忘了设定该变量时程序会自动占用所有的GPU资源,但如果没有相应的代码去分配掌控GPU资源的使用的话,程序还是只会利用到第一张卡的计算资源,其他的资源则仅是占用浪费状态。多GPU训练 则可以从两个方面提升我们模型训练的上限:超过单卡显存上限的模型大小,更大的Batch Size和更快训练速原创 2021-07-01 19:54:40 · 763 阅读 · 0 评论