0

0

标题:YOLOv8 中仅显示分割掩码与标签(去除边界框)的完整实现教程

碧海醫心

碧海醫心

发布时间:2026-01-02 13:05:41

|

308人浏览过

|

来源于php中文网

原创

标题:YOLOv8 中仅显示分割掩码与标签(去除边界框)的完整实现教程

本文详解如何在 yolov8(ultralytics v8.0.132)中保存或可视化实例分割结果时,**移除边界框(boxes)但保留类别标签和置信度文本**,并提供可直接运行的自定义绘图方案。

YOLOv8 的 predict() 方法虽支持 boxes=False 来禁用边界框绘制,但官方渲染器(尤其是 segment 模式)在 boxes=False 时会连带屏蔽所有标签(labels)和置信度(conf)文本——这是由底层 Annotator 类的设计逻辑决定的:标签文本默认锚定在边界框左上角,一旦框被禁用,文本渲染即被跳过。因此,单纯依赖 show_labels=True 或 probs=True 参数组合会触发配置校验错误(如 SyntaxError: unrecognized arguments),因为这些参数在无框模式下不被 SegmentPredictor 支持。

✅ 正确解法是:绕过内置 save=True 渲染,手动提取预测结果(掩码、类别、置信度),使用 OpenCV + PIL 自定义叠加。以下是经过验证、结构清晰、开箱即用的实现方案:

零沫AI工具导航
零沫AI工具导航

零沫AI工具导航-AI导航新标杆,探索全球实用AI工具

下载

✅ 完整可运行代码(适配 YOLOv8 分割任务)

import numpy as np
import cv2
import matplotlib.pyplot as plt
from PIL import Image
from torchvision.transforms import functional as F
from ultralytics import YOLO

# 1. 加载模型与预测
model = YOLO("path/to/best.pt")  # 替换为你的模型路径
results = model.predict("path/to/image.png", conf=0.3, save=False)  # ⚠️ 关键:save=False,避免默认渲染

# 2. 提取首张图像结果(batch size=1)
r = results[0]
if not hasattr(r, 'masks') or r.masks is None:
    print("⚠️ 未检测到分割掩码,请检查模型是否为 segmentation 类型(.pt 文件需支持 masks)")
    exit()

# 3. 加载原始图像(RGB)
img_pil = Image.open("path/to/image.png").convert("RGB")
img_np = np.array(img_pil)  # 形状: (H, W, 3)
annotated = img_np.copy()

# 4. 遍历每个掩码实例并绘制
for i, (mask_tensor, box) in enumerate(zip(r.masks.data, r.boxes)):
    # ▶️ 步骤 1:上采样掩码至原图尺寸(保持二值性)
    h, w = img_np.shape[:2]
    mask_resized = F.resize(mask_tensor.unsqueeze(0), (h, w), antialias=True).squeeze(0)
    mask_binary = (mask_resized > 0.5).cpu().numpy()  # 转为布尔 NumPy 掩码

    # ▶️ 步骤 2:应用半透明彩色覆盖(可选:更换颜色)
    color = np.array([0, 128, 255])  # BGR 格式(OpenCV 使用)→ 这里是蓝绿色
    annotated[mask_binary] = (annotated[mask_binary] * 0.5 + color * 0.5).astype(np.uint8)

    # ▶️ 步骤 3:提取标签与置信度
    cls_id = int(box.cls.item())
    conf = float(box.conf.item())
    label = f"{r.names[cls_id]}: {conf:.2f}"

    # ▶️ 步骤 4:定位文本位置(使用边界框左上角,更鲁棒;也可改用掩码质心)
    xyxy = box.xyxy.cpu().numpy()[0]
    x1, y1 = int(xyxy[0]), int(xyxy[1])
    # 防止文字超出图像边界
    x1 = max(10, min(x1, w - 150))
    y1 = max(25, min(y1, h - 10))

    # ▶️ 步骤 5:用 OpenCV 绘制白色粗体文本
    cv2.putText(
        annotated,
        label,
        (x1, y1),
        cv2.FONT_HERSHEY_SIMPLEX,
        0.7,
        (255, 255, 255),  # 白色文字
        2,
        cv2.LINE_AA
    )

# 5. 可视化结果
plt.figure(figsize=(10, 8))
plt.imshow(annotated)
plt.axis('off')
plt.title("YOLOv8 Segmentation — Masks + Labels (No Boxes)", fontsize=14, pad=15)
plt.show()

# ✅ 可选:保存结果图
Image.fromarray(annotated).save("output_no_boxes_with_labels.png")
print("✅ 已保存:output_no_boxes_with_labels.png")

? 关键说明与注意事项

  • 模型要求:确保你使用的是 YOLOv8-seg 模型(训练时指定 task=segment,导出 .pt 文件包含 masks 层)。分类(classify)或检测(detect)模型无法输出 r.masks。
  • 掩码缩放:torchvision.transforms.functional.resize 是推荐方式(支持 antialias=True),比双线性插值更保真;避免使用 cv2.resize 直接缩放浮点掩码。
  • 颜色策略:示例中使用固定色叠加(半透明),你可按 cls_id 动态分配颜色(如 plt.cm.tab10(cls_id % 10)),增强可区分性。
  • 文本定位优化:当前使用 box.xyxy 左上角,若需更精准(如贴合掩码顶部),可用 cv2.findContours + cv2.boundingRect 计算掩码最小外接矩形。
  • 性能提示:对高分辨率图像,可先缩放输入再预测(imgsz=640),或对掩码做 cv2.dilate 膨胀后绘制,提升视觉清晰度。

✅ 总结

YOLOv8 官方 API 尚未开放“仅隐藏框、保留标签”的细粒度控制选项(尤其在分割模式下)。因此,手动后处理是当前最稳定、最灵活的解决方案。本教程提供的代码已通过 Ultralytics v8.0.132 实测,兼容 Jupyter Notebook 与脚本环境,支持多类别、多实例、任意分辨率图像,并兼顾可读性与扩展性。如未来版本支持 show_boxes=False 下的独立 show_labels 开关,只需升级库并切换参数即可无缝迁移。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

1

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

41

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

171

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

50

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

91

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

226

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

529

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
誉天教育RHCE视频教程
誉天教育RHCE视频教程

共9课时 | 1.5万人学习

尚观Linux RHCE视频教程(二)
尚观Linux RHCE视频教程(二)

共34课时 | 6万人学习

尚观RHCE视频教程(一)
尚观RHCE视频教程(一)

共28课时 | 4.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号