15分钟速通yolo12,从环境搭建到推理图片,最后训练自己的数据集
项目演示视频:
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,从环境搭建到推理图片,最后训练自己的数据集的更多相关文章
- 5 分钟速通 SVG
前言 SVG对不少前端来说就是一个熟悉的陌生人,此篇博客是我学习完SVG后做的一个小总结,帮助我快速回忆SVG相关内容. 它不能帮你精通 SVG,但是可以帮你快速了解SVG的一些核心内容,不会迷失在一 ...
- 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 ...
- 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 ...
- Struts2.5的的环境搭建及跑通流程
Struts2.5 struts是开源框架.使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间.如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,st ...
- 简介及环境搭建跑通Hello
简介及环境搭建跑通Hello Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开 ...
- Spring ——简介及环境搭建跑通Hello
Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开发复杂性而创建的.框架的主要优 ...
- OCM_第一天课程:OCM课程环境搭建
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- LNMP环境搭建之php安装,wordpress博客搭建
LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...
- WinMail邮件服务器(客户端)环境搭建与配置
WinMail邮件服务器(客户端)环境搭建与配置 一.在搭建WinMail邮件服务器(客户端)之前必备 (1).在虚拟机上安装两个干净无毒的操作系统 ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
随机推荐
- Kubernetes控制器-Deployment
Kubernetes控制器-Deployment 我们已经知道ReplicaSet控制器是用来维护集群中运行的Pod数量的,但是往往在实际操作时候,我们反而不去直接使用RS,而是使用更上层的控制器,比 ...
- linux系统自定义登录提示信息
centos7配置说明 这里对于centos7.x系统,可以直接编辑/etc/motd文件,增加定制的提示信息,并可以通过不同颜色展示. vim /etc/motd ^[[32m 设备IP地址: 10 ...
- h5 移动端适配方案
h5 移动端适配方案 设定viewport 打开public\index.html,在html\head结点下加入<meta name="viewport" content= ...
- 芋道源码RCE复现
先创建一个流程模型 再创建一个流程表单,添加一个输入框 将模型与此表单进行关联 发起流程 输入的命令被执行
- Java集合--从本质出发理解HashMap
文章内容较长,放宽心,带着疑问慢慢读,总能找到你想要的答案. 如何快速定位数据存储在内存地址的位置? 先提出一个问题:如何快速定位数据存储在内存地址的位置? 聪明的你会想到使用数组:根据首地址+单个节 ...
- ado.net基础(一)
什么是ado.net 使用.net技术操作数据库的一套类库. 命名空间 system.data:描述数据的命名空间 system.data.sqlclient:专门针对sqlserver的命名空间 四 ...
- openWrt安装三方插件
前言 openWrt是一款开源的路由器系统,其最大的优点就是 支持第三方扩展插件. 新增的插件基本都会在左侧的服务菜单中展现,通过此入口就可以使用插件功能. 大部分openWrt固件都帮你装好了ope ...
- json字符串不规范 怎么使用parse反序列化
json不规范 亲人两行泪 var myJsonStr = "{name:'张三', 'age':20}"; // 甚至有的key或者value是双引号包起来的 引号都不统一 JS ...
- Living-Common Sense: 生活常识:孤独+高压
If you are feeling lonely, call a friend. If you are feeling stressed, take a 10-minute walk.
- SciTech-Mathmatics-Philosophy + Proba. & Stats.: Correctness of Mathmatical Methodology:数学方法的正确性 + Theoretical Correctness:理论正确性: 和 "建立模型"的 "假设及其前提"
SciTech-Mathmatics-Proba. & Stats.: Correctness of Mathmatical Methodology:数学方法的正确性 Euclidian: H ...