https://arxiv.org/pdf/1904.10429.pdf
ImageNet
tiny-imagenet
imgaug library
该论文github:https://github.com/ZohebAbai/Tiny-ImageNetChallenge
文章目录
基于DenseNet网络的思想,从头开始构建了两个截然不同的网络。还使用了一些与图像增强
和循环学习率
相关的非常规技术来提高模型的准确性。
Dataset
Tiny ImageNet dataset
(200个类别) 源于ImageNet dataset
(1000类别),只有200个类别,每个类别有500个训练图像,50个验证图像和50个测试图像,100,000 张训练样本和10,000张验证样本,分辨率为64x64.
DenseNet
Approach
Image Augmentation
针对网络1:
-
我们提供32x32分辨率图像为初始的几个Epoch,然后是64x64分辨率图像。然后我们提供16x16分辨率图像为接下来的几个Epoch,最后是提供64x64分辨率图像。
-
使用imgaug library库,随机使用以下方式图片增强
- Scale
- CoarseDropout
- Rotate
- Additive Gaussian Noise
- Crop and Pad
针对网络2:
1.使用默认的 64x64分辨率的图输入
2.我们使用imgaug库将11个转换的随机序列应用于模型运行开始时的一半数据集。在指定范围内随机确定每个变换的强度,但是手动提供这些范围参数,使得这些变换的训练图像可以紧密地表示验证数据集中的图像
。
- Horizontal Flip
- Vertical Flip
- Gaussian Blur
- Crop and Pad
- Scale
- Translate
- Rotate
- Shear
- Coarse Dropout
- Multiply
- Contrast Normalisation
Regularizers, Optimizers,Hyperparameters and Callbacks
批量标准化有助于在每个批次中标准化前一层的输入,使值保持在均值等于0,标准偏差等于1范围内。这确保了我们的模型的激活不会在任何一个特定点处产生偏差,并且还会增加计算速度。
针对网络1:
- 我们选择了默认学习率为1e-3的默认Adam优化器,它给了我们很好的结果,但每个时期都保持波动。
- 不使用kernel regularizer 也不修改 kernel initializer
- 使用
ReduceLRonPlateau
修改learning rate如果validation loss 停滞了5个epochs
针对网络2:
- Adam optimizer,learning rate=1e-4,epsilon value=1e-8
- L2 kernel regularizer,lambda value=2e-4
- 每个卷积层使用variance scaling kernel initializer
- 使用Cyclical Learning Rate 我们在特定迭代次数的值范围内改变学习率,使用 triangular2 rate policy,每个Epoch将最大学习率减半
- 1e-5 to 6e-5 然后 1e-7 to 6e-7
Results
对于网络1:
- 17.9Million parameters , 235 epochs,batch size 256(32x32,16x16分辨率的图片),batch size 64(64x64分辨率的图片)
- 训练32x32图片15个epochs,切换到64x64图片训练30个epochs,然后训练16x16图片10个epochs,再切换到64x64 为接下来的所有epochs
- 在训练了30个epochs后实施image augmentation,我们对每个图像进行了一些增强,并将我们的模型运行了另外150个时代
对于网络2:
- 11.8 Million parameters , 108 epochs,batch size=128
这两种网络的验证准确度均高于Shallow ConvNets [7]和ResNet-18(无Dropout)模型[9],并且非常接近最先进的ResNet-18(具有各种Dropout技术)模型[10]]。
Error Analysis
3个主要原因:
- 图像的低分辨率,
- 图像中主要实体的误解,
- 类似项目的混淆。
通过正确和错误分类图像的手动检查,我们得出以下详细结论:
-
在正确分类的图像中,我们观察到对象和背景之间存在明显的区别
-
每个最佳分类的图像往往在其自身内共享相同的特征,如颜色,纹理等
-
此外,该模型在检测覆盖整个64x64分辨率且背景最小的对象时表现非常出色。
-
在错误分类的图像中,由于图像的低分辨率,许多图像被错误分类。其中一些甚至对人类来说太难以区分。
-
这里,由于图像中没有太多细节,因此64x64的分辨率较低,模型可以检测到对象的类型(如狗),但无法进一步将其细分为正确的类(如 拉布拉多猎犬和金毛猎犬)。
-
另一种错误分类的图像是由于对图像意图的误解[8]。单个图像中通常有多个实体; 我们的网络正确地解释了这些图像,但没有解释什么是正确的。
-
最后一种错误分类的图像是由于类别彼此太接近的原因,有时甚至彼此之间存在一些重叠。 “敞篷车”被错误分类为“跑车”,但实际上,“敞篷车”的很大一部分也是“跑车”。
在分析了我们的预测之后,我们将正确和错误标记的图像分开并对未正确标记的图像进行过度采样,是正确标记图像的三倍。我们尝试了另一种方法对于低精度类别使用soft weighing。我们期望我们的模型使用这些技术更好地学习错误分类的图像; 然而,我们的模型开始过度拟合,我们发现验证准确性没有提高。