前段时间读了不少cv的自监督论文,通过自己的输出加强理解,同时也通过平台将自己的想法展示给大家,方便交流。
论文:Deep Residual Learning for Image Recognition
地址:Deep Residual Learning for Image Recognition
模型层数增加会导致梯度爆炸和梯度消失,解决方法有:1. 初始化的时候进行normalization;2. 中间加入BN。现在存在degration 问题:网络深度(层数)增加,准确率逐步饱和,然后快速degrate(下降);经过分析,导致degration的原因不是由于过拟合,增加更多层会导致更高的训练误差。
论文建立深度残差网络结构: 用浅层学习x,再用深层为 residual 建模,最后直接加在一起。并通过实验证明:1. ResNet 更好优化,原始的stack layers训练误差更大;2. ResNet会从深度增加过程获得更大收益
Residual representation: 图像识别领域有 VLAD模型,Fisher Vector是VLAD的概率模型;偏微分方程领域,Multigrid方法也有广泛的应用。残差表征在这两个领域的使用说明变形和预先处理可以简化优化问题。
此外,Shortcut 的概念在2015年的论文 Highway networks 中就提出了。同时我找了原理部分的译文描述,方便理解。
一图胜千言,理解这张图就能理解 ResNet 的中心思想,接着论文的细节难点便能不攻自破。
Figure 2. 的网络顶部未画出部分是一个普通的浅层网络 H ( x ) H(x) H(x) 用来学 x x x, 新加的层 F ( x ) F(x) F(x) 不是继续学 x x x,而是用来学习误差 H ( x ) − x H(x)-x H(x)−x.
结构的思路来自于VGG网络,卷积层通常是3*3,需要满足下面的设计规则:1. 若输出结果的feature map大小与前面一致,应该有相同数量的filter数 2. 若feature map减半,为保证每一层的时间复杂度,filter 数量应该翻倍。
左图是VGG-19, 右图是 ResNet 具备更少的filter数和更低的复杂度。图中虚线表示维度发生变化。
图片resize:短边是在【256,480】之间的随机数,为什么要随机呢?增加随机性
SGD, minibatch size=256
learning rate 开始=0.1 -> 进入平稳状态后➗10,但现在不怎么用了:需要人守着看 error,不好
BN 在每个卷积之后和激活函数之前使用
没有使用 drop out,没有全链接层
test: 10-crop 裁切测试
1-crop和10-crop顾名思义就是进行1次和10次裁剪。举个例子输入图像是256*256的,网络训练所需图像是 224 ∗ 224 224*224 224∗224 的。1-corp 是从 256 ∗ 256 256*256 256∗256 图像中间位置裁一个. 224 ∗ 224 224*224 224∗224 的图像进行训练,而1 0-corp 是先从中间裁一个 224 ∗ 224 224*224 224∗224 的图像,然后从图像左上角开始,横着数 224 个像素,竖着数 224 个像素开始裁剪,同样的方法在右上,左下,右下各裁剪一次。就得到了5张 224 ∗ 224 224*224 224∗224 的图像,镜像以后再做一遍,总共就有10张图片了。参考链接:知乎
是图像领域刷榜时提高测试精度常用的手段,跟模型集成有点类似,相当于对一张图做10次不同区域的采样,对10次预估的结果做集成(平均)。做十次预测能够降低方差。训练过程也是随机抽取了,现在测试也随机抽取。
ImageNet 验证集上的错误率(模型也是用ImageNet 训练的),可以看出ResNet 整体具有最低的错误率。
初次读自监督系列的文章,见识略浅,还请大家多多指教!
2022.1.19
小姜
上海长宁