4月份实现了YOLO_v1算法,学习新的模型ResNet/GoogLeNet/SqueezeNet/DenseNet/SSD,同时小结了评估标准,包括mAP/Flops/Params Size/FPS/Top-k accuracy

本周学习了如何寻找最优学习率/权重衰减,以及进行warmup+CosineAnnearling加速模型训练,同时加强了数据预处理,包括随机擦除/颜色抖动/Ten Crops测试等

本周继续SSD算法的学习和实现,同时开始新模型和训练方法的学习。本月期待完成新工作的寻找

阅读全文 »

定义

在分类任务中,通常使用交叉熵损失进行梯度训练。交叉熵损失的作用就是最大化正确标签的对数似然概率。其损失值计算如下:

\[ H(y, p) =-1\times \sum_{k=1}^{K} y_{k}log(p_{k}) \]

\(y_{k}\)属于正确类时\(=1\),否则\(=0\)。这会导致两个问题:

  1. 它可能会导致过度拟合:如果模型学会为每个训练示例分配全部概率给真值标签,它就不能保证泛化效果
  2. 它鼓励最大logit和所有其他logit之间的差异变大,这与有界梯度\(\frac {∂l}{∂z_{k}}\)相结合,降低了模型的迁移能力

标签平滑正则化的目的是防止最大逻辑变得比所有其他逻辑大得多。其实现方式:在交叉熵损失中加入一个独立于训练样本的基于标签的分布\(u(k)\)

\[ y(k) = (1 - \epsilon)δ_{k,y} + \epsilon u(k) \]

  • \(k\)表示标签数
  • \(\epsilon\)表示平滑参数
  • $δ_{k,y} \(表示标签为\)y$的训练样本

从实现上看,LSR鼓励神经网络选择正确的类,并且正确类和其余错误类之间的差别是一致的。这样能够鼓励梯度向正确类靠近的同时远离错误类

在论文中将\(u(k)\)设置为均匀分布\(u(k) = 1/K\),所以

\[ y(k) = (1 - \epsilon)δ_{k,y} + \frac {\epsilon}{K} \]

\(\epsilon可设置为0.1\)

阅读全文 »

对于目标检测算法而言,mAP(mean average precision)是最常用的评价指标了。关于如何计算mAP,不同的数据集提供了不同的实现方式,其中最常用的就是PASCAL VOC数据集的mAP计算,网上有很多相关的资料,看了很多还是感觉不理解,所以打算好好记录一下

相关实现:zjykzj/vocdev

阅读全文 »