首页 > 编程语言 >机器视觉-使用YoloV8的Python API

机器视觉-使用YoloV8的Python API

时间:2024-02-15 13:55:37浏览次数:57  
标签:settings Python image ultralytics results YoloV8 yaml API path

参考文档:

https://docs.ultralytics.com/modes/predict/#working-with-results
https://zhuanlan.zhihu.com/p/655162922
https://thinkinfi.com/motorcycle-helmet-detection-using-deep-learning/

示例说明

  1. 关于 yolo runtime settings.yaml 对训练过程的干扰
    yolo settings.yaml文件路径为: C:\Users\MY_USER\AppData\Roaming\Ultralytics\settings.yaml, 该文件保存着上次训练时的runtime 设置, 其中有一个 datasets_dir 设置在特定条件下会导致train报错.
    干扰的条件是: 使用Python API训练, 并且data yaml文件中的path变量使用的相对路径.
    报错的信息为: images not found
    修复方式为: 如果 data yaml 中的path变量使用的相对路径, 需要更新yolo settings.yaml中的datasets_dir成我们真实存放图片dataset的父目录, 如果不更新settings.yaml将保留上次训练的图像路径,会导致报 images not found 错误 ; 如果 data yaml 中的path变量使用的绝对路径, 则不需更新yolo settings.yaml中的datasets_dir.
  2. 构建线程安全的predict, 可参考 ultralytics 官方文档 https://docs.ultralytics.com/modes/predict
  3. predict() 返回类型为 Results list , 官方文档写的是 Results, 这一点是错误的.

示例代码

from IPython import display
import ultralytics
from ultralytics import YOLO, settings
from os import path


def train():
    # ==========================
    # 如果 data yaml 中的path变量使用的相对路径, 需要更新yolo settings.yaml中的datasets_dir成我们真实存放图片dataset的父目录, 如果不更新settings.yaml将保留上次训练的图像路径,会导致报 images not found 错误
    # 如果 data yaml 中的path变量使用的绝对路径, 则不需更新yolo settings.yaml中的datasets_dir.
    # yolo settings.yaml文件路径为: C:\Users\MY_USER\AppData\Roaming\Ultralytics\settings.yaml
    # ==========================
    image_path = r'''C:\Users\dorothy\AppData\Roaming\Python\Python311\Scripts\datasets'''
    settings.update({"datasets_dir": image_path})

    # 设置训练data yaml文件
    dataset_yaml = r"C:\Users\dorothy\AppData\Roaming\Python\Python311\site-packages\ultralytics\cfg\datasets\coco8.yaml"

    # 可提前将预训练的olov8n.pt文件下载到本脚本同一目录下,地址 https://github.com/ultralytics/assets/releases
    model = YOLO("yolov8n.pt")

    # 在本脚本同一目录下, 会自动生成 runs 结果目录
    results = model.train(data=dataset_yaml, epochs=2, imgsz=640, device="cpu", batch=8)


def predict():
    model = YOLO(r"D:\my_workspace\source\yolo8\runs\detect\train9\weights\last.pt")
    image_file1 = r"D:\my_workspace\py_code\yolo8\Lib\site-packages\ultralytics\assets\bus.jpg"
    image_file2 = r"D:\my_workspace\py_code\yolo8\Lib\site-packages\ultralytics\assets\zidane.jpg"
    results_list = model.predict(source=[image_file1, image_file2], show=False, save=True, save_conf=True,
                                 save_txt=True)

    for results in results_list:
        boxes = results.boxes
        speed = results.speed
        names = results.names
        json = results.tojson()
        image_path = results.path
        print("====")
        print(image_path)
        print(names)
        print(json)


if __name__ == '__main__':
    display.clear_output()
    ultralytics.checks()
    # train()
    predict()

标签:settings,Python,image,ultralytics,results,YoloV8,yaml,API,path
From: https://www.cnblogs.com/harrychinese/p/18016202

相关文章

  • Python 机器学习 线性回归 正则化线性模型
    ​ Python机器学习中,正则化是一种减少模型过拟合的技术,通过在损失函数中添加一个正则化项来实现。对于线性回归模型,常见的正则化方法有Lasso回归(L1正则化)、岭回归(L2正则化)和弹性网络回归(同时使用L1和L2正则化)。这些方法可以调整模型的复杂度,提高模型的泛化能力。1、欠拟合(Und......
  • 【Python】强化学习Q-Learning走迷宫
    Q-Learning是一种基于值函数的强化学习算法,这里用该算法解决走迷宫问题。算法步骤如下:1.初始化Q表:每个表格对应状态动作的Q值。这里就是一个H*W*4的表,4代表上下左右四个动作。2.选择动作:根据Q表格选择最优动作或者以一定概率随机选择动作。3.执行动作,得到返回奖励(这......
  • Python:处理大数据量文件心得
    --javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown完成大文件按规则拆解。使用python实现将5个多g,总共五千万行数据的csv文件进行按照某个特殊时属性进行拆解。问题难点:文件过大,服务器内存资源不足,需要分块读入内存并处理。之前想着......
  • python基础学习6-第三方模块
    自定义模块优先级大于系统模块模块分为系统模块,自定义模块,第三方模块导入方式import模块名称[as别名]from模块名称import变量/函数/类*包的导入import包名.模块名as别名form包名import模块名as别名form包名.模块名import函数/变量/类*主程序运行i......
  • Python 中 print 函数的用法
    在Python中,可以使用print函数来打印一个变量或者一个字符串:print("MynameisAlice")print(i)如果需要字符串格式化来打印一句话中包含变量的内容,有几种常用的方法:使用格式化字符串(f-string):在字符串前面加上字母"f",然后在字符串中使用大括号{}包裹变量名。示例代码如下:......
  • zookeeper虚拟机使用和java api使用zookeeper案例
    zookeeper动物园管理员中间件,提供协调服务作用于分布式系统,发挥其优势,可以为大数据服务支持java,提供java和c语言的客户端api什么是分布式系统?很多台计算机组成一个整体,一个整体一致对外并且处理同一请求内部的每台计算机都可以相互通信(rest/rpc)客户端到服务端的一次请求到......
  • 3.在NET.API中去使用Nacos
    nuget安装:1.nacos-sdk-csharp1.3.42.nacos-sdk-csharp.AspNetCore1.3.43.nacos-sdk-csharp.Extensions.Configuration1.3.41.新建项目NacosService1,NacosService2,和NacosClient配置NacosService1的appsettings.json,NacosService2也要配哈{"Logging":{&quo......
  • Ubuntu 中通过源码安装 Python3.x 环境
    最近在个人前后端分离项目时候,后端接口程序fastapi,在部署的时候,需要Pyhton3.8以上的环境,但ubuntu默认的是2.7于是想通过源码安装的方式进行环境搭建.下载官网下载二进制源码安装包:https://www.python.org/downloads/source/wegthttps://www.python.org/ftp/......
  • Python--列表
    Python--列表列表是什么列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;在python中使用([])来表示列表,并且使用逗号来分割其中的元素.bicycles=['trek','cannondale','redline','specialized']print(bicycles)#......
  • Python之禅 (Although practicality beats purity.)的理解
    TheZenofPython,byTimPeters摘其中一句谈谈我的理解Althoughpracticalitybeatspurity.实用性有时比理论上的完美更重要。python看起来是不太完美,比如,很长时间都没有编译时的类型检查,开始时候认为这个是语言设计者的一个bug,但后来发现,过早的把精力放到类型上去,对于程......