# YOLOv8测试(1)
创始人
2024-06-01 20:33:45
0

YOLOv8测试(1)

  • 1. 训练最简流程
    • 1.1 安装包
    • 1.2 训练demo
    • 1.3 验证
  • 参考文献资料

鉴于网络上的太多教程,都太过繁琐了。其实之前也用过YOLOv2 v3版本,但很久没用,找了一圈教程多少有坑,想想还是自己整理一版吧。花了几天时间仔细看了看,发现还是官网的教程靠谱并且简洁,整理了一个最简快速流程,帮助想要使用目标检测算法的爱好者快速上手项目。


1. 训练最简流程

对于多数用户来说,都是面向边缘端的项目,实际上,日常监测任务也不要求特别高的训练精度,为了能够快速训练,这里选择Github中提到的YOLOv8n模型。

1.1 安装包

pip install ultralytics

在这里插入图片描述

1.2 训练demo

官方给的demo似乎对于Pycharm用户会有小报错,使用那个网页版的jupyter notebook似乎不会,应该就是线程的问题

  • 官方代码
from ultralytics import YOLO# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)# Use the model
results = model.train(data="coco128.yaml", epochs=3)  # train the model
  • 修改的,增加了main函数就行
from ultralytics import YOLO# Load a model
def main():model = YOLO("yolov8n.yaml")  # build a new model from scratchmodel = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)# model.train(data="coco128.yaml", epochs=5)if __name__ == '__main__':main()

1.3 验证

  • 完整代码
from ultralytics import YOLO# Load a model
def main():model = YOLO("yolov8n.yaml")  # build a new model from scratchmodel = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)# model.train(data="coco128.yaml", epochs=5)results = model.val()  # evaluate model performance on the validation setif __name__ == '__main__':main()
  • 日志
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to runs\detect\train9
Starting training for 5 epochs...Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size1/5      5.85G      1.213      1.429      1.258        215        640: 100%|██████████| 8/8 [00:05<00:00,  1.58it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 4/4 [00:36<00:00,  9.12s/it]all        128        929      0.668       0.54      0.624      0.461Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size2/5      6.87G      1.156      1.327      1.243        163        640: 100%|██████████| 8/8 [00:04<00:00,  1.64it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 4/4 [00:35<00:00,  8.91s/it]all        128        929      0.667      0.589      0.651      0.487Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size...
  • 预测结果
    返回的信息也挺全面的,包括Boxes 原始图像 尺寸之类的
results:[{ '_keys': . at 0x0000023FA2FC0350>,'boxes': ultralytics.yolo.engine.results.Boxes
type:  torch.Tensor
shape: torch.Size([6, 6])
dtype: torch.float32
tensor([[2.40000e+01, 2.26000e+02, 8.02000e+02, 7.58000e+02, 8.75480e-01, 5.00000e+00],[4.80000e+01, 3.97000e+02, 2.46000e+02, 9.06000e+02, 8.74487e-01, 0.00000e+00],[6.70000e+02, 3.79000e+02, 8.10000e+02, 8.77000e+02, 8.53311e-01, 0.00000e+00],[2.19000e+02, 4.06000e+02, 3.44000e+02, 8.59000e+02, 8.16101e-01, 0.00000e+00],[0.00000e+00, 2.54000e+02, 3.20000e+01, 3.25000e+02, 4.91605e-01, 1.10000e+01],[0.00000e+00, 5.50000e+02, 6.40000e+01, 8.76000e+02, 3.76493e-01, 0.00000e+00]], device='cuda:0'),'masks': None,'names': { 0: 'person',1: 'bicycle',...79: 'toothbrush'},'orig_img': array([[[122, 148, 172],[120, 146, 170],[125, 153, 177],...,...,[ 99,  89,  95],[ 96,  86,  92],[102,  92,  98]]], dtype=uint8),'orig_shape': (1080, 810),'path': '..\\bus.jpg','probs': None,'speed': {'inference': 30.916452407836914, 'postprocess': 2.992391586303711, 'preprocess': 3.988981246948242}}]
  • 可视化结果
    在这里插入图片描述

小结:

  1. 避免多线程导致的程序报错

错误:This probably means that you are not using fork to start your
child processes and you have forgotten to use the proper idiom
in the main module:

        if __name__ == '__main__':freeze_support()...The "freeze_support()" line can be omitted if the programis not going to be frozen to produce an executable.
  1. 训练注意关闭KX上网工具,否则模型文件可能下载失败
    错误:requests.exceptions.ProxyError: HTTPSConnectionPool(host=‘pypi.org’, port=443): Max retries exceeded with url: /pypi/ultralytics/json (Caused by ProxyError(‘Cannot connect to proxy.’, FileNotFoundError(2, ‘No such file or directory’)))
  2. opencv包报错:具体可参考这篇【2】
    The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support.

参考文献资料

【1】YOLOv8官方Github
【2】https://stackoverflow.com/questions/74035760/opencv-waitkey-throws-assertion-rebuild-the-library-with-windows-gtk-2-x-or

相关内容

热门资讯

安卓系统小额扣款在哪看 你有没有遇到过这种情况:手机里突然少了点零花钱,却不知道是哪个APP偷偷扣了款?别急,今天就来教你怎...
安卓8系统兼容面具吗 你有没有想过,你的安卓8系统手机能不能装上那些酷炫的面具应用呢?这可是个让人心头一紧的问题,毕竟谁不...
安卓手机系统升级流程,从准备到... 你有没有发现,你的安卓手机最近总是时不时地提醒你系统要升级啦?是不是有点小激动,又有点小紧张呢?别急...
51虚拟机安卓系统,功能解析与... 你有没有想过,在手机上也能体验到电脑的强大功能呢?没错,这就是51虚拟机安卓系统的魅力所在!今天,就...
王者安卓苹果互通系统,安卓苹果... 哇,你知道吗?最近在游戏界可是掀起了一股热潮,那就是《王者荣耀》的安卓和苹果互通系统!是不是听起来就...
黑苹果单系统安卓,黑苹果单系统... 亲爱的读者们,你是否曾梦想过拥有一台既能运行Windows系统,又能畅玩安卓应用的电脑呢?今天,就让...
安卓系统怎么开启隐藏键,安卓系... 你有没有发现安卓手机里藏着一些小秘密呢?比如那些隐藏的键,它们就像手机里的宝藏,等着你去发现和开启。...
华为安卓系统开机页面,科技美学... 亲爱的读者,你是否曾好奇过,当你按下华为手机的开机键,那独特的安卓系统开机页面背后隐藏着怎样的故事?...
安卓系统手机号标记,一键识别号... 你有没有发现,现在用安卓系统手机的人越来越多了呢?手机号标记这个功能,简直就是咱们日常生活中的小帮手...
鸿蒙5.0系统和安卓区别,系统... 你知道吗?最近手机圈子里可是炸开了锅,因为华为的新操作系统鸿蒙5.0系统终于发布了!这可是个大新闻,...
安装安卓系统套件的软件,软件应... 你有没有想过,给你的手机换换口味?是的,就是那种从iOS跳到安卓的感觉,是不是听起来就有点小刺激呢?...
安卓系统各组件怎么安装,安卓系... 你有没有想过,安卓系统里那些神奇的组件是怎么安装到你的手机上的呢?是不是觉得这个过程神秘又复杂?别急...
安卓系统cookie设置阻止,... 你有没有发现,在使用安卓手机的时候,有时候网页会偷偷地跟踪你的浏览记录呢?别担心,今天就来教你怎么设...
2023安卓最流畅系统,性能与... 你有没有发现,手机用久了,就像人一样,开始变得“臃肿”起来?尤其是安卓系统,有时候感觉就像一个老态龙...
安卓子系统的终极玩法,终极玩法... 你有没有发现,安卓系统就像一个巨大的宝藏库,里面藏着无数好玩的游戏和实用的应用?今天,就让我带你一起...
安卓系统主题英文名,探索安卓系... 你有没有发现,手机里的世界其实可以变得五彩斑斓?没错,就是那个我们每天离不开的安卓系统,它就像一个巨...
安卓系统怎么调亮屏幕,安卓系统... 手机屏幕暗暗的,是不是觉得看东西都费劲?别急,今天就来教你怎么轻松调亮安卓系统的屏幕亮度,让你的手机...
手机升级安卓系统包,畅享智能生... 亲爱的手机用户们,你是否也和我一样,对手机升级安卓系统包充满了好奇和期待呢?每次手机系统一更新,我们...
新款cs75安卓系统,新款CS... 你有没有听说?最近汽车界可是炸开了锅,因为一款全新的车型——新款CS75,竟然搭载了安卓系统!这可不...
安卓系统送ios皮肤,体验不一... 你知道吗?最近在手机圈里可是掀起了一股热潮呢!那就是——安卓系统送iOS皮肤。是不是听起来有点不可思...