项目:基于yolov5的舰船检测+pycharm+机器学习+图像检测

项目将深度学习的方法引入海洋目标的检测,利用深度神经网络模型强大的学习能力和模型通用性,来实现准确、可靠和快速的目标自动检测和识别,为海洋领域里不同目标的检测、定位和识别等多种应用需求提供技术支持,她对航海运输、海上搜救等都有实际意义。

· SAR图像特点
· 应用举例:AIS(Automatic Identification System)信息融合、灾害监测、海洋监测、资源勘探、测绘和军事
· 作用:有助于航运交通的目标监测和管理


项目流程与结果
1 工程环境的搭建
首先,安装python3.6,并安装pycharm2019作为python的环境IDE。因为训练神经网络的电脑是win10且没有显卡,所以我们采用CPU模式。
打开Pycharm,打开Project,然后开始安装所缺少的库。由于系统版本的不同,所需要安装的库也略有不同。可以把train.py、detect.py和test.py这几个文件点开,看Pycharm的提示进行安装库。
2 SAR图像的标注与数据集的制作
由于开源的SAR图库和SAR图像船舶标注较少,因此,需要用图像标注软件LabelImg对SAR图像下的舰船进行标注。标注示例如下图所示:
标注舰船时要注意区分海岛和舰船,一般海岛形状不规则,且亮度不均匀;而舰船一般为条状亮点,有行驶尾迹。用LabelImg标注后可以生成记录图片中目标位置信息的文件,可以用来训练自己的YOLO网络模型,使之具有检测SAR图像下舰船特征的能力。
其中,标注后生成的文件存储的是标注物的起点坐标(x,y),目标框宽与高(w,h)等数据。每行代表一个目标,各元素分别是:种类(ship)、4个坐标。标注之后的数据集如下所示:
从数据集下载下来Annotations(标注)、JPEGImages(图片)两个文件夹,将他们复制到YOLOV5工程目录下的data文件夹下,然后将JPEGImages文件夹复制一下,并重命名为images,最后在data下新建两个空文件夹,分别命名为ImageSets和labels,建立工程文件编写代码。
再进行迁移学习,修改cfg文件中网络的结构,主要是yolo层前一层的Conv层的卷积核个数。需要将filters=255改为filters=18,即: anchor个数3x(种类数+bbox4个坐标+bbox信度)。将yolo层的class=80改为class=1,即类数。
修改train.py中main函数的parser参数,主要是yolo.cfg文件位置,rbc.data文件位置,还有epochs、batch size等超参数,直接运行就好了。
测试detect.py,测试图片位置默认在data/images输出在runs/detect/exp文件夹。

在处理图像的基础上我们也可以处理视频,不过在处理时间上有些长。视频处理的原理基础是将视频顺序截取,然后再对图像进行检测。但目前对图像检测的成果还不是十分优秀,我们训练的YOLO v5网络对视频有一定的检测能力,但由于视频清晰度不够,舰船过小,环境过于复杂等原因,对检测有一定阻碍。由于港口SAR视频较少,用以上视频作为示例,证明我们训练的网络可以检测有舰船特性的目标。若想增强视频检测能力可以增加不同环境下的数据集训练,但有可能降低实时性。
在现如今随人们对AI的运用能力大大提高,运用神经网络检测图像已经不是意见很难实现了。但是在未来对神经网络检测图像的发展中仍然有很多需要完善的地方。首先,完善所制作的SAR图像数据集,并将其用来训练YOLO v5模型,使之能识别SAR图像下的舰船特征。其次,优化网络,降低漏检错检概率。


我的视频演示见:【剪辑-哔哩哔哩】 https://b23.tv/N0LsAvc

数据集标注:https://app.roboflow.com/
工程源码:https://github.com/ultralytics/yolov5
(使用上述源码进行二次开发)
使用在线GPU训练模型:https://colab.research.google.com/

项目:基于yolov5的舰船检测+pycharm+机器学习+图像检测相关推荐

  1. 基于YOLOv5的舰船检测与识别系统(Python+清新界面+数据集)

    摘要:基于YOLOv5的舰船检测与识别系统用于识别包括渔船.游轮等多种海上船只类型,检测船舰目标并进行识别计数,以提供海洋船只的自动化监测和管理.本文详细介绍船舰类型识别系统,在介绍算法原理的同时,给 ...

  2. 基于yolov5框架实现人流统计(目标检测算法、目标追踪算法以及越界识别功能)+手机获取统计人数

    主要实现的AI算法有:目标检测.目标追踪 主要实现AI算法功能:越界识别功能(主要是获取统计人流量) 平台:基于Aidlux平台 基础库安装: (1)lap安装: 先sudo apt-get upda ...

  3. 基于YOLOv5+SE注意力+SPD模块的海星检测识别分析系统

    在很多的项目实战中验证分析注意力机制的加入对于模型最终性能的提升发挥着积极正向的作用,在我之前的一些文章里面也做过了一些尝试,这里主要是想基于轻量级的s系列模型来开发构建海底小目标生物海星检测系统,在 ...

  4. 基于yolov5和deepsort的行人车辆的检测、跟踪和计数(课程设计)

    - 实现了行人出入分别计数,沿着图像上下方向检测. - 检测类别:行人.自行车.小汽车.摩托车.公交车.卡车. -支持yolov5s.pt yolov5x.pt yolov5m.pt yolov5l. ...

  5. matlab hough算法车牌识别,一种基于数学形态学和Hough变换的车牌图像检测及定位算法-汽车电子-与非网...

    车牌识别系统(LPR)在现代交通检测和管理部门中发挥着举足轻重的作用.车牌识别系统主要包括车牌定位.字符分割和字符识别三部分[1].由于车牌定位的准确与否将会直接影响到车牌识别的结果,因此,车牌定位是 ...

  6. 基于YOLOv5的输电线路绝缘子缺陷检测项目

    目录 1 项目背景 2 图像数据集介绍 3 模型训练部分 4 模型性能测试 1 项目背景 随着输电网络规模不断增大,输电线路巡检任务日益加重,实现输电 线路的高效率巡检已刻不容缓.传统的巡检技术较为落 ...

  7. 基于Yolov5的草莓病虫害检测识别

    项目介绍 上一篇文章介绍了基于卷积神经网络的交通标志分类识别Python交通标志识别基于卷积神经网络的保姆级教程(Tensorflow),并且最后实现了一个pyqt5的GUI界面,并且还制作了一个简单 ...

  8. 基于YOLOv5的停车位检测系统(清新UI+深度学习+训练数据集)

    摘要:基于YOLOv5的停车位检测系统用于露天停车场车位检测,应用深度学习技术检测停车位是否占用,以辅助停车场对车位进行智能化管理.在介绍算法原理的同时,给出Python的实现代码.训练数据集以及Py ...

  9. 基于Yolov5的交通标志检测识别设计

    项目介绍 上一篇文章介绍了基于卷积神经网络的交通标志分类识别Python交通标志识别基于卷积神经网络的保姆级教程(Tensorflow),并且最后实现了一个pyqt5的GUI界面,并且还制作了一个简单 ...

最新文章

  1. LeetCode - 34. Search for a Range
  2. Android Context activity实例使用
  3. 30张图 讲述真实的人性
  4. matlab中的rem和mod,matlab的rem()和mod()函数
  5. Python引起的混乱解决之道——感悟
  6. php把字符串变为数组_php将字符串转换为数组
  7. qt 保存文件为utf8
  8. 键盘快捷键锁定计算机,用于锁定键盘的键盘快捷键
  9. Lighttpd介绍
  10. 用js写卡牌游戏(四)
  11. VC/MFC 编程经验
  12. JAVA个版本新特性
  13. 前端学习第八弹:制作一个精美书签
  14. 无法调用自己电脑的gpu,即torch.cuda.is_available()返回false
  15. div+css静态网页设计——代码质量好-海贼王(6页) 学生漫画网页设计模板代码 漫画网页制作模板 学生简单动漫网站设计成品
  16. 1.31亿月活的爆款游戏,它的后端架构是怎样的?
  17. QuartusII绑定引脚时出现错误:Error: Can‘t place multiple pins assigned to pin location Pin_108 (IOC_X34_Y2_N0)
  18. 厄米共轭matlab,JuliaStatComputing
  19. 滨州智能dcs系统推荐_几种主流DCS系统对比分析
  20. php session 过期,session过期是什么意思

热门文章

  1. 图像分割之 Geodesic segmentation 和 Graph-Cut
  2. java 排序库_Java数据库排序
  3. 通过ip地址访问其他电脑的共享文件
  4. 编译原理第一章-编译原理概述
  5. oracle-ora 各种sql异常描述
  6. 稳定性全系列(二)——如何做线上全链路压测
  7. strcmpi,stricmp函数
  8. ubuntu更改用户名以及密码
  9. 利用Matlab描述和求解传递函数
  10. 什么是元数据管理?以及该如何做元数据管理呢?