项目演示视频:

https://www.bilibili.com/video/BV127YXz4Eto/

1 环境搭建

1.1 python安装

python我们这里使用了3.10,python的下载地址:Python Release Python 3.10.11 | Python.org

双击运行python安装包,执行安装流程,记得勾选环境变量。

1.2 VsCode安装

我们编写python代码使用的ide环境是vscode,当然使用pycharm也是没问题的。

vscode的下载地址:Visual Studio Code - Code Editing. Redefined

根据安装提示安装即可:

1.3 Yolo框架代码

yolo官网github网址:https://github.com/ultralytics/ultralytics

我们提前电脑上新建一个存放我们工程的文件夹。

解压代码后,把框架代码中的ultralytics文件夹放到我们的工程文件夹中。

1.4 下载Yolo12的权重文件

打开yolo的官网网站:主页 - Ultralytics YOLO 文档

点击“模型页面”后,再点击左侧的“YOLO12”菜单

页面下滑后,找到YOLO12n,点击后下载yolo12n的权重文件,将权重文件存放到工程文件夹的根目录里。

1.5 pip依赖下载

先验证下python和pip是否安装并配置成功,运行cmd后,依次输入python和pip,检查是否有信息正确输出,如下图所示。

如果已经安装过了python后,输入python或者pip没有输出相关信息,则大概率是因为环境变量没有配置好,自行检查下环境变量问题,本文这里不对这个问题进一步展开叙述。

然后cmd通过cd命令把工作目录切换到之前所创建的工程目录的根目录下,创建虚拟环境,输入:

python -m venv myyolo12

创建之后我们进一步通过cd命令进入虚拟环境下的mylolo12/Scripts目录下

命令行中输入activate,激活虚拟环境,如果命令行前面出现小括号括起来的(myyolo12),则表明虚拟环境激活成功

激活成功后在通过cd命令切换回到工程目录的根目录下。

然后可以通过pip命令来安装所依赖的插件,输入:

pip install ultralytics

经过一段时间的等待,速度取决于网络情况,最终安装完所需要的插件。

1.6 vscode安装python插件

在vscode的扩展中,搜索python,找到python插件后,点击右侧的安装按钮。

2 图片预测

这里用yolo框架中提供的两张图像作为测试图像,测试图像存放于ultralytics/assets下的bus.jpg和zidane.jpg

图像预测的代码:

from ultralytics import YOLO
import cv2 img = cv2.imread("zidane.jpg") #初始化模型
model = YOLO("yolo12n.pt") #预测
results = model.predict(img) #提取检测结果的图像
results_image = results[0].plot() #展示检测结果图像
cv2.imshow("YOLOv12n Detection", results_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

  

代码并不复杂,先读取图像,然后初始化yolo模型,初始化模型中载入我们前面下载的yolo12的权重文件,然后调用predict进行图像预测,然后拿到预测的结果进行展示。

检测结果如下:

3 训练自己的数据集

3.1 数据集介绍

数据集是检测石头、剪刀、布的手势,如下图所示。

数据集分为:训练集、验证集、测试集,每个种类的数据集都有对应的图像和标注文件

标注文件

训练集有6455张图像

验证集有576张图像

测试集有304张图像

下面是数据集的yaml文件信息

train: train/images
val: valid/images
test: test/images nc: 3
names: ['Paper', 'Rock', 'Scissors']

  

将数据集和yaml文件复制到ultralytics/cfg/datasets目录下

3.2 数据集训练

数据集训练代码:

from ultralytics import YOLO

def main():
# 载入yolo12的预训练权重文件
model = YOLO("yolo12n.pt")
# 调用训练函数
model.train(
data="data.yaml", #数据集说明文件
epochs=100, #训练次数
batch=16, #训练批次
) if __name__ == "__main__":
main()

  

执行后,会进行训练,训练的速度取决于电脑的配置,也可以把代码托管到服务器上进行训练,具体方法本文不细展开。

训练过程如下

训练结束后,会在根目录的runs/detect下生成以train作为前缀的文件夹,里面保存了训练中产生的训练结果和最终产生的训练的权重文件。如下图所示

里面的weights文件夹存放了权重文件

其中:

best.pt表示训练过程中保存的训练效果最好的一次权重。

last.pt表示训练最后一次的训练结果的权重。

以上就是我们从0到环境搭建,到图片预测,最终训练自己数据集的完整过程,中间细节难免有些疏漏,如有问题,可以评论区进行讨论。

15分钟速通yolo12,从环境搭建到推理图片,最后训练自己的数据集的更多相关文章

  1. 5 分钟速通 SVG

    前言 SVG对不少前端来说就是一个熟悉的陌生人,此篇博客是我学习完SVG后做的一个小总结,帮助我快速回忆SVG相关内容. 它不能帮你精通 SVG,但是可以帮你快速了解SVG的一些核心内容,不会迷失在一 ...

  2. LAMP环境搭建之编译安装指南(php-5.3.27.tar.gz)

    测试环境:CentOS release 6.5 (Final) 软件安装:httpd-2.2.27.tar.gz   mysql-5.1.72.tar.gz   php-5.3.27.tar.gz 1 ...

  3. LNMP环境搭建之编译安装指南(php-5.3.27.tar.gz)

    测试环境:CentOS release 6.5 (Final) 软件安装:nginx   mysql-5.5.32-linux2.6-x86_64.tar.gz   php-5.3.27.tar.gz ...

  4. Struts2.5的的环境搭建及跑通流程

    Struts2.5 struts是开源框架.使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间.如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,st ...

  5. 简介及环境搭建跑通Hello

    简介及环境搭建跑通Hello Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开 ...

  6. Spring ——简介及环境搭建跑通Hello

    Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开发复杂性而创建的.框架的主要优 ...

  7. OCM_第一天课程:OCM课程环境搭建

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  8. LNMP环境搭建之php安装,wordpress博客搭建

    LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...

  9. WinMail邮件服务器(客户端)环境搭建与配置

    WinMail邮件服务器(客户端)环境搭建与配置      一.在搭建WinMail邮件服务器(客户端)之前必备            (1).在虚拟机上安装两个干净无毒的操作系统          ...

  10. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

随机推荐

  1. Kubernetes控制器-Deployment

    Kubernetes控制器-Deployment 我们已经知道ReplicaSet控制器是用来维护集群中运行的Pod数量的,但是往往在实际操作时候,我们反而不去直接使用RS,而是使用更上层的控制器,比 ...

  2. linux系统自定义登录提示信息

    centos7配置说明 这里对于centos7.x系统,可以直接编辑/etc/motd文件,增加定制的提示信息,并可以通过不同颜色展示. vim /etc/motd ^[[32m 设备IP地址: 10 ...

  3. h5 移动端适配方案

    h5 移动端适配方案 设定viewport 打开public\index.html,在html\head结点下加入<meta name="viewport" content= ...

  4. 芋道源码RCE复现

    先创建一个流程模型 再创建一个流程表单,添加一个输入框 将模型与此表单进行关联 发起流程 输入的命令被执行

  5. Java集合--从本质出发理解HashMap

    文章内容较长,放宽心,带着疑问慢慢读,总能找到你想要的答案. 如何快速定位数据存储在内存地址的位置? 先提出一个问题:如何快速定位数据存储在内存地址的位置? 聪明的你会想到使用数组:根据首地址+单个节 ...

  6. ado.net基础(一)

    什么是ado.net 使用.net技术操作数据库的一套类库. 命名空间 system.data:描述数据的命名空间 system.data.sqlclient:专门针对sqlserver的命名空间 四 ...

  7. openWrt安装三方插件

    前言 openWrt是一款开源的路由器系统,其最大的优点就是 支持第三方扩展插件. 新增的插件基本都会在左侧的服务菜单中展现,通过此入口就可以使用插件功能. 大部分openWrt固件都帮你装好了ope ...

  8. json字符串不规范 怎么使用parse反序列化

    json不规范 亲人两行泪 var myJsonStr = "{name:'张三', 'age':20}"; // 甚至有的key或者value是双引号包起来的 引号都不统一 JS ...

  9. Living-Common Sense: 生活常识:孤独+高压

    If you are feeling lonely, call a friend. If you are feeling stressed, take a 10-minute walk.

  10. SciTech-Mathmatics-Philosophy + Proba. & Stats.: Correctness of Mathmatical Methodology:数学方法的正确性 + Theoretical Correctness:理论正确性: 和 "建立模型"的 "假设及其前提"

    SciTech-Mathmatics-Proba. & Stats.: Correctness of Mathmatical Methodology:数学方法的正确性 Euclidian: H ...