专栏名称: 小白学视觉
本公众号主要介绍机器视觉基础知识和新闻,以及在学习机器视觉时遇到的各种纠结和坑的心路历程。
目录
相关文章推荐
看看新闻Knews  ·  2000万粉丝小网红被绊倒大哭,母亲回应摆拍 ... ·  23 小时前  
看看新闻Knews  ·  2000万粉丝小网红被绊倒大哭,母亲回应摆拍 ... ·  23 小时前  
深圳市中级人民法院  ·  酒后身亡,谁之过? ·  昨天  
深圳市中级人民法院  ·  酒后身亡,谁之过? ·  昨天  
荆门社区网  ·  新年第一波单身女生资料曝光!速来围观... ·  昨天  
黄昏即景  ·  2.12 ·  2 天前  
黄昏即景  ·  2.12 ·  2 天前  
现代快报  ·  黄晓明发声 ·  3 天前  
现代快报  ·  黄晓明发声 ·  3 天前  
51好读  ›  专栏  ›  小白学视觉

YOLO11 实例分割模型做行人分割

小白学视觉  · 公众号  ·  · 2025-02-12 18:34

正文

点击上方 小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达 
本文教程将一起学习如何利用 YOLO11 分割模型在图像中准确隔离和识别人物。
YOLO11 实例分割模型在 Unsplash 图片上的结果
引言
实例分割是检测和隔离图像中单个对象的关键技术,YOLO11 是执行这项任务的最佳模型之一。 在本文中,你将学习如何使用 YOLO11 分割模型有效地在图像中分割人物。 我们将涵盖从设置 Python 环境和安装必要的库,到下载测试图像和可视化分割结果的所有内容。 通过本教程的学习,你将清楚地了解如何应用 YOLO11 进行准确的人物分割。
1. 创建 Python 环境
我们首先将设置一个 Python 虚拟环境来管理依赖项。 打开你的终端并运行:
python -m venv env
激活虚拟环境
然后我们需要激活我们的虚拟环境。根据你的机器,你可能需要使用不同的命令。这里我展示了在 Windows 和 Mac/Linux 上的两种方式。 Windows:
.\env\Scripts\activate
Mac/Linux:
source env/bin/activate
2. 安装 Ultralytics 库
在我们的虚拟环境激活后,我们需要安装 ultralytics 库,这将允许我们使用 YOLO11 实例分割模型。 运行以下命令在你的环境中安装库:
pip install ultralytics
3. 下载测试图像
现在让我们从 Unsplash 下载一张测试图像,你可以使用你选择的任何图像。我为我们的测试目的选择了以下图像:
在 .py 文件中,添加以下代码来下载图像:
import cv2import urllib.request
url, filename = ("https://images.unsplash.com/photo-1484353371297-d8cfd2895020?w=600&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTUwfHxwZW9wbGV8ZW58MHx8MHx8fDA%3D", "scene.jpg")urllib.request.urlretrieve(url, filename) # Download the image
# Load the input image using OpenCVimage = cv2.imread(filename)
4. 加载模型并生成推理结果
下一步是加载我们的分割模型并在测试图像上运行推理。在本教程中,我们将使用 yolo11n-seg.pt 模型,但你可以使用 Ultralytics YOLO11 文档中的任何你喜欢的模型。 一旦我们的模型加载完毕,我们使用 results = model(filename) 在测试图像上运行推理,然后创建一个空的分割掩码。
from ultralytics import YOLOimport numpy as np
# Load the modelmodel = YOLO("yolo11n-seg.pt") # load an official YOLO model
# Predict with the modelresults = model(filename) # predict on an image
# Create an empty mask for segmentationsegmentation_mask = np.zeros_like(image, dtype=np.uint8)
5. 可视化人物分割掩码
最后一步是可视化我们的模型生成的分割掩码。YOLO11 模型支持同时分割多个类别,如人物、自行车和汽车等。 由于我们只对人物类别感兴趣,类别标签为 0,我们只可视化具有此类别的掩码。 在下面的代码中,我们遍历结果并过滤人物掩码。 然后我们将掩码叠加在图像上进行清晰的可视化,然后使用 matplotlib 保存并显示结果。
# Iterate over the resultsfor i, r in enumerate(results):    # Iterate through the detected masks    for j, mask in enumerate(r.masks.xy):        # Convert the class tensor to an integer        class_id = int(r.boxes.cls[j].item())  # Extract the class ID as an integer                # Check if the detected class corresponds to 'person' (class ID 0)        if class_id == 0:            # Convert mask coordinates to an integer format for drawing            mask = np.array(mask, dtype=np.int32)                        # Fill the segmentation mask with color            cv2.fillPoly(segmentation_mask, [mask], (0, 255, 0))
# Combine the original image with the segmentation masksegmentation_result = cv2.addWeighted(image, 1, segmentation_mask, 0.7, 0)
# Save the output image with segmentationcv2.imwrite("output_segmentation.jpg", segmentation_result)
# Optionally display the image (make sure you're running in a GUI environment)cv2.imshow("Segmentation Result", segmentation_result)cv2.waitKey(0)cv2.destroyAllWindows()
如果所有代码都运行良好,你应该得到与下面类似的输出。这显然会有所不同,如果你使用了不同的测试图像。
分割结果
完整代码:https://github.com/Brianhulela/yolo11_segmentation
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。






请到「今天看啥」查看全文


推荐文章
深圳市中级人民法院  ·  酒后身亡,谁之过?
昨天
深圳市中级人民法院  ·  酒后身亡,谁之过?
昨天
黄昏即景  ·  2.12
2 天前
黄昏即景  ·  2.12
2 天前
现代快报  ·  黄晓明发声
3 天前
现代快报  ·  黄晓明发声
3 天前
米尔看天下  ·  中国战机研发哪家强?沈霍伊PK成洛马
8 年前
销售与市场  ·  你为什么没成功?
8 年前