当前位置:   article > 正文

设置YOLO-V8的参数_yolov8超参数设置

yolov8超参数设置
原文:YOLOv8预测参数详解(全面详细、重点突出、大白话阐述小白也能看懂)-CSDN博客

在这里插入图片描述

YOLOv8可以处理很多类型的识别,比如:图片、视频、还有YouTube的网页连接,强不强!!


如下表所示。 包括图像、URL、PIL图像、OpenCVNumPy数组、Torch张量、CSV文件、视频、目录、通配符、YouTube视频和视频流。

表格✅指示了每个输入源是否可以在流模式下使用,并给出了每个输入源使用流模式的示例参数
在这里插入图片描述

预测参数

设置预测参数,可以满足我们不同的需求。

比如提高conf 置信度参数的值,可以减少YOLO对物体的误判。

KeyValueDescription
source'ultralytics/assets'source directory for images or videos
conf0.25object confidence threshold for detection
iou0.7intersection over union (IoU) threshold for NMS
halfFalseuse half precision (FP16)
deviceNonedevice to run on, i.e. cuda device=0/1/2/3 or device=cpu
showFalseshow results if possible
saveFalsesave images with results
save_txtFalsesave results as .txt file
save_confFalsesave results with confidence scores
save_cropFalsesave cropped images with results
hide_labelsFalsehide labels
hide_confFalsehide confidence scores
max_det300maximum number of detections per image
vid_strideFalsevideo frame-rate stride
line_widthNoneThe line width of the bounding boxes. If None, it is scaled to the image size.
visualizeFalsevisualize model features
augmentFalseapply image augmentation to prediction sources
agnostic_nmsFalseclass-agnostic NMS
retina_masksFalseuse high-resolution segmentation masks
classesNonefilter results by class, i.e. class=0, or class=[0,2,3]
boxesTrueShow boxes in segmentation predictions

下面是每个参数的解释:

  • source:输入源的目录,可以是图像或视频文件。
  • conf:目标检测的对象置信度阈值。只有置信度高于此阈值的对象才会被检测出来。默认值为0.25
  • iou:非极大值抑制(NMS)的交并比(IoU)阈值。用于在重叠较大的候选框中选择最佳的检测结果。默认值为0.7
  • half:是否使用半精度(FP16)进行推理。半精度可以减少计算量,但可能会牺牲一些精度。默认值为False
  • device:模型运行的设备,可以是cuda设备(cuda device=0/1/2/3)或CPU(device=cpu)。
  • show:是否显示检测结果。如果设置为True,则会在屏幕上显示检测到的对象。默认值为False
  • save:是否保存带有检测结果的图像。如果设置为True,则会将检测结果保存为图像文件。默认值为False
  • save_txt:是否将检测结果保存为文本文件(.txt)。默认值为False
  • save_conf:是否将检测结果与置信度分数一起保存。默认值为False
  • save_crop:是否保存裁剪后的带有检测结果的图像。默认值为False
  • hide_labels:是否隐藏标签。如果设置为True,则在显示检测结果时不显示对象标签。默认值为False
  • hide_conf:是否隐藏置信度分数。如果设置为True,则在显示检测结果时不显示置信度分数。默认值为False
  • max_det:每张图像的最大检测数。如果检测到的对象数超过此值,将保留置信度高低来保留。默认值为300
  • vid_stride:视频帧率步长。默认值为False,表示使用默认的帧率。
  • line_width:边界框的线宽。如果设置为None,则根据图像大小进行自动缩放。默认值为None
  • visualize:是否可视化模型特征。默认值为False
  • augment:是否对预测源应用图像增强。默认值为False
  • agnostic_nms:是否使用类别无关的NMS。默认值为False
  • retina_masks:是否使用高分辨率的分割掩膜。默认值为False
  • classes:按类别过滤结果。可以指定单个类别(例如class=0)或多个类别(例如class=[0,2,3])。默认值为None,表示不进行类别过滤。
  • boxes:在分割预测中显示边界框。默认值为True
使用Results对象

Results对象包含以下组件:

Results.boxes:用于操作边界框的属性和方法的对象

Results.masks:用于索引掩膜或获取分段坐标的对象

Results.probs:包含类别概率或逻辑值的张量(tensor)

Results.orig_img:加载在内存中的原始图像

Results.path:包含输入图像的路径

result对象默认是torch.Tensor对象,也可以转为其他对象

  1. results = results.cuda()
  2. results = results.cpu()
  3. results = results.to('cpu')
  4. results = results.numpy()
Boxes

Boxes对象可用于索引、操作边界框,并将其转换为不同的格式。Box格式转换结果是缓存的,这意味着每个对象只计算一次,并且这些值将在将来的调用中重复使用。

  1. results = model(img)
  2. boxes = results[0].boxes
  3. box = boxes[0] # returns one box
  4. box.xyxy

Boxes 的属性有

  1. boxes.xyxy # xyxy 形式的目标框, (N, 4)
  2. boxes.xywh # xywh 形式的目标框, (N, 4)
  3. boxes.xyxyn # xyxy 形式的目标框且归一化, (N, 4)
  4. boxes.xywhn # xywh 形式的目标框且归一化, (N, 4)
  5. boxes.conf # 置信度的分数, (N, 1)
  6. boxes.cls # 类别, (N, 1)
  7. boxes.data # 原始目标框参数坐标 (x, y, w, h)、置信度以及类别, (N, 6) or boxes.boxes
Masks

Masks可以被索引、操作修改、将Masks转换为分割结果。也可以缓存段转换操作。

  1. results = model(inputs)
  2. masks = results[0].masks # Masks object
  3. masks.xy # x, y segments (pixels), List[segment] * N
  4. masks.xyn # x, y segments (normalized), List[segment] * N
  5. masks.data # raw masks tensor, (N, H, W) or masks.masks
Probs 置信度

包含了所有类别的置信度

  1. results = model(inputs)
  2. results[0].probs # cls prob, (num_class, )

更多文档可以参考 https://docs.ultralytics.com/reference/yolo/engine/results/

绘制结果

yolov8提供了plot函数绘制结果,可以绘制边框,分割结果,分类结果类别等等。不在需要像yolov5那样直接写后处理nms等,很方便。

  1. res = model(img)
  2. res_plotted = res[0].plot()
  3. cv2.imshow("result", res_plotted)
ArgumentDescription
conf (bool)是否绘制检测置信度得分。
line_width (int, optional)边界框的线宽。如果为None,则根据图像大小进行缩放。
font_size (float, optional)文本的字体大小。如果为None,则根据图像大小进行缩放。
font (str)用于文本的字体。
pil (bool)是否使用PIL库进行图像绘制。
example (str)要显示的示例字符串。用于指示输出的期望格式。
img (numpy.ndarray)绘制到另一个图像上。如果为None,则绘制到原始图像上。
labels (bool)是否绘制边界框的标签。
boxes (bool)是否绘制边界框。
masks (bool)是否绘制掩膜。
probs (bool)是否绘制分类概率。
视频流数据源

以下是使用OpenCV和YOLOv8在视频帧上运行推理的代码。

  1. import cv2
  2. from ultralytics import YOLO
  3. # Load the YOLOv8 model
  4. model = YOLO('yolov8n.pt')
  5. # Open the video file
  6. video_path = "path/to/your/video/file.mp4"
  7. cap = cv2.VideoCapture(video_path)
  8. # Loop through the video frames
  9. while cap.isOpened():
  10. # Read a frame from the video
  11. success, frame = cap.read()
  12. if success:
  13. # Run YOLOv8 inference on the frame
  14. results = model(frame)
  15. # Visualize the results on the frame
  16. annotated_frame = results[0].plot()
  17. # Display the annotated frame
  18. cv2.imshow("YOLOv8 Inference", annotated_frame)
  19. # Break the loop if 'q' is pressed
  20. if cv2.waitKey(1) & 0xFF == ord("q"):
  21. break
  22. else:
  23. # Break the loop if the end of the video is reached
  24. break
  25. # Release the video capture object and close the display window
  26. cap.release()
  27. cv2.destroyAllWindows()

请添加图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/77902
推荐阅读
相关标签
  

闽ICP备14008679号