最近在搞神经网络中的resnet34模型,用resnet34模型来对图片进行分类,每一类图像都有140张图片,一共三个类,训练集和测试集的比例分别为8:2。* o, I; f& k6 |/ u/ O
首先对图像进行预处理这些操作包括拉普拉斯算法对于图像的增强,并添加随机裁剪(RandomCrop)、随机水平翻转(RandomHorizontalFlip)、转换为张量(ToTensor)和归一化(Normalize)。这些预处理和增强操作可以帮助提高模型的泛化能力和分类性能。其中,随机裁剪和随机水平翻转可以增加训练数据的多样性,有助于模型学习到不同角度和位置的特征。转换为张量将图像数据转换为PyTorch中的张量格式,而归一化操作使各个通道的像素值在0到1之间,有助于加速模型的训练和收敛过程。 创建模型使用resnet-34模型 其中对于模型中各种参数的设置如下 优化器:使用了随机梯度下降(Stochastic Gradient Descent)优化器,在优化器中使用lr参数设置学习率(初始学习率为1e-1),momentum参数设置动量(momentum)的大小,weight_decay参数设定权重衰减(weight decay)的程度。SGD优化器在训练过程中根据梯度来更新模型的参数。 损失函数:使用了交叉熵损失函数,通过计算模型输出与真实标签之间的差异来度量训练中的误差。 学习率:使用了学习率调度器,通过根据验证集上的损失函数的变化动态调整学习率。 在200个epoch的训练之后发现对于木材中裂纹的分类正确率高达100%而对于木材中活节的识别率为0%,全部都识别成了死节。而对于死节的识别结果也并不高识别。结果如下所示:
: n. o0 n% y0 g7 w对于这样的情况,首先应该检查自己的数据集,是否将活结的图片放在了死节标签的文件夹下。发现并没有。其次检查了是否由于分类不均导致,由于各个类别中的分类数量都是相同的,于是也否定了这个想法,数据的样本也都是高质量的,那么为什么会导致这种情况呢。 于是我更换了网络,将resnet 34改为了层数更深的resnet 50来提高性能。更换数据的预处理方式,将图片的预处理的拉普拉斯算法的图像增强修改为白平衡图像增强算法。虽然识别率依旧不高,但总算有所改进,具体结果如下:
: X* t: @' T7 f训练结果为图片,无法上传,详情看附件' F; o+ _/ e" i% w( G3 X" p2 {
0 V" T% N; ~! \7 X' R) @ |