基于CNN的船只目标检测

基于CNN的船只目标检测

一、目的

完成本学期所学课程《神经网络与深度学习》的课程设计,同时发现CSDN上没找到相关的博文,本来想偷个懒,本着天下文章大家抄的思想糊弄一下这个,最后还是老老实实自己做这个小项目了。
博客最后会以网盘链接的形式给大家分享源码和数据集!!!

二、整体大纲

主要工作内容包括以下几个方面:
1、数据收集与预处理:收集包含船只目标的图像数据集,并进行预处理,包括图像增强、尺寸统一化、数据划分等,为后续的训练和测试做准备。
2、模型设计与训练:基于CNN的船只目标检测模型的设计,包括卷积层、池化层、全连接层等结构的搭建。使用收集到的图像数据集进行模型的训练,通过反向传播算法优化模型参数,使其能够准确地检测船只目标。
3、模型评估与调优:对训练得到的模型进行评估和调优,使用测试数据集进行性能评估,包括准确率、召回率、精确率等指标。根据评估结果对模型进行调优,以提高其检测性能和泛化能力。
4、实验和结果分析:进行实验验证,使用真实的船只图像数据进行目标检测,对检测结果进行分析和评价。通过对比实验和结果分析,评估所提出方法的有效性和优势,并对其应用场景和潜在问题进行讨论。

三、数据集获取

数据集名称:
《shipnet.json》

数据简介:

如上图所示,ship数据集包含4000张图片,每张图片的分辨率为80x80, 其中图片中有船只的有3000张,没有船只的图片有1000张,总大小在455MB左右。
此外为了方便处理,该数据集可转换为json形式,即将每张图片的RGB值以及相关信息的存储。

四、模型搭建

(一)网络结构

模型网络结构
模型网络结构
C1层 (卷积层):
·过滤器数量 (filters): 64
·卷积核大小 (kernel_size): (4, 4)
·填充方式 (padding): ‘Same’
·激活函数 (activation): ‘relu’
·输入形状 (input_shape): (80, 80, 3)
·输出大小: (80, 80, 64)

池化层 (MaxPool2D):
·池化窗口大小 (pool_size): (5, 5)
·默认步幅 (strides): 与池化窗口大小相同
·输出大小: (16, 16, 64)

Dropout层:
·丢弃率 (dropout rate): 0.25
·输出大小: (16, 16, 64)

C2层 (卷积层):
·过滤器数量 (filters): 32
·卷积核大小 (kernel_size): (3, 3)
·填充方式 (padding): ‘Same’
·激活函数 (activation): ‘relu’
·输出大小: (16, 16, 32)

池化层 (MaxPool2D):
·池化窗口大小 (pool_size): (3, 3)
·步幅 (strides): (1, 1)
·输出大小: (14, 14, 32)

Dropout层:
·丢弃率 (dropout rate): 0.25
·输出大小: (14, 14, 32)

C3层 (卷积层):
·过滤器数量 (filters): 16
·卷积核大小 (kernel_size): (2, 2)
·填充方式 (padding): ‘Same’
·激活函数 (activation): ‘relu’
·输出大小: (14, 14, 16)

池化层 (MaxPool2D):
·池化窗口大小 (pool_size): (3, 3)
·步幅 (strides): (1, 1)
·输出大小: (12, 12, 16)

Dropout层:
·丢弃率 (dropout rate): 0.25
·输出大小: (12, 12, 16)

Flatten层:
·用于将多维输入展平为一维向量,12x12x16=2304个神经元

FC1层 (全连接层):
·神经元数量: 200
·激活函数: “relu”
·丢弃率 (dropout rate): 0.5

FC2层 (全连接层):
·神经元数量: 100
·激活函数: “relu”
·丢弃率 (dropout rate): 0.5

FC3层 (全连接层):
·神经元数量: 100
·激活函数: “relu”
·丢弃率 (dropout rate): 0.5

FC4层 (全连接层):
·神经元数量: 50
·激活函数: “relu”
·丢弃率 (dropout rate): 0.5

Softmax层 (全连接层):
·神经元数量: 2
·激活函数: “softmax”

(二)运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
简单分析一下:
实验结果显示模型训练了60次达到了提前停止的条件,模型在训练集上的损失较小,准确率能达到98.92%接近100%,而在验证集上的损失较大,准确率也比训练集低,然而在测试集上的准确率能达到99%。Loss和accuracy可视化图可以看出,loss刚开始的下降幅度很快,然后小范围震荡,最后趋近平稳。
Accuracy最开始能达到70%多。经过短暂的几轮训练可以快速爬升到90%以上,然后速度降低,小幅度波动,最后平稳。训练集与测试集上的loss和accuracy曲线几乎一致。

五、模型优化

模型的优化可以从以下几个方面考虑

(一)优化器

模型优化在优化器选择上参考了吴恩达老师在斯坦福《深度学习》网络在线课程的建议。Adam优化器结合了动量优化和自适应学习率的特性,它在很多深度学习任务中表现出色,并被广泛使用。

(二)损失函数

至于损失函数选择交叉熵损失函数是符合多分类任务需求的,目前还想不到更好的损失函数。

(三)正则化

权重衰减

我给Adam优化器的权重值设为0.9和0.999,当然你可以尝试给它再添加个衰减参数值decay=0.9这样的。

提前停止

实验中我使用了Keras中的EarlyStopping回调函数,用于在训练过程中实现提前停止。指定监测的指标是验证集的损失函数,在连续patience=10轮训练中没有改善就终止进程。

丢弃法(Dropout)

使用Dropout随机丢弃一部分神经元来避免过拟合,当然dropout rate是可以自己定的。

当然还有很多其他的优化方法,我就不再赘述。有兴趣的可以自己去尝试和摸索!

最后,文章写的很简略,但是之后的代码会有很详细的注释。当然最重要的原因是这篇博文并不是设计论文,我也没必要写的非常详细!下面是源码和数据集的链接:

百度网盘链接

提取码:wamt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值