使用YOLOv8模型进行简单测试并在PyCharm中集成开发环境(Windows Python PyTorch Conda CPU)

一、概述

记录时间 [2024-4-1]

本文讲述的是在Windows系统下YOLOv8模型的简单应用。在上一篇文章中,我们能使用CLI的方式运行yolov8n.pt模型,对图像和视频进行目标识别,并得到结果。

详情可参考这篇文章:YOLOv8模型的简单测试,Windows环境下安装部署(Python+PyTorch+Conda+cpu+CLI)

接下来,我们将在PyCharm集成开发环境中编写简单的python文件,以python的方式对YOLOv8模型进行简单的测试。本文同样使用的是cpu版本,使用YOLOv8模型进行图片/视频预测,并得到结果。

这里附带上YOLOv8官方文档,里面记载了详细的使用方法,如果觉得看文档比较麻烦的话,可以直接看文章,需要用到的部分已经在文章中进行了摘录。

二、安装PyCharm

1. 下载

打开浏览器直接搜索PyCharm官网,也可以点击这里进行下载,有两个版本可供选择,一个是专业版(30天),另一个是社区版(free),下载社区版即可。

2. 安装

安装过程比较简单,只要默认下一步就可以。

如果想要修改安装目录,可以根据自己的需要修改。建议大家创建一个桌面快捷方式,可以方便打开。

3. 运行

双击快捷方式图标即可,勾选接受,然后点击Continue

三、导入项目Ultralytics(yolov8)

温馨提示,进行后面的操作前需要完成Ultralytics(yolov8)的安装,conda安装,虚拟环境yolo_test的创建,配置清华源镜像,PyTorch的安装。

但是,看到这里的朋友千万别慌,具体详细的操作请点击查看这篇文章,根据步骤操作即可。

1. 导入项目

点击Open,找到之前安装的Ultralytics(yolov8)项目,选择其根目录ultralytics-main并打开,选择Trust Project

2. 配置虚拟环境

点击右下角,然后点击Add New Interpreter,如图所示,将我们之前创建的虚拟环境yolo_test导入进来。

导入完成后,我们可以用熟悉的CLI命令测试一下。如图,点击PyCharm面板下方的终端Terminal,运行命令:

yolo predict model = yolov8n.pt source=ultralytics/assets/bus.jpg

如果运行后能得到结果,那就说明已经配置完毕啦。

3. 一些错误解决

接下来的测试会在PyCharm中进行,首先找到tests目录下的test_python.py文件并双击打开。

不难发现,刚打开来的文件显示有红色的报错,很大的可能是一些依赖和包没有导入,我们先解决一下。(如果发现有很多报错也没关系,一个一个来)

把鼠标移动到错误附近,然后点击Install package即可。

四、Python测试YOLOv8模型

1. 简单说明(可以跳过)

开始之前,我们可以在命令行中简单使用一下python,输出一个Hello World!

按住win+r打开cmd,输入python然后回车,我们就进入了Python运行环境:

C:\Users\32453>python
Python 3.9.18...
Type "help", "copyright", "credits" or "license" for more information.
>>>

输入命令,打印出Hello World!

print("Hello World!")

查看结果可知,cmd中打印出了Hello World!

>>> print("Hello World!")
Hello World!
>>>

输入exit()结束运行。

在这种情况下,我们一次只能运行一行python代码,如果想要一次性运行多行的话,可以写成一个xxx.py文件:

python xxx.py

2. 查看官方文档示例

我们可以从官方文档中查看模型预测的使用方法:

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define path to the image file
source = 'path/to/image.jpg'

# Run inference on the source
results = model(source)  # list of Results objects

# Run inference on 'bus.jpg' with arguments
model.predict('bus.jpg', save=True, imgsz=320, conf=0.5)

然后再了解一些涉及到的参数:

论据 类型 默认值 说明
source str 'ultralytics/assets' 指定推理的数据源。可以是图像路径、视频文件、目录、URL 或用于实时馈送的设备 ID。支持多种格式和来源,可灵活应用于不同类型的输入。
conf float 0.25 设置检测的最小置信度阈值。如果检测到的对象置信度低于此阈值,则将不予考虑。调整该值有助于减少误报。
iou float 0.7 非最大抑制 (NMS) 的交叉重叠 (IoU) 阈值。较低的数值可以消除重叠的方框,从而减少检测次数,这对减少重复检测非常有用。
imgsz int or tuple 640 定义用于推理的图像大小。可以是一个整数 640 或一个(高、宽)元组。适当调整大小可以提高检测精度和处理速度。
half bool False 启用半精度(FP16)推理,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低。
device str None 指定用于推理的设备(例如:…)、 cpu, cuda:00).允许用户选择 CPU、特定 GPU 或其他计算设备来执行模型。
stream_buffer bool False 确定在处理视频流时是否对所有帧进行缓冲 (True),或者模型是否应该返回最近的帧 (False).适用于实时应用。

另外还有一些可视化参数(例如,我们要保存结果,就会用到save参数):

论据 类型 默认值 说明
show bool False 如果 True在一个窗口中显示注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。
save bool False 可将注释的图像或视频保存到文件中。这有助于记录、进一步分析或共享结果。
save_frames bool False 处理视频时,将单个帧保存为图像。这对提取特定帧或逐帧进行详细分析非常有用。
save_txt bool False 将检测结果保存在文本文件中,格式如下 [class] [x_center] [y_center] [width] [height] [confidence].有助于与其他分析工具集成。
save_conf bool False 在保存的文本文件中包含置信度分数。增强了后期处理和分析的细节。
save_crop bool False 保存经过裁剪的检测图像。可用于数据集扩充、分析或创建特定物体的重点数据集。
show_labels bool True 在可视输出中显示每次检测的标签。让用户立即了解检测到的物体。
show_conf bool True 在标签旁显示每次检测的置信度得分。让人了解模型对每次检测的确定性。
show_boxes bool True 在检测到的物体周围绘制边框。对于图像或视频帧中物体的视觉识别和定位至关重要。
line_width None or int None 指定边界框的线宽。如果 None根据图像大小自动调整线宽。提供可视化定制,使图像更加清晰。

简单了解下就行,然后就可以进行接下来的操作了。

3. 图片预测

查看test_python.py文件头部可知,上面定义了需要使用的yolov8n.pt模型MODEL,测试图片的存放位置SOURCE,以及识别结果的保存位置TMP

# 需要使用的yolov8n.pt模型MODEL
MODEL = WEIGHTS_DIR / "path with spaces" / "yolov8n.pt"  # test spaces in path
CFG = "yolov8n.yaml"

# 测试图片的存放位置SOURCE
SOURCE = ASSETS / "bus.jpg"

# 识别结果的保存位置TMP
TMP = (ROOT / "../tests/tmp").resolve()  # temp directory for test files
IS_TMP_WRITEABLE = is_dir_writeable(TMP)

我们在test_python.py文件中写一个简单的方法进行测试

def test_image():
    # 下载一个YOLOv8n模型
    model = YOLO(MODEL)
    # 指明预测图片的路径
    source = SOURCE
    # 运行,保存结果
    model.predict(source, save=True, imgsz=320, conf=0.5)

写完后运行一下,点击test_image()方法左边的小三角就可以运行。

如果没有出现小三角那就关注下方法名字,不能乱写,要以test开头,比如写成image_test()就不行。

第一次运行可能会稍慢一些,因为它要先下载YOLOv8n模型。

test_python.py::test_image PASSED                                        [100%]
image 1/1 C:\Repo\...\bus.jpg: 320x256 3 persons, 1 bus, 57.3ms
Speed: 1.0ms preprocess, 57.3ms inference, 1.0ms postprocess per image at shape (1, 3, 320, 256)
Results saved to C:\...\tmp\runs\detect\predict

# Results saved to
# 就是结果保存的路径

运行成功后查看结果。

4. 视频预测

视频预测同理,再在test_python.py文件中写一个简单的方法进行测试即可。(下载不到合适的视频可以自己录一个)

def test_video():
    
    # 下载一个YOLOv8n模型
    model = YOLO(MODEL)
    
    # 指明预测视频的路径,注意视频格式为mp4
    # 此处视频存放位置为:ultralytics-main/ultralytics/assets/
    source = ASSETS / "dy.mp4"
    
    # 运行,保存结果
    model.predict(source, save=True)

查看运行结果:运行成功,然后就可以在tests\tmp\runs\detect\predict文件夹中查看识别后的视频了。

它保存的视频是avi格式的,大家可以自行去看一下哦。

video 1/1 (frame 246/247) C:\...\assets\dy.mp4: 416x640 2 persons, 1 traffic light, 65.5ms
video 1/1 (frame 247/247) C:\...\assets\dy.mp4: 416x640 2 persons, 1 traffic light, 1 tie, 1 cup, 105.0ms
Speed: 2.7ms preprocess, 66.3ms inference, 0.8ms postprocess per image at shape (1, 3, 416, 640)
Results saved to C:\...\tests\tmp\runs\detect\predict

五、总结

通过本文,我们进行了集成开发环境PyCharm的安装和使用,并在其中以Python的方式运行yolov8n.pt模型,对图像和视频进行目标识别,并得到结果。后续会尝试将模型封装成网络接口来进行调用,感兴趣的朋友可以期待一下哦。

一些参考资料

YOLOv8模型的简单测试:https://blog.csdn.net/Sareur_1879/article/details/137203261

YOLOv8官方文档:https://docs.ultralytics.com/zh/

PyCharm官网:https://www.jetbrains.com/pycharm/download/?section=windows

作者:蟾宫曲

物联沃分享整理
物联沃-IOTWORD物联网 » 使用YOLOv8模型进行简单测试并在PyCharm中集成开发环境(Windows Python PyTorch Conda CPU)

发表回复