【课程总结】Day11(下):YOLO的入门使用

news2025/2/24 9:16:24

前言

YOLO的简介

YOLO(You Only Look Once)是一种流行的目标检测算法,由Joseph Redmon等人于2015年提出。YOLO的设计思想是将目标检测任务转化为单个神经网络的回归问题,通过在图像上划分网格并对每个网格预测边界框和类别置信度来实现目标检测。

YOLO的发展历史

  • YOLOv1:YOLOv1是最初的版本,提出了将目标检测任务统一为回归问题的思想,实现了实时目标检测。
  • YOLOv2:YOLOv2在YOLOv1的基础上进行改进,引入了一些技术,如多尺度训练、Batch Normalization等,提高了检测性能。
  • YOLOv3:YOLOv3进一步改进了网络结构,采用了更深的Darknet-53网络作为主干网络,提高了检测准确率和速度。
  • YOLOv4:YOLOv4引入了一系列新技术,如CSPDarknet53、Mish激活函数、PANet等,使得性能得到进一步提升。
  • YOLOv5:YOLOv5是由Ultralytics团队开发的版本,采用了PyTorch框架,针对性能和易用性进行了优化。

目前,YOLO系列算法在目标检测领域具有广泛的应用和影响力,被广泛应用于实时目标检测、视频分析、自动驾驶等领域。

YOLO的官网

地址:https://docs.ultralytics.com/zh

YOLO的安装

环境准备

  • Git客户端

    • 安装方法(windows系统下):

      • 第一步:访问https://git-scm.com/downloads
      • 第二步:下载对应系统的安装包进行安装
      • 第三步:安装完成后,右键菜单→Git Bash,输入git --version,如果显示版本号,则说明安装成功。
    • 安装方法(macOS系统下):

      • 第一步:启动terminal命令行
      • 第二步:输入brew install git,安装git
      • 第三步:输入git --version,如果显示版本号,则说明安装成功。
  • Python环境

    • 通过查看YOLO官网说明,ultralytics支持Python3.6+,因此需要安装Python3.6+版本的Python环境。
  • Pip

    • 确保系统中已经安装了pip

下载代码

第一步:在本地创建一个文件夹(例如:D:\yolo_materials),启动cmd

如果是Mac系统,在/Users/{用户名}/下创建一个文件夹即可,例如:我创建在/Users/deadwalk/Code/yolo_materials

第二步:在cmd中输入以下命令:

# git clone {仓库地址} 代表从仓库地址下载代码
git clone https://github.com/ultralytics/ultralytics.git

如果使用上面的gitclone命令拉取太慢,可以使用我在gitee上建立的镜像仓库,方法如下:

git clone https://gitee.com/deadwalk/ultralytics.git

代码拉取完毕后会显示如下

安装

在开始安装之前,我们再次回顾下Python解释器环境的问题:

  • 一般情况下,如果安装了Python和Anaconda的话,那么我们的机器中存在两个Python解释器环境,如下图所示:

  • 因为存在存在两个Python解释器环境,所以我们在安装使用时,可能存在:

    • 问题1:通过命令行pip安装在python环境,但是在jupyter notebook中import提示没有相关组件;
    • 问题2:通过anaconda prompt安装在anaconda的python环境中,但是vscode中import提示没有找到相关组件。

对于以上问题,请自行分辨未来要使用哪个IDE以及要安装到哪个Python解释器环境中。当然,两个环境都安装也是一种办法:)

命令行中安装ultralytics
安装方法(windows系统下):

第一步:使用cd命令进入ultralytics

cd ultralytics

第二步:在命令行中输入如下命令

pip install -e .


这种方法,默认是将ultralytics安装到上图左侧的Python环境

安装方法(macOS系统下):

Mac下的安装方法与windows系统下非常类似:
第一步:启动terminal命令行,进入到ultralytics目录
第二步:在命令行中输入pip install -e .

anaconda prompt中安装ultralytics
安装方法(windows系统下):

第一步:启动anaconda prompt

第二步:创建虚拟环境
在anaconda prompt中输入命令创建虚拟环境

创建虚拟环境而不使用base环境,是避免因为频繁安装卸载组件,污染全局环境,进而造成未来多个工程运行时出现异常。

# 创建一个新的虚拟环境(示例名称为myenv,可根据需要修改,如:yolo)
conda create --name myenv

# 激活新创建的虚拟环境
conda activate myenv

第三步:在anaconda prompt中输入命令切换到刚才下载的ultralytics目录

# 输入D: 回车,切换到D盘
D:

# 输入cd yolo_materials,切换到yolo_materials目录
cd yolo_materials

# 输入cd ultralytics,切换到ultralytics目录
cd ultralytics

第四步:运行安装命令

conda install -c conda-forge ultralytics

关于conda相关命令手册请查看《Anaconda conda常用命令:从入门到精通》

安装方法(macOS系统下):

第一步:创建anaconda虚拟环境

第二步:启动anaconda prompt

第三步:切换到刚才下载的ultralytics目录

第四步:运行安装命令

conda install -c conda-forge ultralytics

验证安装

新建Python代码文件,使用下面代码进行验证

from ultralytics import YOLO
import ultralytics

print(ultralytics.__version__)

在Jupyter notebook中运行上述代码,如果出现如下提示,则说明安装成功。

在VSCode中运行上述代码,如果出现如下提示,则说明安装成功。

注意:在VSCode中验证安装时,注意切换解释器为之前创建的虚拟环境:

一些后置操作

安装完毕后,可以通过开始→运行→输入%appdata%回车,进入用户目录下的Appdata\Roaming目录。

进入%appdata%目录后,可以找到ultralytics目录,里面存放着ultralytics的安装文件。

删除settings.yaml文件以避免ultralytics每次都读取默认配置

YOLO的应用

官网示例

在成功安装YOLO之后,我们可以参考官网的示例进行测试。

from ultralytics import YOLO

# 1,构建模型
model = YOLO("yolov8n-cls.yaml") 

if __name__ == "__main__":
    # 2,训练模型
    results = model.train(data="mnist160", epochs=100, imgsz=64)


根据运行日志,找到对应的文件夹

鼠标手势识别

我们同样可以使用YOLO进行鼠标手势识别项目的训练。
第一步:将鼠标手势数据集拷贝至ultralytics\datasets\gestures目录下。

第二步:修改训练脚本如下

from ultralytics import YOLO

# 1,构建模型
model = YOLO("yolov8n-cls.yaml") 

if __name__ == "__main__":
    # 2,训练模型
    results = model.train(data="gestures", 
                          epochs=100, 
                          imgsz=128,
                          batch=8
                        )

第三步:运行训练脚本,训练过程中可通过如下命令查看GPU的使用情况

nvidia-smi

第四步:训练完毕后,加载使用训练的模型
在ultralytics\runs\classify\train*\weights目录下,可以找到训练好的模型;
我们通过以下代码加载模型文件,进行预测:

import streamlit as st
import torch
import os
import numpy as np
from PIL import Image
from ultralytics import YOLO

    
if __name__ == "__main__":
    # 1. 显示当前设备是GPU设备还是CPU
    device = "cuda" if torch.cuda.is_available() else "cpu"
    st.write(f"当前设备是{device}设备")

    # 2. 加载使用YOLO训练的模型
    model = YOLO("best.pt")  # load a custom trained model

    # 3. 上传一张图片
    img_path = st.file_uploader(label="上传一张图片", type=["png", "jpg", "jpeg"])

    if img_path:
        # 3.1 将上传的图像文件保存到临时文件
        with open("temp_img.jpg", "wb") as f:
            f.write(img_path.getvalue())
        img_path = "temp_img.jpg"

        # 4. 显示上传的图片
        img = Image.open(img_path)
        st.image(img, caption="上传的图片", use_column_width=True)

        # 5. 进行预测
        results = model(img_path)

        # 6. 显示预测结果
        for result in results:
            st.write(f"预测结果: {result}")

        # 7. 可视化预测结果
        annotated_img = results[0].plot()  # 使用plot方法可视化
        st.image(annotated_img, caption="预测结果", use_column_width=True)
    

运行结果:

内容小结

  • YOLO是深度学习中一个非常流行的模型,它具有很好的泛化能力,可以应用于各种场景。
  • YOLO的使用非常简单,只需要三步:引入ultralytics库,创建模型,训练模型。
  • YOLO训练后生成的模型文件以及过程日志,保存在ultralytics\runs目录下。
  • 如果想使用自定义的数据集,将数据集按照YOLO的放在ultralytics\datasets目录下即可。
  • YOLO训练后的模型使用时也比较简单,只需要三步:引入ultralytics库,加载模型,进行预测。

参考资料

CSDN:Anaconda conda常用命令:从入门到精通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js全栈指南:浏览器显示一个网页

上一章,我们了解到,如何通过第二章的极简 Web 的例子来演示如何查看官方文档。为什么要把查阅官方文档放在前面的章节说明呢?因为查看文档是一个很重要的能力,就跟查字典一样。 回想一下,我们读小学,初中的…

如何创建一个vue项目

目录 1.环境准备 2.检查node和npm版本,确定已安装nodejs 3.全局安装vue/cli、webpack、webpack-cli、vue/cli-init 4.检查vue版本,注意V是大写 5.创建vue项目 6.得到的vue项目目录结构如下: 1.环境准备 安装nodejs,或者安装nvm,并使用…

day38动态规划part01| 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

**理论基础 ** 无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了? 其实并没有,我讲的理论基础内容,…

盲源信道分离—FastICA算法性能仿真

本案例中使用Matlab软件对FastICA算法的声音分离性能进行了仿真,分别对简单波形的混合信号、不同类型声音的混合信号、同一类型的混合信号这三种情况进行仿真,主要从分离信号的波形形状、串音误差两方面对分离性能进行衡量,仿真结果显示快速I…

前端新手小白的第一个AI全栈项目---AI聊天室

前言 ok,大家好。- ̗̀(๑ᵔ⌔ᵔ๑)最近也是想做自己的第一个前后端分离的项目,刚好最近学了一点AI接口的实现。想着用接口做一个自己的ai聊天室并且尝试一下全栈式开发。中间真的解决了很多问题,也是成功之后也是想要将实现过程分享一下&a…

4.任务调度

1.基本知识 2.任务的状态 FreeRTOS中任务共存在4种状态:Running 运行态 当任务处于实际运行状态称之为运行态,即CPU的使用权被这个任务占用(同一时间仅一个任务处于运行态)。Ready 就绪态 处于就绪态的任务是指那些能够运行&…

6毛钱SOT-23封装28V、400mA 开关升压转换器,LCD偏置电源和白光LED应用芯片TPS61040

SOT-23-5 封装 TPS61040 丝印PHOI 1 特性 • 1.8V 至 6V 输入电压范围 • 可调节输出电压范围高达 28V • 400mA (TPS61040) 和 250mA (TPS61041) 内部开关电流 • 高达 1MHz 的开关频率 • 28μA 典型空载静态电流 • 1A 典型关断电流 • 内部软启动 • 采用 SOT23-5、TSOT23…

图解HTTP笔记整理(前六章)

图解HTTP 第一章 web使用HTTP (HyperText Transfer Protocol,超文本传输协议)协议作文规范,完成从客户端到服务器端等一系列运作流程。 协议:计算机与网络设备要相互通信,双方就必须基于相同的方法。比如…

[油猴脚本] Image To Ascii 快速转换审计网站图片中敏感信息插件

项目地址:https://github.com/MartinxMax/ImageToAscii 导入 将ImagetoAscii.user.js导入油猴 进行按照 访问网站分析图片 当鼠标靠近图片时会出现分析按钮 通过审查图片信息,我们可以快速发现这张图片存在PHP代码。 当然在渗透测试中,你可以快速查看上传的图片木马中PHP代码…

经验分享,在线word转图片

这里分享一个在线word转图片的网站,比较好用 网址:http://www.docpe.com/word/word-to-image.aspx 截图:

40.连接假死-空闲检测-发送心跳

连接假死情况 1.网络设备出现故障,例如网卡,机房等。底层的TCP连接已经断开,但应用程序没有感知到,仍然占着资源。 2.公网网络不稳定,出现丢包。若果连续出现丢包,这时现象就是客户端数据发不出去,服务端也一直收不到数据,就这么一直耗着。 3.应用程序线程阻塞,无法…

甲子光年专访天润融通CEO吴强:客户经营如何穿越低速周期?

作者|陈杨、编辑|栗子 社会的发展从来都是从交流和联络开始的。 从结绳记事到飞马传信,从电话电报到互联网,人类的联络方式一直都在随着时代的发展不断进步。只是传统社会通信受限于技术导致效率低下,对经济社会产生影…

浅谈 MySQL 复制架构

Author:Arsen Date:2024/06/26 目录 前言一、参数设置1.1 slave_exec_mode1.2 max_allowed_packet1.3 binlog-do-db1.4 binlog-ignore-db1.5 replicate-ignore-db1.6 replicate-ignore-table1.7 replicate-wild-ignore-table1.8 slave_compressed_protoc…

实时美颜技术解析:视频美颜SDK如何改变直播行业

实时美颜技术的出现,尤其是视频美颜SDK的应用,正逐渐改变着直播行业的生态。 一、实时美颜技术的原理 实时美颜技术利用人工智能和图像处理算法,对视频中的人物面部进行优化和修饰。该技术通常包含以下几个步骤: 1.人脸检测和识…

ue 材质贴图Tiling repeat

材质问题,如下 贴图显然不符合逻辑,太大,并且是一次性贴图 换一个红砖纹理,就看清了,砖太大了 修改: 拖出一个TexCoord,代表坐标,拖出一个参数,代表次数,如…

AI自动生成角色和情节连续的漫画,中山大学联想提出AutoStudio,可以多轮交互式连续生成并保持主题一致性。

中山大学和联想研究院提出AutoStudio: 是一种无需训练的多代理框架,用于多轮交互式图像生成,能够在生成多样化图像的同时保持主体一致性。 AutoStudio 采用三个基于 LLM 的智能体来解释人类意图并为 SD 模型生成适当的布局指导。此外,还引入…

搜索引擎的原理与相关知识

搜索引擎是一种网络服务,它通过互联网帮助用户找到所需的信息。搜索引擎的工作原理主要包括以下几个步骤: 网络爬虫(Web Crawler):搜索引擎使用网络爬虫(也称为蜘蛛或机器人)来遍历互联网&#…

一文了解自定义表单系统开源的多个优势

降本、提质、增效,是当前很多企业都想实现的目的。什么样的软件可以助力企业创造价值?低代码技术平台是近些年得到了很多客户喜爱的平台产品,因为它能帮助大家减少编程代码的撰写,能轻松助力各部门之间做好协调沟通工作&#xff0…

微信小程序毕业设计-微信食堂线上订餐系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

Python数据分析第一课:Anaconda的安装使用

Python数据分析第一课:Anaconda的安装使用 1.Anaconda是什么? Anaconda是一个便捷的获取包,并且对包和环境进行管理的虚拟环境工具,Anaconda包括了conda、Python在内的超过180多个包和依赖项 简单来说,Anaconda是包管理器和环境…