当前位置: 首页 > news >正文

【yolov8系列】ubuntu上yolov8的开启训练的简单记录

前言

yolov8的广泛使用,拉取yolov8源码工程,然后配置环境后直接运行,初步验证自己数据的检测效果,在数据集准备OK的情况下 需要信手拈来,以保证开发过程的高效进行。
本篇博客更注意为了方便自己使用时参考。顺便也记录下ubuntu下的一些简单的常用的操作。

1 ubuntu的相关命令

ubuntu关于账号的操作

  1. 添加删除用户
    sudo adduser XXX       ## 新增用户
    sudo userdel -r XXX    ## 删除用户# 更改用户主目录
    # sudo usermod -d /target_dir/ username
    # sudo chown -R username target_dir/  #将文件夹所有权给该用户# sudo useradd -r -m -s /bin/bash username (-r root)
    # sudo passwd XXXX
    # sudo userdel -r username
    # deluser USER --remove-home --remove-all-files
    
  2. 修改密码
    sudo passwd user
    
  3. 查看所有用户
    grep bash /etc/passwd
    
  4. 添加删除管理员权限
    sudo adduser username sudo
    sudo deluser username sudo
    

ubuntu下磁盘信息查看

  1. 查看硬盘容量
    df -h                              ## 查看硬盘容量
    du -h --max-depth=1         ## 查看当前路径文件夹大小
    
  2. 查看文件夹详细信息
    ls -l
    ls -al
    
  3. 统计文件夹中文件数量
    ls -l | grep "^-" | wc -l
    
  4. 查看显卡占用
    nvidia-smi           # 显示PID
    ps -f -p 26359     # 查询PID
    

2 安装Anaconda

官网上下载不流畅,清华镜像丝滑下载(官方通知不更新 但够使用),链接为
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ mini版本,都能正常使用。

个人选择miniconda安装,下载【Miniconda3-4.7.12-Linux-x86_64.sh】

chmod +x Miniconda3*.sh
bash Miniconda3*.sh1 按 enter 键2 输入yes并enter3 选择路径:enter4 是否添加环境变量: yes5 是否安装Microsoft vs no就行(因为已经安装了vscode和qt,所以这里no就行)
source ~/.bashrc
conda list                   #显示自己已安装包
conda create -n env_name(自己写名字) python=3.7(版本号) # 创建虚拟环境
source activate env_name    #激活虚拟环境
deactivate                 # 退出虚拟环境
conda env list            # 查看已有虚拟环境
conda install# 安装包
conda remove ~         # 卸载包
conda update           # 更新

3 安装VScode

https://blog.csdn.net/magic_ll/article/details/119679279

4 YOLOV8的环境配置与运行

4.1 工程下载与环境配置

工程下载ultralytics 8.0.36。

conda create -n YOLOV8 python=3.8
conda activate YOLOV8
pip install ultralytics==8.0.36
pip list          ## 查看安装列表
## 剩余需要的库,正常安装即可

4.2 demo工程

# import sys
# sys.path.append("./")
from ultralytics import YOLO
# import onnxruntime as ort
import cv2
import os
import globdef demo():### predict===================================# 加载模型test_path = "https://ultralytics.com/images/bus.jpg"outpath = os.path.join(os.getcwd(), "runs/detect")# model = YOLO("yolov8n.yaml")  # 从头开始构建新模型model = YOLO("yolov8n.pt")  # 加载预训练模型(推荐用于训练)# Use the modelresults = model.train(data="coco128.yaml", epochs=3)  # 训练模型results = model.val()  # 在验证集上评估模型性能results = model(test_path)  # 预测图像results = model.predict(test_path, device=0,save=True,show=False,save_txt=True, imgsz=[640,640],save_conf=True, name=outpath, iou=0.5)  ## 预测图像 ## 这里的imgsz为高宽success = model.export(format="onnx")  # 将模型导出为 ONNX 格式demo()

可能报错:运行上述脚本,报错如下,原因是显卡驱动和cuda版本不匹配。
在这里插入图片描述
提高显卡驱动版本或降低pytorch版本即可。这里方便起见,降低pytorch版本与显卡驱动匹配即可。
此时pytorch版本为:torch2.3.0,torchvision0.18.0。重新安装版本torch2.1.1,torchvision0.16.1。


4.3 自己的工程训练

# import sys
# sys.path.append("./")
from ultralytics import YOLO
# import onnxruntime as ort
import cv2
import os
import globdef export_own():model_file = "./yolov8n.pt",print(model_file)model = YOLO(model_file)  # load a pretrained model (recommended for training)pt_path = model.model.pt_pathuse_model = os.path.basename(pt_path)## 通过修改pt_path,从而直接修改转换的onnx的名字,就可以导出不同输入尺寸的onnx模型# model.model.pt_path = pt_path.replace(use_model, f"{use_model[:-3]}_export{use_model[-3:]}")model.export(format='onnx', opset=11, simplify=True, dynamic=False, imgsz=[352,352])def train_own():model_path = "yolov8s.pt"# model_path = os.path.join(os.getcwd(), "runs/detect/yolov8_case23_epoch300/weights/epoch250.pt")savename = os.path.join(os.getcwd(), "runs/detect/yolov8_case24_epoch300")model = YOLO(model_path)  model.train(data="./dataYaml/Object_case19.yaml", device="4,5,6,7", imgsz=352, close_mosaic=50, epochs=300, batch=512, workers=16, save_period=10, name=savename, patience=300,# resume=True ## 是否要继续训练)  if __name__=="__main__":train_own()export_own()

5 端侧模型转换

5.1 RK3566模型转换

rknn-toolkit2-v1.4的环境配置


5.2 SIM9383模型转换

SIM9383 的环境配置

http://www.lryc.cn/news/391992.html

相关文章:

  • Scala学习笔记15: 文件和正则表达式
  • 外卖员面试现状
  • 异步加载与动态加载
  • MUNIK解读ISO26262--什么是DFA
  • 启动spring boot项目停止 提示80端口已经被占用
  • SOLIDWORKS分期许可(订阅形式),降低前期的投入成本!
  • 详细分析Spring Boot 数据源配置的基本知识(附配置)
  • 海思SD3403/SS928V100开发(15)9轴IMU ICM-20948模块SPI接口调试
  • 大力出奇迹:大语言模型的崛起与挑战
  • 【算法 - 哈希表】两数之和
  • 【深度学习】图形模型基础(5):线性回归模型第一部分:认识线性回归模型
  • 2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛B题超详细解题思路+数据预处理问题一代码分享
  • Yarn有哪些功能特点
  • 深度学习算法bert
  • PyTorch - 神经网络基础
  • docker-compose搭建minio对象存储服务器
  • vue3使用pinia中的actions,需要调用接口的话
  • Python酷库之旅-第三方库Pandas(003)
  • 社交电商中的裂变营销利器,二级分销模式,美妆家具成功案例分享
  • 【国产开源可视化引擎Meta2d.js】图层
  • 基于Redisson实现分布式锁
  • Android Studio下载Gradle特别慢,甚至超时,失败。。。解决方法
  • leetcode--二叉树中的最长交错路径
  • c++ primer plus 第15章友,异常和其他:15.1.3 其他友元关系
  • uniapp+vue3页面跳转和传参
  • 硬链接和软链接
  • 属性描述符初探——Vue实现数据劫持的基础
  • 字节也没余粮了?天底下没有永远免费的GPT-4;AI产品用订阅制就不合理!让用户掏钱的N种定价技巧嘿嘿 | ShowMeAI日报
  • 【Matlab 路径优化】基于蚁群算法的XX市旅游景点线路优化系统
  • 我关于Excel使用点滴的笔记