基于CNN的海面舰船图像二分类

1.模型依赖的环境与硬件配置

  1. cuda:1.8.1+cu111
  2. GPU: NVIDIA GeForce MX150

2.VGG11的网络架构模型细节

  1. input: 80 × 80 × 3 80\times80\times3 80×80×3

  2. VGG11:

    所有卷积层、FC1、FC2后都有batch normalization层和ReLU激活函数

    且FC1、FC2后都有Dropout层,保留0.5的神经元

输出
conv3-64 80 × 80 × 64 80\times80\times64 80×80×64
maxpool 2 × 2 + 2 ( s ) 2\times2+2(s) 2×2+2(s) 40 × 40 × 64 40\times40\times64 40×40×64
conv3-128 40 × 40 × 128 40\times40\times128 40×40×128
maxpool 2 × 2 + 2 ( s ) 2\times2+2(s) 2×2+2(s) 20 × 20 × 128 20\times20\times128 20×20×128
conv3-256 20 × 20 × 256 20\times20\times256 20×20×256
conv3-256 20 × 20 × 256 20\times20\times256 20×20×256
maxpool 2 × 2 + 2 ( s ) 2\times2+2(s) 2×2+2(s) 10 × 10 × 256 10\times10\times256 10×10×256
conv3-512 10 × 10 × 512 10\times10\times512 10×10×512
conv3-512 10 × 10 × 512 10\times10\times512 10×10×512
maxpool 2 × 2 + 2 ( s ) 2\times2+2(s) 2×2+2(s) 5 × 5 × 512 5\times5\times512 5×5×512
conv3-512 5 × 5 × 512 5\times5\times512 5×5×512
conv3-512 5 × 5 × 512 5\times5\times512 5×5×512
maxpool 2 × 2 + 2 ( s ) 2\times2+2(s) 2×2+2(s) 2 × 2 × 512 2\times2\times512 2×2×512
FC1-2048 2048 × 1 2048\times1 2048×1
FC2-2048 2048 × 1 2048\times1 2048×1
FC3-2 2 × 1 2\times1 2×1

3.实验结果

本节给出基于VGG11的卷积神经网络分类模型对海面舰船数据的二分类结果。

3.1网络模型参数

3.1.1通用参数
总样本数训练样本Batch sizeIterationEpoch
4000(sea : ship=3:1)2400(60%)803015
3.2.2 调整参数
模型序号N1N2N3
学习率 1 e − 2 1e-2 1e2 { 1 e − 2 , e p o c h < = 5 1 e − 4 , 5 < e p o c h < = 10 1 e − 6 , 10 < e p o c h < = 15 \begin{cases} 1e-2,epoch<=5\\ 1e-4,5<epoch<=10\\ 1e-6,10<epoch<=15 \end{cases} 1e2,epoch<=51e4,5<epoch<=101e6,10<epoch<=15同N1
优化器AdamAdammomentum(0.9)

3.2 损失函数随epoch变化曲线

3.2.1 N1

在这里插入图片描述

在这里插入图片描述

​ 如图所示,N1在epoch>3(iteration>90)时,loss开始在0.1振荡,且没有明显的下降趋势。在epoch>10时,loss降到e-2量级

​ 且error_rate不稳定,波动大。

3.2.2 N2

所以,N2在epoch>5时,学习率调小为1e-4; epoch>10,学习率调小为1e-6

在这里插入图片描述

在这里插入图片描述

如图所示,在 e p o c h > 5 ( i t e r a t i o n > 150 , l r = 1 e − 4 ) epoch>5(iteration>150,lr=1e-4) epoch>5(iteration>150,lr=1e4)时, l o s s loss loss有下降的趋势,从e-1量级到e-2量级。 e p o c h > 10 ( i t e r a t i o n > 300 , l r = 2 e − 7 ) epoch>10(iteration>300,lr=2e-7) epoch>10(iteration>300,lr=2e7)时, l o s s loss loss能到达e-3量级,基本在e-2量级。

​ 但error_rate随着learning rate减小趋于稳定值,1.8125%。

3.2.3 N3

在这里插入图片描述

在这里插入图片描述

​ 如图所示,误差的量级能够下降并基本保持到e-3,比N2性能更好。且error_rate更稳定。

3.3分类模型对海面舰船的二分类结果

模型序号训练精度(error %)
N12.8125
N21.8125
N30.8125

4.实验总结

  1. 可以使用下方代码,生成网络模块。简化代码。

    self.   =nn.Sequential()
    
  2. 使用GPU:(data、label也需要放到GPU上)

net.cuda( )#需要放在optimizer之前
  1. 误差计算公式

    nn.CrossEntropyLoss()
    

    公式:

    l o s s ( x , c l a s s ) = − l o g ( x c l a s s ∑ j e x j ) loss(x,class)=-log(\frac{x_{class}}{\sum_j{e^{x_j}}}) loss(x,class)=log(jexjxclass)

    交叉熵损失函数,用于多分类, x x x是没有经过Softmax的激活值。

  2. 参数更新:

    optim.Adam(net.parameters(),lr=2e-3) #lr :学习率 
    
  3. 梯度计算:

    loss.backward()
    
  4. 虽然 SGD–改良---->Momentum–升级–>RMSprop–升级–>Adam,但Adam性能不一定比Momentum好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值