Hello,大家好,我是augustqi。今天给大家分享的目标检测项目是:基于yolov5海上船舶目标检测(附代码和数据集)
Part1 前言
传统的海上目标检测是通过雷达来实现,但是随着技术的发展,各种隐形涂料的船舰层出不穷,通过雷达进行目标探测受到了很大的限制。基于深度学习的目标检测方法,可以和雷达探测方法进行结合,从而实现更精准的目标识别。
Part 2 准备环节
2.1 软硬件
一个完整的项目,离不开软硬件的支持,本次项目核心配置如下:
内容 | 详情 |
系统 | Ubuntu 20.04 |
显卡 | Tesla P100 |
CUDA版本 | 11.2 |
CUDNN版本 | 8.1.1 |
torch版本 | 1.8.1 |
2.2 数据集
本次项目使用的数据集总体情况:
类型 | 数量 |
图片 | 7000 |
xml | 7000 |
数据集中包含的类别以及每类的数量:
类别 | 目标数量 |
ore carrier | 2199 |
passenger ship | 474 |
container ship | 901 |
bulk cargo carrier | 1952 |
general cargo ship | 1505 |
fishing boat | 2199 |
使用labelimg或者其他标注工具查看数据:
编辑
将数据集划分为训练集和验证集:
编辑
将7000张图片放在VOCdevkit/VOC2007/JPEGImages目录下,将7000张xml文件放在VOCdevkit/VOC2007/Annotations目录下,使用脚本代码划分得到训练集5600张,验证集1400张,其中images和labels文件夹是运行脚本代码自动生成的。获取划分数据集的脚本代码prepare_train_val.py:
https://blog.csdn.net/AugustMe/article/details/127320880
Part 3 训练模型
代码结构如下:
编辑
文件 | 功能 |
data | 数据集配置 |
models | 模型配置 |
runs | 存放训练结果 |
utils | 存放工具类函数 |
VOCdevkit | 存放数据集 |
weights | 存放预训练权重 |
detect.py | 检测脚本 |
train.py | 训练脚本 |
export.py | 模型转换脚本 |
val.py | 验证脚本 |
prepare_train_val.py | 划分数据集的脚本 |
hubconf.py | pytorch hub相关代码 |
requirements.txt | 存放项目依赖库的版本信息 |
本次项目使用yolov5训练一个海上船舶检测模型,yolov5代码的下载和环境配置请看微信公众号AIexplore之前发布的文章。
3.1 数据集配置
3.2 模型配置
Part 4 测试模型
使用detect.py加载训练好的模型,对验证集上的图片进行测试,这里放一部分验证集上的检测结果:
编辑
Part 5 结果分析
本项目使用yolov5训练了一个海上船舶目标检测模型,在2块Tesla P100显卡下训练了300 epoch,训练集和验证集上损失、精确率、召回率、mAP的变化图:
编辑
验证集上PR曲线:
编辑
Part 6 完整项目获取
https://blog.csdn.net/AugustMe/article/details/128111977
参考资料
[1]https://blog.csdn.net/AugustMe/article/details/127529441
[2]https://blog.csdn.net/AugustMe/article/details/127368318
[3]https://blog.csdn.net/AugustMe/article/details/127653996
[4]https://blog.csdn.net/See_Star/article/details/105820181