首页 > Python资料 博客日记
python:浅谈yolov10对比yolov5的方便之处
2024-11-02 06:00:07Python资料围观29次
前言
YOLOv10是YOLO系列的最新版本,旨在提高推理速度并减少计算开销。它是实时目标检测领域中的一项重要进展,通过移除非最大值抑制(NMS)并采用双重标签分配、空间信道解耦向下采样和排序引导块设计,实现了更高的性能和效率。简单来说就是相比之前的框架更快捷,更高效,更高准确度,闲话少说,对比我之前yolov5操作文章连接方便了多少吧,这里我挑一些重点讲一下。
一、环境配置
推荐使用conda
conda create -n yolov10 python=3.9
conda activate yolov10
pip install -r requirements.txt
pip install -e .
pip install ultralytics
cuda安装以及代码确定
import torch
# 检查 CUDA 是否可用
cuda_available = torch.cuda.is_available()
# 返回值为Ture代表可用GPU
二、数据标注
首先,标注数据还是推荐使用labelimg,还是以我之前的文章案例为例,识别图片数字的需求
这里选择yolo格式,这样保存的数据格式是txt
三、配置文件
拉取yolov10代码
git clone https://github.com/THU-MIG/yolov10.git
同级路径创建datasets文件夹,放入标注好的图片数据,如图:
train文件放入训练的数据,val放入预测图片数据,标注好保存的txt文件放入labels文件中
创建test.yaml文件,写入代码:
path: test # dataset root dir
train: images/train # train images (relative to 'path') 128 images
val: images/val # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
names:
0: zero
1: one
2: two
3: three
4: four
5: five
6: six
7: seven
8: eight
9: nine
四、训练数据
在终端:
yolo task=detect mode=train data=test.yaml model=yolov10m.pt epochs=100 batch=16 device=0 plots=True
yolo:运行yolo程序
task=detect:指定任务为检测(detect)
mode=train:指定模式为训练(train)
data=test.yaml:指定你自己的数据集 yaml 文件
model=yolov10m.pt: 指定下载的yolov10预训练权重文件
epochs=100:设置训练轮次,
batch=4:设置训练集加载批次,主要是提高训练速度,具体得看你的显卡或者内存容量。如果显存大,则可以设置大一些。或许训练再详细讲解如何设置
device=0:指定训练设备,如果没有gpu,则令device=cpu,如果有一个gpu,则令device=0,有两个则device=0,1以此类推进行设置。
训练完成之后会形成best.pt文件,记住路径,如图:
到这里基本已经成功了,接下来测试我们训练出来的到底准不准吧
五、数据预测
同级路径创建detect.py,代码如下:
# coding=utf-8
from ultralytics import YOLOv10
import supervision as sv
import cv2
from loguru import logger
classes = {
0: 'zero',
1: 'one',
2: 'two',
3: 'three',
4: 'four',
5: 'five',
6: 'six',
7: 'seven',
8: 'eight',
9: 'nine',
}
model = YOLOv10('runs/detect/train9/weights/best.pt')
image = cv2.imread('datasets/group1/images/val/1.png')
# 预测数据值
results = model(source=image, conf=0.25, verbose=False,device='cpu')[0]
detections = sv.Detections.from_ultralytics(results)
distance_list = []
for i in detections:
distance_list.append([i[0][0],i[-3]])
sorted_list = sorted(distance_list, key=lambda x: x[0])
distance_list.sort(key=lambda x: x[0])
logger.debug('预测结果: '+''.join([str(i[-1]) for i in sorted_list]))
# 使用标注器显示图片
bounding_box_annotator = sv.BoundingBoxAnnotator()
label_annotator = sv.LabelAnnotator()
labels = [
f"{classes[class_id]} {confidence:.2f}"
for class_id, confidence in zip(detections.class_id, detections.confidence)
]
annotated_image = bounding_box_annotator.annotate(image.copy(), detections=detections)
annotated_image = label_annotator.annotate(annotated_image,detections=detections,labels=labels)
cv2.imshow('test', annotated_image)
cv2.waitKey()
cv2.destroyAllWindows()
运行如下图,预测正确,收工
总结
总体操作流程下来确实比yolov5方便了不少,而且框架代码封装性高,扩展性高。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj