> 技术文档 > 【详细教程】如何使用YOLOv11进行图像与视频的目标检测_yolov11 obb检测

【详细教程】如何使用YOLOv11进行图像与视频的目标检测_yolov11 obb检测

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称 项目名称 1.【人脸识别与管理系统开发】 2.【车牌识别与自动收费管理系统开发】 3.【手势识别系统开发】 4.【人脸面部活体检测系统开发】 5.【图片风格快速迁移软件开发】 6.【人脸表表情识别系统】 7.【YOLOv8多目标识别与自动标注软件开发】 8.【基于YOLOv8深度学习的行人跌倒检测系统】 9.【基于YOLOv8深度学习的PCB板缺陷检测系统】 10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】 11.【基于YOLOv8深度学习的安全帽目标检测系统】 12.【基于YOLOv8深度学习的120种犬类检测与识别系统】 13.【基于YOLOv8深度学习的路面坑洞检测系统】 14.【基于YOLOv8深度学习的火焰烟雾检测系统】 15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】 16.【基于YOLOv8深度学习的舰船目标分类检测系统】 17.【基于YOLOv8深度学习的西红柿成熟度检测系统】 18.【基于YOLOv8深度学习的血细胞检测与计数系统】 19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】 20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】 21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】 22.【基于YOLOv8深度学习的路面标志线检测与识别系统】 23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】 24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】 25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】 26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】 27.【基于YOLOv8深度学习的人脸面部表情识别系统】 28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】 29.【基于YOLOv8深度学习的智能肺炎诊断系统】 30.【基于YOLOv8深度学习的葡萄簇目标检测系统】 31.【基于YOLOv8深度学习的100种中草药智能识别系统】 32.【基于YOLOv8深度学习的102种花卉智能识别系统】 33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】 34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】 35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】 36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】 37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】 38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】 39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】 40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】 41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】 42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】 43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】 44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】 45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】 46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】 47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】 48.【基于深度学习的车辆检测追踪与流量计数系统】 49.【基于深度学习的行人检测追踪与双向流量计数系统】 50.【基于深度学习的反光衣检测与预警系统】 51.【基于深度学习的危险区域人员闯入检测与报警系统】 52.【基于深度学习的高密度人脸智能检测与统计系统】 53.【基于深度学习的CT扫描图像肾结石智能检测系统】 54.【基于深度学习的水果智能检测系统】 55.【基于深度学习的水果质量好坏智能检测系统】 56.【基于深度学习的蔬菜目标检测与识别系统】 57.【基于深度学习的非机动车驾驶员头盔检测系统】 58.【基于深度学习的太阳能电池板检测与分析系统】 59.【基于深度学习的工业螺栓螺母检测】 60.【基于深度学习的金属焊缝缺陷检测系统】 61.【基于深度学习的链条缺陷检测与识别系统】 62.【基于深度学习的交通信号灯检测识别】 63.【基于深度学习的草莓成熟度检测与识别系统】 64.【基于深度学习的水下海生物检测识别系统】 65.【基于深度学习的道路交通事故检测识别系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

  • 如何使用YOLOv11进行目标检测
  • 介绍
  • YOLOv11关键创新
  • 如何将YOLOv 11用于图像检测
    • 步骤1:安装必要的库
    • 步骤2:导入库
    • 步骤3:选择模型型号
    • 步骤4:编写一个函数来预测和检测图像中的对象
    • 步骤5:使用YOLOv11检测图像中的对象
    • 步骤6:保存并绘制结果图像
    • 完整代码:
  • 如何将YOLOv11用于视频检测
    • 步骤1:安装必要的库
    • 步骤2和3:导入库与模型
    • 步骤4:创建Videowriter以保存视频的结果
    • 步骤5:使用YOLOv 11检测视频中的对象
    • 完整代码
  • 结论

如何使用YOLOv11进行目标检测

【详细教程】如何使用YOLOv11进行图像与视频的目标检测_yolov11 obb检测

介绍

继YOLOv 8、YOLOv 9和YOLOv10之后,最近刚发布了最新的YOLOv11!这一新的迭代不仅建立在其版本的优势之上,而且还引入了几个突破性的增强功能,为目标检测和计算机视觉设定了新的基准。

与以前的版本一样,YOLOv 11擅长检测、分类和定位图像和视频中的对象。然而,它更进一步,通过整合显著的增强功能,提高了跨多个用例的性能和适应性。让我们来看看使YOLOv 11在该系列中脱颖而出的关键增强功能。

YOLOv11关键创新

  1. 增强的特征提取
    YOLOv11使用改进的主干和颈部架构,显著提高了特征提取能力。这导致更准确的物体检测和更轻松地处理复杂视觉任务的能力。
  2. 针对效率和速度进行了优化
    凭借精致的架构设计和优化的训练管道,YOLOv11在保持高精度的同时提供更快的处理速度。这种平衡确保了YOLOv11是实时和大规模应用的理想选择。
  3. 更高的精度,更少的参数
    YOLOv11m是YOLOv11的一个中等大小的变体,在COCO数据集上实现了更高的平均精度(mAP),同时使用的参数比YOLOv8m少22%。这种改进使其在不影响性能的情况下提高了计算效率。
  4. 跨环境的适应性
    无论是部署在边缘设备、云平台还是由NVIDIA GPU驱动的系统上,YOLOv11都能为各种部署场景提供最大的灵活性。
  5. 广泛的支持任务
    YOLOv 11将其功能扩展到传统的对象检测之外,以支持实例分割,图像分类,姿态估计和面向对象检测(OBB)。这种多功能性使其成为应对各种计算机视觉挑战的强大工具。

这些增强功能的集成使YOLOv 11成为尖端计算机视觉应用的强大引擎。请继续关注,我们将探索YOLOv 11如何突破这个动态领域的可能界限!

如何将YOLOv 11用于图像检测

步骤1:安装必要的库

pip install opencv-python ultralytics

步骤2:导入库

import cv2from ultralytics import YOLO

步骤3:选择模型型号

model = YOLO(\"yolo11x.pt\")

在这个网站上,您可以比较不同的模型,并权衡各自的优点和缺点。在这种情况下,我们选择yolov11x.pt。

步骤4:编写一个函数来预测和检测图像中的对象

def predict(chosen_model, img, classes=[], conf=0.5): if classes: results = chosen_model.predict(img, classes=classes, conf=conf) else: results = chosen_model.predict(img, conf=conf) return resultsdef predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1): results = predict(chosen_model, img, classes, conf=conf) for result in results: for box in result.boxes: cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])), (int(box.xyxy[0][2]), int(box.xyxy[0][3])), (255, 0, 0), rectangle_thickness) cv2.putText(img, f\"{result.names[int(box.cls[0])]}\", (int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), text_thickness) return img, results

步骤5:使用YOLOv11检测图像中的对象

# read the imageimage = cv2.imread(\"YourImagePath\")result_img, _ = predict_and_detect(model, image, conf=0.5)

步骤6:保存并绘制结果图像

cv2.imshow(\"Image\", result_img)cv2.imwrite(\"YourSavePath\", result_img)cv2.waitKey(0)

完整代码:

from ultralytics import YOLOimport cv2def predict(chosen_model, img, classes=[], conf=0.5): if classes: results = chosen_model.predict(img, classes=classes, conf=conf) else: results = chosen_model.predict(img, conf=conf) return resultsdef predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1): results = predict(chosen_model, img, classes, conf=conf) for result in results: for box in result.boxes: cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])), (int(box.xyxy[0][2]), int(box.xyxy[0][3])), (255, 0, 0), rectangle_thickness) cv2.putText(img, f\"{result.names[int(box.cls[0])]}\", (int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), text_thickness) return img, resultsmodel = YOLO(\"yolo11x.pt\")# read the imageimage = cv2.imread(\"YourImagePath.png\")result_img, _ = predict_and_detect(model, image, classes=[], conf=0.5)cv2.imshow(\"Image\", result_img)cv2.imwrite(\"YourSavePath.png\", result_img)cv2.waitKey(0)

如何将YOLOv11用于视频检测

步骤1:安装必要的库

pip install opencv-python ultralytics

步骤2和3:导入库与模型

import cv2from ultralytics import YOLOmodel = YOLO(\"yolo11x.pt\")

步骤4:创建Videowriter以保存视频的结果

# defining function for creating a writer (for mp4 videos)def create_video_writer(video_cap, output_filename): # grab the width, height, and fps of the frames in the video stream. frame_width = int(video_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height = int(video_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = int(video_cap.get(cv2.CAP_PROP_FPS)) # initialize the FourCC and a video writer object fourcc = cv2.VideoWriter_fourcc(*\'MP4V\') writer = cv2.VideoWriter(output_filename, fourcc, fps, (frame_width, frame_height)) return writer

步骤5:使用YOLOv 11检测视频中的对象

output_filename = \"YourFilename.mp4\"video_path = r\"YourVideoPath.mp4\"cap = cv2.VideoCapture(video_path)writer = create_video_writer(cap, output_filename)while True: success, img = cap.read() if not success: break result_img, _ = predict_and_detect(model, img, classes=[], conf=0.5) writer.write(result_img) cv2.imshow(\"Image\", result_img) cv2.waitKey(1)writer.release()

完整代码

import cv2from ultralytics import YOLOdef predict(chosen_model, img, classes=[], conf=0.5): if classes: results = chosen_model.predict(img, classes=classes, conf=conf) else: results = chosen_model.predict(img, conf=conf) return resultsdef predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1): results = predict(chosen_model, img, classes, conf=conf) for result in results: for box in result.boxes: cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])), (int(box.xyxy[0][2]), int(box.xyxy[0][3])), (255, 0, 0), rectangle_thickness) cv2.putText(img, f\"{result.names[int(box.cls[0])]}\", (int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), text_thickness) return img, results# defining function for creating a writer (for mp4 videos)def create_video_writer(video_cap, output_filename): # grab the width, height, and fps of the frames in the video stream. frame_width = int(video_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height = int(video_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = int(video_cap.get(cv2.CAP_PROP_FPS)) # initialize the FourCC and a video writer object fourcc = cv2.VideoWriter_fourcc(*\'MP4V\') writer = cv2.VideoWriter(output_filename, fourcc, fps, (frame_width, frame_height)) return writermodel = YOLO(\"yolo11x.pt\")output_filename = \"YourFilename.mp4\"video_path = r\"YourVideoPath.mp4\"cap = cv2.VideoCapture(video_path)writer = create_video_writer(cap, output_filename)while True: success, img = cap.read() if not success: break result_img, _ = predict_and_detect(model, img, classes=[], conf=0.5) writer.write(result_img) cv2.imshow(\"Image\", result_img) cv2.waitKey(1)writer.release()

结论

在本教程中,我们学习了如何使用YOLOv 11检测图像和视频中的对象。如果你觉得这段代码很有帮助,感谢点赞关注!


关注文末名片G-Z-H:【阿旭算法与机器学习】,发送【开源】可获取更多学习资源

【详细教程】如何使用YOLOv11进行图像与视频的目标检测_yolov11 obb检测

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

英文建站知识教程