YOLOV9训练自己的数据集

 1.代码下载地址GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

 2.准备自己的数据集

这里数据集我以SAR数据集为例

具体的下载链接如下所示:

链接:https://pan.baidu.com/s/1cIiaOT2hbnQsa8e93cHQrg 
提取码:yyds

3.数据集路径调整

将数据集存放在yolov9的文件夹下面

4.新建data.yaml文件

train:  E:\liqiang\yolov9-main\data\SSDD\train\images  #  训练集绝对路径  进入到训练集存放图片的文件夹里面,按ctrl+L复制过来即可
val: E:\liqiang\yolov9-main\data\SSDD\val\images  # 验证集绝对路径  进入到验证集存放图片的文件夹里面,按ctrl+L复制过来即可
# test: D:\needed\air-filter\train\imagesnc: 1  # class数
names: ['ship']  # 模型类别名

train的路径是训练集下面的images路径

val的路径是验证集下面的images路径

其他的根据自己的数据集进行调整

5.修改yolov9.yaml文件

把nc改为数据集类别即可

6.训练

报错1:

训练如果出现AttributeError: 'list' object has no attribute 'view'报错时,使用tain_dual.py进行训练,不要使用train.py进行训练

AMP: checks passed 
optimizer: SGD(lr=0.01) with parameter groups 230 weight(decay=0.0), 247 weight(decay=0.0005), 245 bias
albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8))
train: Scanning E:\liqiang\yolov9-main\data\SSDD\train\labels.cache... 928 images, 0 backgrounds, 0 corrupt: 100%|██████████| 928/928 00:00
val: Scanning E:\liqiang\yolov9-main\data\SSDD\val\labels.cache... 232 images, 0 backgrounds, 0 corrupt: 100%|██████████| 232/232 00:00
Plotting labels to runs\train\exp10\labels.jpg... 
Image sizes 640 train, 640 val
Using 0 dataloader workers
Logging results to runs\train\exp10
Starting training for 10 epochs...

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
  0%|          | 0/232 00:01
Traceback (most recent call last):
  File "E:\liqiang\yolov9-main\train.py", line 634, in <module>
    main(opt)
  File "E:\liqiang\yolov9-main\train.py", line 528, in main
    train(opt.hyp, opt, device, callbacks)
  File "E:\liqiang\yolov9-main\train.py", line 304, in train
    loss, loss_items = compute_loss(pred, targets.to(device))  # loss scaled by batch_size
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\liqiang\yolov9-main\utils\loss_tal.py", line 168, in __call__
    pred_distri, pred_scores = torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split(
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\liqiang\yolov9-main\utils\loss_tal.py", line 168, in <listcomp>
    pred_distri, pred_scores = torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split(
                                          ^^^^^^^

AttributeError: 'list' object has no attribute 'view'

报错2:

AttributeError: 'FreeTypeFont' object has no attribute 'getsize'

解决:

pip install Pillow==9.5  -i https://pypi.douban.com/simple/

训练命令:

 python .\train_dual.py  --cfg E:\liqiang\yolov9-main\models\detect\yolov9.yaml --data E:\liqiang\yolov9-main\data\data.yaml --device 0 --batch-size 4 --epoch 10 --hyp E:\liqiang\yolov9-main\data\hyps\hyp.scratch-high.yaml

yolov9.yaml绝对路径复制

data.yaml绝对路径复制

hyps绝对路径复制

 

7.推理

python detect.py --weights E:\liqiang\yolov9-main\runs\train\exp11\weights\best.pt  --source E:\liqiang\yolov9-main\data\images\000002.jpg

报错:AttributeError: 'list' object has no attribute 'device'

 解决:

将general.py中的:

    if isinstance(prediction, (list, tuple)):  # YOLO model in validation model, output = (inference_out, loss_out)prediction = prediction[0]  # select only inference outputdevice = prediction.device

 替换为:

    if isinstance(prediction, (list, tuple)):processed_predictions = []  for pred_tensor in prediction:processed_tensor = pred_tensor[0] processed_predictions.append(processed_tensor)  prediction = processed_predictions[0]device = prediction.device

 结果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/282662.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试题小结

一、什么是虚拟dom 描述真实dom的js对象。 二、DOM操作——怎样添加、移除、移动、复制、创建和查找节点 &#xff08;1&#xff09;创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节…

全栈的自我修养 ———— uniapp中加密方法

直接按部就班一步一步来 一、首先创建一个js文件填入AES二、创建加密解密方法三、测试 一、首先创建一个js文件填入AES 直接复制以下内容 /* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wi…

SpringCloud入门(1) Eureka Ribbon Nacos

这里写目录标题 认识微服务SpringCloud 服务拆分和远程调用服务拆分案例实现远程调用 RestTemplate Eureka注册中心Eureka的结构和作用搭建eureka-server服务注册服务发现 Ribbon负载均衡 LoadBalancedLoadBalancerIntercepor源码解析负载均衡策略饥饿加载 Nacos注册中心安装与…

【NLP】从变形金刚到Transfomer 01

Transformer是一种非常强大的模型&#xff0c;在自然语言处理&#xff08;NLP&#xff09;领域里引起了一场革命。 "从变形金刚到技术革命家&#xff0c;Transformer不再仅是儿时屏幕上的英雄。&#x1f916;✨ 在今天的AI领域&#xff0c;它变身成为自然语言处理的超级英…

通过Anaconda安装Python会得到的重要文件夹

E:\Anaconda\路径下 Scripts 文件夹&#xff1a;该文件夹包含了可执行的Python脚本文件&#xff0c;例如pip和conda等命令行工具。【pip3.exe和django-admin.exe等】Lib 文件夹&#xff1a;该文件夹包含了Python的标准库和其他第三方库的源代码文件。【Lib下面的site-packages…

PID算法原理分析及优化

今天为大家介绍一下经典控制算法之一的PID控制方法。PID控制方法从提出至今已有百余年历史&#xff0c;其由于结构简单、易于实现、鲁棒性好、可靠性高等特点&#xff0c;在机电、冶金、机械、化工等行业中应用广泛。 在大学期间&#xff0c;参加的智能汽车竞赛中就使用到了PI…

Word文档密码设置:Python设置、更改及移除Word文档密码

给Word文档设置打开密码是常见的Word文档加密方式。为Word文档设置打开密码后&#xff0c;在打开该文档时&#xff0c;需要输入密码才能预览及编辑&#xff0c;为Word文档中的信息提供了有力的安全保障。如果我们需要对大量的Word文档进行加密、解密处理&#xff0c;Python是一…

Python对象类型判断与函数重载

1. 判断对象类型 通过type函数可以知道对象的类型&#xff0c;示例代码如下&#xff1a; x Hello s type(x) print s x Hello s type(x) print s 2. 函数重载 在写函数时&#xff0c;时常遇到需要应付不同的参数类型以及不同的参数数量的情况。 在C中&#xff0c;通常定义多…

安达发|化工涂料利用APS生产计划排程系统能改善什么问题

化工涂料企业利用APS生产计划排程系统可以改善多个方面的问题&#xff1a; 1. 提高生产效率&#xff1a;APS系统能够根据订单需求和产能状况进行中长期排程&#xff0c;统一协调各分厂或车间的生产活动&#xff0c;从而实现均衡生产&#xff0c;减少因生产计划不合理导致的资源…

Ubuntu 安装 KVM 虚拟化

1. Ubuntu 安装 KVM 虚拟化 KVM 是 Linux 内核中一个基于 hypervisor 的虚拟化模块&#xff0c;它允许用户在 Linux 操作系统上创建和管理虚拟机。 如果机器的CPU不支持硬件虚拟化扩展&#xff0c;是无法使用KVM(基于内核的虚拟机)直接创建和运行虚拟机的。此时最多只能使用…

前端面试拼图-实践经验

摘要&#xff1a;最近&#xff0c;看了下慕课2周刷完n道面试题&#xff0c;记录并添加部分可参考的文档&#xff0c;如下... 1. H5页面如何进行首屏优化&#xff1f; 路由懒加载 适用于SPA&#xff08;不适用MPA&#xff09; 本质就是路由拆分&#xff0c;有限保证首页加载 服…

命令提示符——CMD基础操作介绍

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

LIN通信开发流程,GENy导入LDF文件、使用GENy生成代码

一、使用GENy导入LDF文件&#xff0c;生成LIN代码 Micro是微控器Cpu&#xff0c;Mcs的12代 Derivativ是此微控器的衍生版&#xff0c;选择适合自己的选项。没有的话&#xff0c;我就是默认第一个MCS12X。 Compile没得选&#xff0c;默认。 填写Channel名&#xff0c;选择LDF文…

Android 开发 地图 polygon 显示信息

问题 Android 开发 地图 polygon 显示信息 详细问题 笔者进行Android项目开发&#xff0c;接入高德地图绘制区域后&#xff0c;需要在指定区域&#xff08;位置&#xff09;内显示文本信息&#xff0c;如何实现 实现效果 解决方案 代码 import com.amap.api.maps.model.T…

基于springboot的反诈宣传平台

技术&#xff1a;springbootmysqlvue 一、系统背景 反欺诈平台可以对公交信息进行集中管理&#xff0c;可以真正避免传统管理的缺陷。反欺诈平台是一款运用软件开发技术设计实现的应用系统&#xff0c;在信息处理上可以达到快速的目的&#xff0c;不管是针对数据添加&#xff…

NacosException: http error, code=403、NacosimeException——报错解决方法【Nacos2.x】

1、NacosException报错内容为&#xff1a; NacosException: http error, code403,msguser not found!,dataIdapplication-dev.yml,groupDEFAULT_GROUP,tenant连不上是因为成功开启鉴权后&#xff0c;所使用的Spring Cloud服务被拦截&#xff0c;需要在配置中添加Nacos用户名和…

诺视科技完成亿元Pre-A2轮融资,加速Micro-LED微显示芯片商业化落地

近日&#xff0c;Micro-LED微显示芯片研发商诺视科技&#xff08;苏州&#xff09;有限公司&#xff08;以下简称“诺视科技”&#xff09;宣布完成亿元Pre-A2轮融资&#xff0c;本轮融资由力合资本领投&#xff0c;老股东盛景嘉成、汕韩基金以及九合创投持续加码&#xff0c;这…

Echarts中手柄样式更改

代码&#xff1a; dataZoom: [{start: 0,end: 100,left: 100,bottom: 0,right: 140,backgroundColor: yellow,borderRadius: 15,borderColor: green,dataBackground: {lineStyle: {width: 0},areaStyle: {color: black,opacity: 1,}},selectedDataBackground: {lineStyle: {wi…

校企合作,助力人才培养——黄冈师范学院-唯众 “实习实训基地”揭牌仪式顺利举行

3月20日上午&#xff0c;黄冈师范学院计算机学院院长何中林、教务处实习科科长雷汝琳以及计算机学院实验室主任肖飞一行三人&#xff0c;莅临唯众进行参观交流。唯众总经理冉柏权、销售总监舒敏以及董事长助理代西凯进行了热情接待。双方就如何更好地结合企业需求与学院教育资源…

flink1.18.0报错 an implicit exists from scala.Int => java.lang.Integer, but

完整报错 type mismatch;found : Int(100)required: Object Note: an implicit exists from scala.Int > java.lang.Integer, but methods inherited from Object are rendered ambiguous. This is to avoid a blanket implicit which would convert any scala.Int to a…