使用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:0 或 0 ).允许用户选择 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
作者:蟾宫曲