东城做企业网站多少钱,选择合肥网站建设,砚山县住房和城乡建设局网站,太原论坛这一部分内容主要介绍如何使用YOLOv8训练自己的数据集#xff0c;并进行验证、预测及导出#xff0c;采用代码和指令的两种方式#xff0c;参考自官方文档#xff1a;Detect - Ultralytics YOLOv8 Docs。实践篇不需要关注原理#xff0c;只需要把流程跑通就行#xff0c;… 这一部分内容主要介绍如何使用YOLOv8训练自己的数据集并进行验证、预测及导出采用代码和指令的两种方式参考自官方文档Detect - Ultralytics YOLOv8 Docs。实践篇不需要关注原理只需要把流程跑通就行所有的疑惑会在原理篇进行解释。
1.数据准备
1.1划分训练集和验证集 数据准备就是把标注好的数据按照一定的比例划分成训练集和验证集并且将训练集和验证集按照YOLO的格式来存放方便训练的时候读取数据如下图所示train训练集中包含有images和labels两个文件夹val验证集中包含有images和labels两个文件夹。 下面是随机划分训练集和验证集的脚本代码只需要填充好image_dir、label_dir标注好的图片和标签路径train_image_dir、train_label_dir、val_image_dir、val_label_dir生成训练集、验证集的图片和标签路径还可以自己调整train_val_split的值来调整训练集和验证集的划分比例。 随机划分训练集和验证集import os
import random
from shutil import copyfile# 输入路径
image_dir rG:\yolov8\data\images # 替换成你的图像文件夹路径
label_dir rG:\yolov8\data\label # 替换成你的标签文件夹路径# 输出路径
train_image_dir rG:\yolov8\ultralytics-main\ultralytics-main\my_data\detection\train\images
train_label_dir rG:\yolov8\ultralytics-main\ultralytics-main\my_data\detection\train\labels
val_image_dir rG:\yolov8\ultralytics-main\ultralytics-main\my_data\detection\val\images
val_label_dir rG:\yolov8\ultralytics-main\ultralytics-main\my_data\detection\val\labels# 创建输出文件夹
os.makedirs(train_image_dir, exist_okTrue)
os.makedirs(train_label_dir, exist_okTrue)
os.makedirs(val_image_dir, exist_okTrue)
os.makedirs(val_label_dir, exist_okTrue)# 划分数据集的比例
train_val_split 0.8# 获取图像文件列表
image_files os.listdir(image_dir)
random.shuffle(image_files)# 计算划分的索引
split_index int(len(image_files) * train_val_split)# 划分训练集和验证集
train_image_files image_files[:split_index]
val_image_files image_files[split_index:]# 复制图像文件并相应地复制标签文件
def copy_images_and_labels(image_files, source_image_dir, source_label_dir, dest_image_dir, dest_label_dir):
for image_file in image_files:
# 复制图像文件
source_image_path os.path.join(source_image_dir, image_file)
dest_image_path os.path.join(dest_image_dir, image_file)
copyfile(source_image_path, dest_image_path)# 复制对应的标签文件
label_file os.path.splitext(image_file)[0] .txt
source_label_path os.path.join(source_label_dir, label_file)
dest_label_path os.path.join(dest_label_dir, label_file)
copyfile(source_label_path, dest_label_path)# 复制训练集图像和标签
copy_images_and_labels(train_image_files, image_dir, label_dir, train_image_dir, train_label_dir)# 复制验证集图像和标签
copy_images_and_labels(val_image_files, image_dir, label_dir, val_image_dir, val_label_dir)1.2 配置data.yaml文件 然后再配置下数据的yaml文件就行这个文件应该填充在ultralytics-main\ultralytics\cfg\datasets路径下新建一个yaml文件命名为my_detect.yaml填充以下信息意思就是在加载这个yaml文件的时候能根据里面的内容找到数据的。Path即由上面代码生成的YOLO格式的路径name为类别的下标及名称。
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: G:\yolov8\ultralytics-main\ultralytics-main\my_data\detection # dataset root dir
train: train # train images (relative to path) 128 images
val: val# val images (relative to path) 128 images
test: # test images (optional)# Classes
names:0: person1: surfboard2.YOLOv8训练
2.1代码训练 终于要开始训练了加载数据有数据的yaml文件加载模型当然也会有模型的yaml其路径在ultralytics-main\ultralytics\cfg\models\v8\yolov8.yaml而yolov8.yaml文件只需要修改类别数即nc的值就行如下所示 接下来就可以开始训练了YOLOv8推出了两种训练的方法一种是使用脚本一种是使用命令的方法使用脚本进行训练的话比较容易Debug下面是脚本的训练代码需要注意四个点第一是预训练权重要放在项目路径下即\ultralytics-main下面不然在训练的时候会自动下载预训练权重的有点麻烦第二就是在设置模型规模n,s,m,l,x的时候直接通过Model_yaml参数来设置model_yamlrG:\yolov8\ultralytics-main\ultralytics\cfg\models\v8\yolov8n.yaml,虽然该路径下没有yolov8n.yaml文件但是V8可以识别出来选择的模型类型;第三就是要在if __name__’’__main__’’:下执行第四就是调小workers不然可能会报错。
from ultralytics import YOLOif __name____main__:# Load a modelmodel_yamlrG:\yolov8\ultralytics-main\ultralytics-main\ultralytics\cfg\models\v8\yolov8n.yamldata_yamlrG:\yolov8\ultralytics-main\ultralytics-main\ultralytics\cfg\datasets\my_detect.yamlpre_modelrG:\yolov8\ultralytics-main\ultralytics-main\yolov8n.ptmodel YOLO(model_yaml,taskdetect).load(pre_model) # build from YAML and transfer weights# Train the modelresults model.train(datadata_yaml, epochs15, imgsz640,batch4,workers2)下面已经开始训练了。 此外还有其他参数可以在\ultralytics-main\ultralytics\cfg\default.yaml进行设置里面有很多参数可以进行调整可以参考官方文档进行调整Configuration - Ultralytics YOLOv8 Docs. 2.2指令训练 直接在控制面板输入指令就行填写的超参数和代码训练的一样就行。
yolo detect train
dataG:\yolov8\ultralytics-main\ultralytics-main\ultralytics\cfg\datasets\my_detect.yaml
modelG:\yolov8\ultralytics-main\ultralytics-main\ultralytics\cfg\models\v8\yolov8n.yaml pretrainedG:\yolov8\ultralytics-main\ultralytics-main\yolov8n.pt
epochs15
imgsz640
batch4
workers22.3训练评价指标 在runs/train下可以看到训练过程的评估指标变化如result.png中展示了YOLOv8在训练和验证的过程中三个损失的变化以及precision、recall、mAP50这些值的变化由这些数据可以看到模型是逐渐收敛的。 训练好的模型也会放在对应的weight文件夹下会保存有最新的权重以及最好的权重。 3.YOLOv8验证
3.1代码验证 验证其实是加载验证集然后使用best.pt进行推理得到的各项指标数据如下所示。
from ultralytics import YOLOif __name____main__:# Load a modelpth_pathrG:\yolov8\ultralytics-main\ultralytics-main\runs\detect\train17\weights\best.ptmodel YOLO(yolov8n.pt) # load an official modelmodel YOLO(pth_path) # load a custom model# Validate the modelmetrics model.val() # no arguments needed, dataset and settings rememberedmetrics.box.map # map50-95metrics.box.map50 # map50metrics.box.map75 # map75metrics.box.maps # a list contains map50-95 of each category下图是输出的结果可以看到这里加载的是train训练集其实是因为我在配置data.yaml中填错了这里我就不重新跑结果了大家知道是加载验证集在配置data.yaml中val: val中的路径文件就行了。 3.2指令验证 这一块没啥好说的直接贴指令了。
yolo detect val
modelG:\yolov8\ultralytics-main\ultralytics-main\runs\detect\train17\weights\best.pt
dataG:\yolov8\ultralytics-main\ultralytics-main\ultralytics\cfg\datasets\my_detect.yaml4.YOLOv8预测
4.1代码预测 对图片进行预测并保存结果可以先准备一张图片或者把图片放进一个文件夹中然后使用以下代码进行预测可以看到预测结果保存的地址注意这里预测的时候并不是640*640尺度进行预测后面在预测原理章节会详细介绍
from ultralytics import YOLOif __name____main__:pth_pathrG:\yolov8\ultralytics-main\ultralytics-main\runs\detect\train17\weights\best.pttest_pathrG:\yolov8\ultralytics-main\ultralytics-main\detect_test# Load a modelmodel YOLO(yolov8n.pt) # load an official modelmodel YOLO(pth_path) # load a custom model# Predict with the modelresults model(test_path,saveTrueconf0.5) # predict on an image由预测结果可知其实模型训练的效果还不是很好模型还有很大的优化空间的。 4.2指令预测 指令如下
yolo detect predict
modelG:\yolov8\ultralytics-main\ultralytics-main\runs\detect\train17\weights\best.pt sourceG:\yolov8\ultralytics-main\ultralytics-main\detect_test
saveTrue
conf0.55.YOLOv8导出
5.1代码导出 注意导出onnx模型时候需要设置opset11不然导出模型可能会报错或者会出现警告。此外最好设置动态导出onnx这样模型的输入就不会仅限制在640*640而可以是任意batch_size还有任意尺寸的图片了并且可以同时预测batch_size张图片。
from ultralytics import YOLOif __name____main__:pth_pathrG:\yolov8\ultralytics-main\ultralytics-main\runs\detect\train17\weights\best.pt# Load a modelmodel YOLO(yolov8n.pt) # load an official modelmodel YOLO(pth_path) # load a custom trained model# Export the modelmodel.export(formatonnx,opset11,dynamicTrue)使用netron可视化onnx模型如下所示。可以和静态导出相比较动态导出更加具有灵活性输入的图片尺寸(height,width)或者输入图片的个数batch将不受限制。 动态导出onnx 静态导出onnx 5.2指令导出 指令如下
yolo export
modelG:\yolov8\ultralytics-main\ultralytics-main\runs\detect\train17\weights\best.pt
formatonnx
opset11
dynamicTrue 文章转载自: http://www.morning.tntbs.cn.gov.cn.tntbs.cn http://www.morning.rswtz.cn.gov.cn.rswtz.cn http://www.morning.spfh.cn.gov.cn.spfh.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.rhfh.cn.gov.cn.rhfh.cn http://www.morning.rqjxc.cn.gov.cn.rqjxc.cn http://www.morning.hqwtm.cn.gov.cn.hqwtm.cn http://www.morning.mbmtn.cn.gov.cn.mbmtn.cn http://www.morning.rbgqn.cn.gov.cn.rbgqn.cn http://www.morning.zdhxm.com.gov.cn.zdhxm.com http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.nlgnk.cn.gov.cn.nlgnk.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.jmllh.cn.gov.cn.jmllh.cn http://www.morning.kngqd.cn.gov.cn.kngqd.cn http://www.morning.hhqtq.cn.gov.cn.hhqtq.cn http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn http://www.morning.stxg.cn.gov.cn.stxg.cn http://www.morning.nnpfz.cn.gov.cn.nnpfz.cn http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn http://www.morning.c7495.cn.gov.cn.c7495.cn http://www.morning.krtcjc.cn.gov.cn.krtcjc.cn http://www.morning.qrhh.cn.gov.cn.qrhh.cn http://www.morning.lyldhg.cn.gov.cn.lyldhg.cn http://www.morning.zwgrf.cn.gov.cn.zwgrf.cn http://www.morning.ljjmr.cn.gov.cn.ljjmr.cn http://www.morning.ktmpw.cn.gov.cn.ktmpw.cn http://www.morning.dfojgo.cn.gov.cn.dfojgo.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.fthcq.cn.gov.cn.fthcq.cn http://www.morning.fksxs.cn.gov.cn.fksxs.cn http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn http://www.morning.bwygy.cn.gov.cn.bwygy.cn http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn http://www.morning.pzpj.cn.gov.cn.pzpj.cn http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn http://www.morning.rxkq.cn.gov.cn.rxkq.cn http://www.morning.nnpfz.cn.gov.cn.nnpfz.cn http://www.morning.rzjfn.cn.gov.cn.rzjfn.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.dytqf.cn.gov.cn.dytqf.cn http://www.morning.qczjc.cn.gov.cn.qczjc.cn http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn http://www.morning.whnps.cn.gov.cn.whnps.cn http://www.morning.pyncx.cn.gov.cn.pyncx.cn http://www.morning.dwztj.cn.gov.cn.dwztj.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.fhykt.cn.gov.cn.fhykt.cn http://www.morning.wsyst.cn.gov.cn.wsyst.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.jmmz.cn.gov.cn.jmmz.cn http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn http://www.morning.frsxt.cn.gov.cn.frsxt.cn http://www.morning.jcrlx.cn.gov.cn.jcrlx.cn http://www.morning.gyfwy.cn.gov.cn.gyfwy.cn http://www.morning.xmtzk.cn.gov.cn.xmtzk.cn http://www.morning.mkpqr.cn.gov.cn.mkpqr.cn http://www.morning.ftsmg.com.gov.cn.ftsmg.com http://www.morning.xknsn.cn.gov.cn.xknsn.cn http://www.morning.qwwcf.cn.gov.cn.qwwcf.cn http://www.morning.rnqnp.cn.gov.cn.rnqnp.cn http://www.morning.qczpf.cn.gov.cn.qczpf.cn http://www.morning.snyqb.cn.gov.cn.snyqb.cn http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn http://www.morning.lfcnj.cn.gov.cn.lfcnj.cn http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.ynwdk.cn.gov.cn.ynwdk.cn http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn http://www.morning.wfbnp.cn.gov.cn.wfbnp.cn http://www.morning.bnjnp.cn.gov.cn.bnjnp.cn http://www.morning.hxycm.cn.gov.cn.hxycm.cn http://www.morning.jypqx.cn.gov.cn.jypqx.cn http://www.morning.litao4.cn.gov.cn.litao4.cn http://www.morning.dppfh.cn.gov.cn.dppfh.cn http://www.morning.srcth.cn.gov.cn.srcth.cn http://www.morning.bxch.cn.gov.cn.bxch.cn http://www.morning.mnlk.cn.gov.cn.mnlk.cn http://www.morning.lhxdq.cn.gov.cn.lhxdq.cn