15分钟速通yolo12,从环境搭建到推理图片,最后训练自己的数据集
<h2 id="项目演示视频"><strong>项目演示视频:</strong></h2>15分钟速通yolo12,从环境搭建到推理图片,最后训练自己的数据集_哔哩哔哩_bilibili<br>
<p><span data-cke-copybin-start="1"><span data-cke-copybin-start="1"></span></span></p>
<p><span style="font-size: 2em">1 环境搭建</span></p>
<h2 id="1.1%20python%E5%AE%89%E8%A3%85">1.1 python安装</h2>
<p>python我们这里使用了3.10,python的下载地址:<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="28" data-cke-widget-wrapper="1">Python Release Python 3.10.11 | Python.org </span></p>
<p>双击运行python安装包,执行安装流程,记得勾选环境变量。</p>
<p><span data-cke-copybin-start="1"><img alt="python安装" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824142508307-241762834.png" class="lazyload"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"></span></span></p>
<h2 id="1.2%20VsCode%E5%AE%89%E8%A3%85">1.2 VsCode安装</h2>
<p>我们编写python代码使用的ide环境是vscode,当然使用pycharm也是没问题的。</p>
<p>vscode的下载地址:<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="26" data-cke-widget-wrapper="1">Visual Studio Code - Code Editing. Redefined</span></p>
<p>根据安装提示安装即可:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="25" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><img alt="vscode安装" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824142550535-1947815148.png" class="lazyload"><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="25" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"></span></span></span></span></span></p>
<h2 id="1.3%20Yolo%E6%A1%86%E6%9E%B6%E4%BB%A3%E7%A0%81">1.3 Yolo框架代码</h2>
<p>yolo官网github网址:<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="24" data-cke-widget-wrapper="1">https://github.com/ultralytics/ultralytics</span></p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="23" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="yologithub" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824142643232-2005572838.png" class="lazyload"></span></span></span></p>
<p>我们提前电脑上新建一个存放我们工程的文件夹。</p>
<p>解压代码后,把框架代码中的ultralytics文件夹放到我们的工程文件夹中。</p>
<h2 id="1.4%20%E4%B8%8B%E8%BD%BDYolo12%E7%9A%84%E6%9D%83%E9%87%8D%E6%96%87%E4%BB%B6">1.4 下载Yolo12的权重文件</h2>
<p>打开yolo的官网网站:<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="22" data-cke-widget-wrapper="1">主页 - Ultralytics YOLO 文档</span></p>
<p><img alt="yolo12官网" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824142907409-889331307.png" class="lazyload"></p>
<p> </p>
<p>点击“模型页面”后,再点击左侧的“YOLO12”菜单</p>
<p>页面下滑后,找到YOLO12n,点击后下载yolo12n的权重文件,将权重文件存放到工程文件夹的根目录里。</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="20" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><img alt="权重下载" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143041349-1917387194.png" class="lazyload"><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="20" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"></span></span></span></span></span></p>
<h2 id="1.5%20pip%E4%BE%9D%E8%B5%96%E4%B8%8B%E8%BD%BD">1.5 pip依赖下载</h2>
<p>先验证下python和pip是否安装并配置成功,运行cmd后,依次输入python和pip,检查是否有信息正确输出,如下图所示。</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="19" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><img alt="cmd1" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143131474-427537547.png" class="lazyload"></span></span></p>
<p><img alt="依赖2" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143140146-938990622.png" class="lazyload"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"></span><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="18" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"></span></span></span></p>
<p>如果已经安装过了python后,输入python或者pip没有输出相关信息,则大概率是因为环境变量没有配置好,自行检查下环境变量问题,本文这里不对这个问题进一步展开叙述。</p>
<p>然后cmd通过cd命令把工作目录切换到之前所创建的工程目录的根目录下,创建虚拟环境,输入:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="17" data-cke-widget-wrapper="1">
<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">python -m venv myyolo12</pre>
</div>
<span class="cke_reset cke_widget_drag_handler_container"><img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"></span></div>
<p>创建之后我们进一步通过cd命令进入虚拟环境下的mylolo12/Scripts目录下</p>
<p>命令行中输入activate,激活虚拟环境,如果命令行前面出现小括号括起来的(myyolo12),则表明虚拟环境激活成功</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="16" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="激活成功" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143252289-1789859525.png" class="lazyload"></span></span></span></p>
<p>激活成功后在通过cd命令切换回到工程目录的根目录下。</p>
<p>然后可以通过pip命令来安装所依赖的插件,输入:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="15" data-cke-widget-wrapper="1">
<div class="cnblogs_code">
<pre>pip install ultralytics</pre>
</div>
</div>
<p>经过一段时间的等待,速度取决于网络情况,最终安装完所需要的插件。</p>
<p><img alt="安装完成" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143417678-562943278.png" class="lazyload"></p>
<h2 id="1.6%20vscode%E5%AE%89%E8%A3%85python%E6%8F%92%E4%BB%B6">1.6 vscode安装python插件</h2>
<p>在vscode的扩展中,搜索python,找到python插件后,点击右侧的安装按钮。</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="13" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="vscode安装python" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143508001-1131849750.png" class="lazyload"></span></span></span></p>
<h1 id="2%20%E5%9B%BE%E7%89%87%E9%A2%84%E6%B5%8B">2 图片预测</h1>
<p>这里用yolo框架中提供的两张图像作为测试图像,测试图像存放于ultralytics/assets下的bus.jpg和zidane.jpg</p>
<p><img alt="图片1" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143602105-1692461850.jpg" class="lazyload"></p>
<p><img alt="图片2" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143609844-204944211.jpg" class="lazyload"></p>
<p>图像预测的代码:</p>
<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">from ultralytics import YOLO
import cv2
img = cv2.imread("zidane.jpg")
#初始化模型
model = YOLO("yolo12n.pt")
#预测
results = model.predict(img)
#提取检测结果的图像
results_image = results.plot()
#展示检测结果图像
cv2.imshow("YOLOv12n Detection", results_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
</pre>
</div>
<p> <img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"></p>
<p>代码并不复杂,先读取图像,然后初始化yolo模型,初始化模型中载入我们前面下载的yolo12的权重文件,然后调用predict进行图像预测,然后拿到预测的结果进行展示。</p>
<p>检测结果如下:</p>
<p><img alt="检测1" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143709150-1294122300.png" class="lazyload"></p>
<p> </p>
<p><img alt="检测2" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143720872-1423075300.png" class="lazyload"></p>
<h1 id="3%20%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AE%AD%E7%BB%83">3 训练自己的数据集</h1>
<h2 id="3.1%20%E6%95%B0%E6%8D%AE%E9%9B%86%E4%BB%8B%E7%BB%8D">3.1 数据集介绍</h2>
<p>数据集是检测石头、剪刀、布的手势,如下图所示。</p>
<p><img alt="gif" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143754083-1766109618.gif" class="lazyload"></p>
<p> </p>
<p>数据集分为:训练集、验证集、测试集,每个种类的数据集都有对应的图像和标注文件</p>
<p><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="数据集" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143900182-382521543.png" class="lazyload"></span></span></p>
<p>标注文件</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="5" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><img alt="标注文件" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824143940225-1253387016.png" class="lazyload"><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="5" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"></span></span></span></span></span></p>
<p>训练集有6455张图像</p>
<p>验证集有576张图像</p>
<p>测试集有304张图像</p>
<p>下面是数据集的yaml文件信息</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="4" data-cke-widget-wrapper="1">
<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">train: train/images
val: valid/images
test: test/images
nc: 3
names: ['Paper', 'Rock', 'Scissors']</pre>
<img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" style="background-color: rgba(255, 255, 255, 1); font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"></div>
</div>
<p>将数据集和yaml文件复制到ultralytics/cfg/datasets目录下</p>
<h2 id="3.2%20%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AE%AD%E7%BB%83">3.2 数据集训练</h2>
<p>数据集训练代码:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="3" data-cke-widget-wrapper="1">
<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">from ultralytics import YOLO
def main():
# 载入yolo12的预训练权重文件
model = YOLO("yolo12n.pt")
# 调用训练函数
model.train(
data="data.yaml", #数据集说明文件
epochs=100, #训练次数
batch=16, #训练批次
)
if __name__ == "__main__":
main()</pre>
</div>
</div>
<p>执行后,会进行训练,训练的速度取决于电脑的配置,也可以把代码托管到服务器上进行训练,具体方法本文不细展开。</p>
<p>训练过程如下</p>
<p><img alt="训练过程" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824144027551-1333611245.png" class="lazyload"></p>
<p> </p>
<p>训练结束后,会在根目录的runs/detect下生成以train作为前缀的文件夹,里面保存了训练中产生的训练结果和最终产生的训练的权重文件。如下图所示</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="1" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="结果1" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824144124109-482310450.png" class="lazyload"></span></span></span></p>
<p>里面的weights文件夹存放了权重文件</p>
<p><img alt="权重文件" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250824144133746-434547633.png" class="lazyload"></p>
<p>其中:</p>
<p>best.pt表示训练过程中保存的训练效果最好的一次权重。</p>
<p>last.pt表示训练最后一次的训练结果的权重。</p>
<p> </p>
<p>以上就是我们从0到环境搭建,到图片预测,最终训练自己数据集的完整过程,中间细节难免有些疏漏,如有问题,可以评论区进行讨论。</p>
<p><span data-cke-copybin-start="1"><span data-cke-copybin-end="1"></span></span></p><br><br>
来源:https://www.cnblogs.com/codingtea/p/19053136
頁:
[1]