跑跑yolov5吧

跑跑yolov5

如果只是要快速上手训练得到训练结果,我的建议是直接使用b导的代码。别问为什么,问就是我是b导小迷弟!!
但是
b导的代码好像是自己写的,会存在:下载的权重文件是pth,最后得到的文件是pth文件 的问题
因为我想要用来跑自动标注需要的是pt文件,其实可能只是我自己不会转换hhh

基本上可以分为一下四个步骤:环境配置,数据集制作,yolov5文档修改以训练,预测。我主要讲数据集制作,yolov5文档修改。因为踩了比较多的坑hhhh

(1)使用labelimg数据集制作

yolov5不接受xml文档,但是网上很奇怪的就是大部分博主都喜欢“曲线救yolov5”(先制作xml,在转化成txt)

在这里插入图片描述

直接改成yolov5支持的yolo格式他不香嘛!!!

在这里插入图片描述
我只有一个类要训练所以我干脆就直接开了这些!!!

①Auto SAVE Mode:不开这个每次都得按s保存,不然就会有弹窗提醒
但是开这个也是有风险的,可能会出现手速过快跳了一张两张图片(不要问我怎么知道的的)
②Single Class Mode:因为我只有一个类,使用这个就不用去选

后面我如果还记得的话我就写一个检查标签少标注的脚本吧hhhhh
在这里插入图片描述

③Display Label:展示标签名字
这个的好处是如果不是眼瞎的话,大概率可以避免重复标注!!

(2)yolov5文档修改

先说一下新创建的文件夹结构

在这里插入图片描述

修改yaml文件

因为我懒,所以我没有重新创建yaml文件,我是直接在data/coco128.yaml文件夹中修改的
在这里插入图片描述

  1. 改路径(文件路径,训练集路径,val路径)
    直接pycharm选定文件夹右键copy path–>absolute path,绝对路径不容易报错
  2. 改nc(标签数量),name(标签名字)

修改train文件

定位到parse_opt,只讲修改的文件(错了再说)

  1. 改pt (绝对路径不容易报错)
 parser.add_argument('--weights', type=str, default=ROOT / 'D:/computervision/deep_learning_model/yolov5-6.1/yolov5s.pt', help='initial weights path')

  1. –data
parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')
  1. –epochs
    我训练的数据集比较小,–epochs一定一定要放小,不然容易过拟合
parser.add_argument('--epochs', type=int, default=100)

跑yolov5又出了什么错

随口提一嘴:真的很讨厌红色提示和报错一个shai!!!

(1)错误报告1:TensorBoard logging requires TensorBoard version 1.15 or above

实际上我的版本我是超过2.6,估计是另一个依赖包出了问题

  1. 先检查有没有下载tensorboard
    在环境中输入下面这条命令,检查有没有tensorboard
conda list
  1. 如果版本已经超过1.15,那就来这个网址下
    或者是直接在命令行下
pip install tb-nightly==2.8.0a20220120

到这里我基本上基本上就ok了

(2)错误报告2:AssertionError: No images found in ×××××

这个错误就放的有点蠢,我是将标签的文件夹放到了“val"后面,然后就就显示没有找到图片
在这里插入图片描述

留个小问题:yolo怎么得到标签文件?

检查一下yolov5的训练结果吧

我提前终止了所以我的文件会比别家的少。
在这里插入图片描述

从下往上看:

  1. 三张训练结果图
  2. result.csv
    从左到右第一行依次是①epoch,
    ②train/box_loss,③train/obj_loss,④train/cls_loss,
    ⑤metrics/precision,⑥metrics/recall,⑦metrics/mAP_0.5,⑧metrics/mAP_0.5:0.95,
    ⑨val/box_loss,⑩val/obj_loss, ①①val/cls_loss,
    ①②x/lr0,①③x/lr1,①④x/lr2
    在这里插入图片描述

(1)train:训练集;val:验证集
(2) cls_loss用于监督类别分类,box_loss用于监督检测框的回归,obj_loss用于监督grid中是否存在物体。(可以看看这个博主的讲的比较细)
(3)!!!!!主要看这个!!!!!
mAP_0.5 : IoU设为0.5时,计算每一类的所有图片的AP,然后所有类别求平均,即mAP
mAP_0.5:0.95 : 表示在不同IoU阈值(从0.5到0.95步长0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP。

  1. opt.yaml
    配置文件没啥好说的
    在这里插入图片描述
  2. hyp.yaml
    估计是超参数
    在这里插入图片描述
  3. 还有就是权重文件了

看到一篇博文对于train参数讲的很好就想记录一下
(1)“–image-weights
是否启用加权图像策略,默认是不开启的;主要是为了解决样本不平衡问题;开启后会对于上一轮训练效果不好的图片,在下一轮中增加一些权重;

(2)“–label-smoothing
是否对标签进行平滑处理,默认是不启用的;

在训练样本中,我们并不能保证所有sample都标注正确,如果某个样本标注错误,就可能产生负面印象,如果我们有办法“告诉”模型,样本的标签不一定正确,那么训练出来的模型对于少量的样本错误就会有“免疫力”采用随机化的标签作为训练数据时,损失函数有1-ε的概率与上面的式子相同,比如说告诉模型只有0.95概率是那个标签。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
跑跑卡丁车游戏是一款3D赛车游戏,实现起来比较复杂,需要使用到一些游戏引擎和图形库。以下提供一种基于Pygame实现的简单跑跑卡丁车游戏的实现方法。 首先,需要安装Pygame库,可以使用以下命令进行安装: ``` pip install pygame ``` 接下来,创建一个Python文件,导入Pygame库并初始化: ```python import pygame pygame.init() ``` 然后,设置窗口大小和标题: ```python WINDOW_WIDTH = 800 WINDOW_HEIGHT = 600 window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption('跑跑卡丁车') ``` 接下来,加载游戏资源,包括赛道、卡丁车、音效等: ```python track_image = pygame.image.load('track.png').convert_alpha() car_image = pygame.image.load('car.png').convert_alpha() engine_sound = pygame.mixer.Sound('engine.wav') ``` 然后,定义一些常量,如卡丁车速度、转向角度等: ```python CAR_SPEED = 5 CAR_TURN_ANGLE = 5 ``` 接下来,创建一个Car类表示卡丁车,并实现它的移动和绘制方法: ```python class Car: def __init__(self, x, y, image): self.x = x self.y = y self.image = image def move(self, dx, dy): self.x += dx self.y += dy def draw(self, surface): surface.blit(self.image, (self.x, self.y)) ``` 然后,创建一个Track类表示赛道,并实现它的绘制方法: ```python class Track: def __init__(self, image): self.image = image self.x = 0 self.y = 0 def draw(self, surface): surface.blit(self.image, (self.x, self.y)) ``` 接下来,定义游戏循环,包括事件处理、卡丁车移动和绘制、赛道绘制等: ```python clock = pygame.time.Clock() car = Car(400, 300, car_image) track = Track(track_image) engine_sound.play() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() keys = pygame.key.get_pressed() if keys[pygame.K_UP]: car.move(0, -CAR_SPEED) if keys[pygame.K_DOWN]: car.move(0, CAR_SPEED) if keys[pygame.K_LEFT]: car.move(-CAR_SPEED, 0) if keys[pygame.K_RIGHT]: car.move(CAR_SPEED, 0) window.fill((255, 255, 255)) track.draw(window) car.draw(window) pygame.display.update() clock.tick(60) ``` 最后,运行程序,即可看到简单的跑跑卡丁车游戏。 这只是一个简单的实现方法,如果要实现更复杂的跑跑卡丁车游戏,需要使用到更多的游戏引擎和图形库,并进行更多的开发工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值